Hoppa till huvudinnehåll

Net::Whois - Scraper kontrollerar domändata via RDAP och WHOIS

Översikt av scrapern

Översikt av scrapern

Domändata samlas in via RDAP (HTTP, JSON), WHOIS (port 43) eller operatörens webbsida – beroende på domänzon. För varje TLD finns RDAP- och WHOIS-servrar definierade i scrapern; om RDAP är tillgängligt för zonen görs begäran i första hand via det, vid fel används WHOIS, och om inget av dessa finns används webben, förutsatt att en sida finns tillgänglig.

Uppsättningen av kontrollmetoder beror på operatören, inte bara på TLD. Vissa zoner saknar WHOIS eller RDAP, eller så fungerar de inte – detta är operatörens beslut. En webbsida för kontroll finns inte heller för alla: dess tillgänglighet bestäms också av operatören. Om en sida finns, begär scrapern data via den.

Det finns zoner där operatören endast äger TLD, medan webbplatser registreras på SLD (andra nivån, till exempel co.uk, org.uk). Ägaren till en SLD kan vara en eller flera – men det är inte TLD-operatören. Uppsättningen av kontrollmetoder bestäms då av SLD-ägaren: WHOIS, RDAP, webbsida, en kombination av dessa – eller inget alls.

Uppsättningen av fält i WHOIS och RDAP kan också variera – på grund av lagstiftning, operatörspolicy och begränsningar för personuppgifter. Men den generella uppsättningen är förutsägbar: registrering, datum, NS, registrar, status.

Vid insamling via webben finns ingen standardisering. Det kontrolleras alltid om domänen är registrerad eller inte. Resten beror på vad operatören har publicerat på sidan: det kan vara en nästan komplett uppsättning data, eller bara det faktum att den är registrerad.

Mer information: RDAP (eng.), WHOIS.

Funktionaliteten i A-Parser gör det möjligt att spara inställningar för dataskrapning för framtida bruk (förinställningar), schemalägga dataskrapning och mycket mer. Du kan använda automatisk multiplikation av frågor, infogning av underfrågor från filer, generering av alfanumeriska kombinationer och listor för att få största möjliga mängd resultat.

Resultaten kan sparas i precis det format och den struktur du behöver, tack vare den inbyggda kraftfulla mallmotorn Template Toolkit som gör det möjligt att tillämpa extra logik på resultaten och exportera data i olika format, inklusive JSON, SQL och CSV.

Användningsfall för scrapern

Insamlade data

Listan nedan är en typisk uppsättning för WHOIS/RDAP; specifika fält beror på serverns svar och lagstiftning. Vid insamling via webben garanteras endast registreringsstatus; övriga fält fylls i endast om operatören publicerar dem.

  • $registered — om domänen är registrerad eller inte
  • $expire_date — utgångsdatum för domänregistreringen
  • $creation_date — när domänen registrerades
  • $free_date — datum då domänen blir ledig
  • $whoisserver — använd WHOIS-server (vid WHOIS-förfrågan; ofta tom vid RDAP)
  • $rdapserver — URL för RDAP-servern (vid framgångsrik RDAP-förfrågan)
  • $registrar — domänregistrator
  • $updated_date — datum för senaste uppdatering av posten
  • $data — råsvar: WHOIS-text eller RDAP-JSON
  • Array $ns (Namnservrar):
    • $ns.$i.server — namn på NS-servern
  • Array $statuses (Statuslista):
    • $statuses.$i.status — domänstatus

Funktioner

  • Automatiskt val av RDAP eller WHOIS baserat på domänzon (RDAP prioriteras)
  • Om en zon saknar fungerande WHOIS/RDAP men har en webbsida hos operatören — sker kontrollen via den
  • Innehållet i WHOIS/RDAP-fälten beror på serverns svar och lagstiftning
  • Vid insamling via webben kontrolleras alltid om domänen existerar; övriga fält endast om operatören tillhandahåller dem
  • Vissa zoner (TLD och SLD) saknar både WHOIS/RDAP och webbsida — WHOIS-data är inte tillgänglig, men domänens existens kontrolleras via Net::DNSNet::DNS
  • Stöd för internationella domäner (IDN, t.ex. яндекс.рф)

Användningsområden

  • Insamling av lediga domäner eller domäner som snart blir lediga
  • Insamling av listor över ns-servrar
  • Hämtning av domänstatusar

Frågor

Som frågor ska domänen för den sökta webbplatsen anges, till exempel:

a-parser.com  
yandex.ru
google.com
vk.com
facebook.com

Exempel på resultatutmatning

A-Parser stöder flexibel formatering av resultat tack vare den inbyggda mallmotorn Template Toolkit, vilket gör att den kan mata ut resultat i valfri form, samt i strukturerad form som CSV eller JSON

Standardutmatning

Resultatformat:

$query - registered: $registered, expire: $expire_date, creation: $creation_date

Resultatet visar domänen, om den är registrerad, utgångsdatum och registreringsdatum för domänen:

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

Utmatning av NS-lista

Resultatformat:

$ns.format('$server\n')

Exempel på resultat:

demi.ns.cloudflare.com
vern.ns.cloudflare.com

Utmatning av domäntider till CSV

Resultatformat:

[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]

Exempel på resultat (domän .com, svar via RDAP — whoisserver är tom, rdapserver är ifylld):

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"

Utmatning av NS-lista till CSV-tabell

Resultatformat:

[% FOREACH ns;
tools.CSVline(query, server);
END %]

Exempel på resultat:

a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com

Dumpa resultat till JSON

Allmänt resultatformat:

[% 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 %]

Starttext:

[

Sluttext:

]

Exempel på resultat (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"
}]
tips

För att alternativen "Prepend text" och "Append text" ska vara tillgängliga i Task Editor måste du aktivera "More options".

Bearbetning av resultat

A-Parser gör det möjligt att bearbeta resultat direkt under dataskrapningen. I det här avsnittet har vi listat de mest populära fallen för scrapern Net::Whois

Hämta domänregistrator

Vid svar via WHOIS innehåller fältet $p1.data text; vid RDAP — JSON. För att hämta registratorn i båda fallen, lägg till två Result Constructors.

Lägg till en Result Builders (Result Constructor) och välj källa i rullgardinslistan: $p1.data. Välj typ: RegEx Match. I fältet Regex skriv: Registrar:\s*(.+) och spara i variabeln registrarwhois.

Lägg till en till Result Builders (Result Constructor) och välj källa i rullgardinslistan: $p1.data. Välj typ: RegEx Match. I fältet Regex skriv: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" och spara i variabeln registrarrdap.

Lägg till i Result format (Result Format): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — om RDAP inte hittade namnet (registrarrdap är lika med none) visas värdet från WHOIS, annars från RDAP.

Ladda ner exempel

Hur man importerar ett exempel i 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

Möjliga inställningar

ParameterStandardvärdeBeskrivning
Recursive queryGör det möjligt att få en utökad version av WHOIS
WHOIS serverGör det möjligt att ange en egen WHOIS-server
RDAP serverGör det möjligt att ange en egen RDAP-server
Checking by DNSGör det möjligt att kontrollera om domänen är registrerad baserat på om det finns ett IP för domänen
Checking domains by DNS recordIP-kontroll, om den hittar status ALLOCATED definieras domänen som registrerad; om alternativet är inaktiverat sker ingen IP-kontroll alls
Force DNS check for not found domainsTvingad kontroll om domänen definierades som ej registrerad