Przejdź do treści głównej

Net::Whois - Scraper sprawdza dane o domenie przez RDAP i WHOIS

Przegląd scrapera

Przegląd scrapera

Dane o domenie są zbierane przez RDAP (HTTP, JSON) lub WHOIS (port 43) — 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, a w przypadku błędu — przez WHOIS.

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

Zbierane dane

  • Czy domena jest zarejestrowana, czy nie
  • Data wygaśnięcia rejestracji domeny
  • Kiedy domena została zarejestrowana
  • Data ostatniej aktualizacji wpisu
  • URL serwera RDAP — przy udanym zapytaniu RDAP
  • Używany serwer WHOIS — przy zapytaniu WHOIS; przy RDAP często pusty
  • Lista serwerów nazw (NS) domeny
  • Rejestrator domeny
  • Bieżący status domeny
  • Data zwolnienia domeny
  • Surowa odpowiedź — tekst WHOIS lub JSON RDAP

Możliwości

  • Automatyczny wybór RDAP lub WHOIS na podstawie strefy domenowej (priorytet RDAP)
  • 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"
}]
wskazówka

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

ParametrWartość domyślnaOpis
Recursive queryPozwala uzyskać rozszerzoną wersję WHOIS
WHOIS serverPozwala ustawić własny serwer WHOIS
RDAP serverPozwala ustawić własny serwer RDAP
Checking by DNSPozwala sprawdzać, czy domena jest zarejestrowana na podstawie istnienia IP dla domeny
Checking domains by DNS recordSprawdzanie 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 domainsWymuszone sprawdzenie, jeśli domena została określona jako niezarejestrowana