Net::Whois - Scraper sprawdza dane o domenie przez RDAP i WHOIS
Przegląd scrapera

Dane o domenie są zbierane przez RDAP (HTTP, JSON), WHOIS (port 43) lub stronę internetową operatora — w zależności od strefy domenowej. Dla każdego TLD w scraperze zdefiniowane są serwery RDAP i WHOIS; jeśli dla danej strefy dostępny jest RDAP, zapytanie jest wykonywane w pierwszej kolejności przez niego, w przypadku błędu — przez WHOIS, a jeśli nie ma żadnego z nich — przez stronę WWW, o ile taka istnieje.
Zestaw metod sprawdzania zależy od operatora, a nie tylko od TLD. Niektóre strefy nie posiadają WHOIS lub RDAP, bądź one nie działają — tak zdecydował operator. Strona internetowa do sprawdzania również nie jest dostępna dla wszystkich: jej obecność także określa operator. Jeśli strona istnieje, scraper pobiera dane za jej pośrednictwem.
Istnieją strefy, w których operator zarządza tylko TLD, a strony są rejestrowane na SLD (drugi poziom, na przykład co.uk, org.uk). Właścicielem SLD może być jeden lub kilku podmiotów — ale nie jest to operator TLD. Zestaw metod sprawdzania określa już właściciel SLD: WHOIS, RDAP, strona WWW, ich kombinacja — lub żadna z nich.
Skład pól w WHOIS i RDAP również może się różnić — ze względu na przepisy prawa, politykę operatora i ograniczenia dotyczące danych osobowych. Jednak zestaw danych jest ogólnie przewidywalny: rejestracja, daty, NS, rejestrator, status.
Przy zbieraniu danych przez WWW nie ma standaryzacji. Zawsze sprawdzane jest, czy domena jest zarejestrowana, czy nie. Reszta zależy od tego, co operator umieścił na stronie: może to być niemal pełny zestaw danych, a może tylko sam fakt rejestracji.
Więcej informacji: RDAP (ang.), WHOIS.
Funkcjonalność A-Parser pozwala zapisywać ustawienia scrapowania do późniejszego wykorzystania (presety), ustalać harmonogram scrapowania i wiele więcej. Możesz korzystać z automatycznego mnożenia zapytań, podstawiania podzapytań z plików, iteracji kombinacji alfanumerycznych oraz list, aby uzyskać maksymalną możliwą liczbę wyników.
Zapisywanie wyników jest możliwe w dowolnej formie i strukturze, dzięki wbudowanemu potężnemu silnikowi szablonów Template Toolkit, który pozwala stosować dodatkową logikę do wyników i wyprowadzać dane w różnych formatach, w tym JSON, SQL i CSV.
Przypadki użycia scrapera
🔗 Wybieranie dowolnych danych
Net::Whois wybieranie dowolnych danych
🔗 Parametry domen
Pobieranie parametrów domen
🔗 Powiadomienie o terminach domen
Otrzymywanie powiadomień w Telegram o wygaśnięciu rejestracji domen
🔗 Zbieranie bazy adresów e-mail
Preset pozwala zbierać adresy e-mail domen poprzez usługę Whois.
Zbierane dane
Poniższa lista to typowy zestaw dla WHOIS/RDAP; konkretne pola zależą od odpowiedzi serwera i przepisów prawa. Przy zbieraniu przez stronę WWW gwarantowane jest wypełnienie tylko faktu rejestracji; pozostałe pola — jeśli operator je publikuje.
$registered— czy domena jest zarejestrowana, czy nie$expire_date— data wygaśnięcia rejestracji domeny$creation_date— kiedy domena została zarejestrowana$free_date— data zwolnienia domeny$whoisserver— używany serwer WHOIS (przy zapytaniu WHOIS; przy RDAP często puste)$rdapserver— URL serwera RDAP (przy udanym zapytaniu RDAP)$registrar— rejestrator domeny$updated_date— data ostatniej aktualizacji wpisu$data— surowa odpowiedź: tekst WHOIS lub JSON RDAP- Tablica
$ns(Name servers):$ns.$i.server— nazwa serwera NS
- Tablica
$statuses(Statuses list):$statuses.$i.status— status domeny
Możliwości
- Automatyczny wybór RDAP lub WHOIS na podstawie strefy domenowej (priorytet RDAP)
- Jeśli strefa nie posiada działającego WHOIS/RDAP, ale ma stronę WWW operatora — sprawdzenie odbywa się przez nią
- Skład pól WHOIS/RDAP zależy od odpowiedzi serwera i ustawodawstwa
- Przy zbieraniu przez stronę WWW zawsze sprawdzane jest istnienie domeny; pozostałe pola — tylko jeśli operator je udostępnia
- Niektóre strefy (TLD i SLD) nie posiadają ani WHOIS/RDAP, ani strony internetowej — dane WHOIS są niedostępne, ale istnienie domeny jest sprawdzane przez
Net::DNS - Obsługa domen międzynarodowych (IDN, np. яндекс.рф)
Zastosowania
- Zbieranie wolnych domen lub tych, które wkrótce zostaną zwolnione
- Zbieranie listy serwerów NS
- Pobieranie statusów domen
Zapytania
Jako zapytania należy podawać domenę szukanej strony, na przykład:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
Opcje wyprowadzania wyników
A-Parser obsługuje elastyczne formatowanie wyników dzięki wbudowanemu silnikowi szablonów Template Toolkit, co pozwala na wyprowadzanie wyników w dowolnej formie, a także w formie strukturalnej, np. CSV lub JSON
Wynik domyślny
Format wyniku:
$query - registered: $registered, expire: $expire_date, creation: $creation_date
W wyniku wyświetlana jest domena, informacja czy jest zarejestrowana, data wygaśnięcia oraz data rejestracji domeny:
facebook.com - registered: 1, expire: 30.03.2028, creation: 29.03.1997
a-parser.com - registered: 1, expire: 25.02.2022, creation: 25.02.2012
vk.com - registered: 1, expire: 23.06.2021, creation: 24.06.1997
yandex.ru - registered: 1, expire: 01.10.2021, creation: 23.09.1997
google.com - registered: 1, expire: 14.09.2028, creation: 15.09.1997
Wyprowadzanie listy NS
Format wyniku:
$ns.format('$server\n')
Przykład wyniku:
demi.ns.cloudflare.com
vern.ns.cloudflare.com
Wyprowadzanie danych o terminach domeny do CSV
Format wyniku:
[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]
Przykład wyniku (domena .com, odpowiedź przez RDAP — whoisserver jest puste, rdapserver jest wypełnione):
a-parser.com,1,25.02.2027,25.02.2012,10.02.2026,none,,https://rdap.verisign.com/com/v1/domain/a-parser.com,"Squarespace Domains II LLC"
Wyprowadzanie listy NS do tabeli CSV
Format wyniku:
[% FOREACH ns;
tools.CSVline(query, server);
END %]
Przykład wyniku:
a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com
Zrzut wyników do JSON
Ogólny format wyniku:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.registered = p1.registered;
obj.expire_date = p1.expire_date;
obj.creation_date = p1.creation_date;
obj.updated_date = p1.updated_date;
obj.free_date = p1.free_date;
obj.whoisserver = p1.whoisserver;
obj.rdapserver = p1.rdapserver;
obj.registrar = p1.registrar;
obj.domains = [];
FOREACH item IN p1.ns;
obj.domains.push({
server = item.server
});
END;
obj.json %]
Tekst początkowy:
[
Tekst końcowy:
]
Przykład wyniku (RDAP):
[{
"registered": 1,
"rdapserver":"https://rdap.verisign.com/com/v1/domain/a-parser.com",
"query":"a-parser.com",
"free_date":"none",
"domains":[
{
"server":"demi.ns.cloudflare.com"
},
{
"server":"vern.ns.cloudflare.com"
}
],
"registrar":"Squarespace Domains II LLC",
"expire_date":"25.02.2027",
"creation_date":"25.02.2012",
"whoisserver":"",
"updated_date":"10.02.2026"
}]
Aby opcje "Prepend text" i "Append text" były dostępne w Edytorze zadań, należy aktywować "More options".
Przetwarzanie wyników
A-Parser pozwala przetwarzać wyniki bezpośrednio podczas scrapowania, w tej sekcji przedstawiliśmy najpopularniejsze przypadki dla scrapera Net::Whois
Pobieranie rejestratora domeny
Przy odpowiedzi przez WHOIS pole $p1.data zawiera tekst; przy RDAP — JSON. Aby uzyskać rejestratora w obu przypadkach, dodaj dwa Konstruktory wyników.
Dodać Result Builders (Konstruktor wyników) i w rozwijanej liście wybrać źródło: $p1.data. Wybrać typ: RegEx Match. W polu wyrażenia regularnego wpisać: Registrar:\s*(.+) i zapisać w zmiennej registrarwhois.
Dodać ponownie Result Builders (Konstruktor wyników) i w rozwijanej liście wybrać źródło: $p1.data. Wybrać typ: RegEx Match. W polu wyrażenia regularnego wpisać: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" i zapisać w zmiennej registrarrdap.
Dodać do Result format (Formatu wyniku): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — jeśli RDAP nie znalazł nazwy (registrarrdap równa się none), wyświetlana jest wartość z WHOIS, w przeciwnym razie z RDAP.
Pobierz przykład
Jak zaimportować przykład do A-Parser
eJyVVNtO20AQ/RVrFEQoJioPfbGEqkATiSpNKAH1wU6lVTxJt6x3ze46EEX5987Y
jh1TpKpP9lzPmdvuYIPWSaMhugzBC/fk7iw69A6ieAd5+Q8RWFxL562wEEIurKMg
cohhij6Kfvwy0pEhxZUolIdwB36bI4UZym5limSUKckrYzPhKWnpBhuhCnaLT4Lb
cdBg2FTkwdVVcKqNxtPgZNF7LtBug4ug1/i8MCbFjSbz0fsenIUdpl/InmjYLxYh
VNBuXPIg5F5+OaiLbIxzscEHw2ylwlY9JmkqMubbS4VHtg6qgvpnA//KGUSaSk/d
FKpC4Ca1qI9aPnO9K6EchsCUJbqxNRnl9FhmKOs40IuhqgsoR1EGf69imhyOuI4F
MUnfWqRHK7yxs5wJkX4HRg+VmuAGleuQ2F4XUqU00uGKgm7rwPddZn/l2Df1HUPR
4F8scWiylNL17FsblZqJWTd2JTPpSeFuTKGp9o8hPCHmh57B1FB3MmOxQakDa3Ba
2xw1L1k7smHeqjpVdMZypNyBM4VdEl5M+DRlwa2vl5k2C1/L5PyN4P6waVGSuA/9
wfnZwfhQBZDoDU+xu7Ww2If/BZQAak97hS6BmLCSZL44/5zAZilsOrRWbLv6le7K
vFpdTT/+mQD9nSXwT858R0SZ6C2NXsn1rL7pQxML/UDPxkzfmCxXyBPXhVK0sA7v
28sZunpBWWhn9zb4poQgHs1bQnSMcl/nFbfcSmL3iTlntGPHqHXKpVDq8X5ybOFA
500+0yNr3yx2eTIgLqpHbbCkW2wvs6TKRS7p3teGDpEk7kT9BDZP5Y7W+be7q7Qc
Vur2fwBx19yZ
Możliwe ustawienia
| Parametr | Wartość domyślna | Opis |
|---|---|---|
| Recursive query | ☐ | Pozwala uzyskać rozszerzoną wersję WHOIS |
| WHOIS server | Pozwala ustawić własny serwer WHOIS | |
| RDAP server | Pozwala ustawić własny serwer RDAP | |
| Checking by DNS | ☑ | Pozwala sprawdzać, czy domena jest zarejestrowana na podstawie istnienia IP dla domeny |
| Checking domains by DNS record | ☑ | Sprawdzanie IP; jeśli znajdzie status ALLOCATED, uznaje domenę za zarejestrowaną. Jeśli opcja jest wyłączona, sprawdzanie IP w ogóle się nie odbywa |
| Force DNS check for not found domains | ☑ | Wymuszone sprawdzenie, jeśli domena została określona jako niezarejestrowana |