Ga naar de hoofdinhoud

Net::Whois - Scraper controleert domeingegevens via RDAP en WHOIS

Overzicht van de scraper

Overzicht van de scraper

Domeingegevens worden verzameld via RDAP (HTTP, JSON), WHOIS (poort 43) of de webpagina van de operator — afhankelijk van de domeinzone. Voor elke TLD zijn in de scraper RDAP- en WHOIS-servers ingesteld; als RDAP beschikbaar is voor een zone, wordt de aanvraag in de eerste plaats via RDAP uitgevoerd, bij een fout via WHOIS, en als beide niet beschikbaar zijn via het web, indien er een pagina aanwezig is.

De set controlemethoden hangt af van de operator en niet alleen van de TLD. Sommige zones hebben geen WHOIS of RDAP, of deze werken niet — dit is een beslissing van de operator. Ook heeft niet elke zone een webpagina voor controles: de aanwezigheid daarvan wordt eveneens bepaald door de operator. Als er een pagina is, vraagt de scraper de gegevens via die pagina op.

Er zijn zones waar de operator alleen de TLD beheert, terwijl sites worden geregistreerd op de SLD (tweede niveau, bijvoorbeeld co.uk, org.uk). De eigenaar van een SLD kan één of meer partijen zijn — maar dit is niet de operator van de TLD. De set controlemethoden wordt in dat geval bepaald door de eigenaar van de SLD: WHOIS, RDAP, een webpagina, een combinatie daarvan — of niets van dit alles.

De samenstelling van velden in WHOIS en RDAP kan ook verschillen — vanwege wetgeving, het beleid van de operator en beperkingen op persoonsgegevens. De set is echter over het algemeen voorspelbaar: registratie, data, NS, registrar, status.

Bij verzameling via het web is er geen standaardisatie. Er wordt altijd gecontroleerd of het domein geregistreerd is of niet. De rest hangt af van wat de operator op de pagina toont: dit kan een bijna volledige set zijn, of alleen het feit van registratie.

Meer informatie: RDAP (Engels), WHOIS.

De functionaliteit van A-Parser maakt het mogelijk om instellingen voor gegevensextractie op te slaan voor toekomstig gebruik (presets), schema's voor gegevensextractie in te stellen en nog veel meer. U kunt automatische query-vermenigvuldiging, subquery-substitutie uit bestanden, het doorlopen van alfanumerieke combinaties en lijsten gebruiken om het maximaal mogelijke aantal resultaten te verkrijgen.

Het opslaan van resultaten is mogelijk in de vorm en structuur die u nodig heeft, dankzij de ingebouwde krachtige sjabloon-engine Template Toolkit waarmee u extra logica op de resultaten kunt toepassen en gegevens in verschillende formaten kunt uitvoeren, waaronder JSON, SQL en CSV.

Use cases voor de scraper

Verzamelde gegevens

De onderstaande lijst is een typische set voor WHOIS/RDAP; specifieke velden zijn afhankelijk van het antwoord van de server en wetgeving. Bij gegevensextractie via het web wordt gegarandeerd alleen de registratiestatus ingevuld; overige velden alleen als de operator deze publiceert.

  • $registered — of het domein geregistreerd is of niet
  • $expire_date — vervaldatum van de domeinregistratie
  • $creation_date — wanneer het domein is geregistreerd
  • $free_date — datum waarop het domein vrijkomt
  • $whoisserver — de gebruikte WHOIS-server (bij een WHOIS-aanvraag; bij RDAP vaak leeg)
  • $rdapserver — URL van de RDAP-server (bij een succesvolle RDAP-aanvraag)
  • $registrar — de registrar van het domein
  • $updated_date — datum van de laatste update van het record
  • $data — ruwe respons: WHOIS-tekst of RDAP-JSON
  • Array $ns (Name servers):
    • $ns.$i.server — naam van de NS-server
  • Array $statuses (Statuslijst):
    • $statuses.$i.status — status van het domein

Mogelijkheden

  • Automatische keuze tussen RDAP of WHOIS op basis van de domeinzone (prioriteit voor RDAP)
  • Als een zone geen werkende WHOIS/RDAP heeft, maar wel een webpagina van de operator, wordt de controle via die pagina uitgevoerd
  • De samenstelling van de WHOIS/RDAP-velden hangt af van het antwoord van de server en de wetgeving
  • Bij gegevensextractie via het web wordt altijd gecontroleerd of het domein bestaat; overige velden alleen als de operator deze verstrekt
  • Sommige zones (TLD en SLD) hebben geen WHOIS/RDAP of webpagina — WHOIS-gegevens zijn niet beschikbaar, maar het bestaan van het domein wordt gecontroleerd via Net::DNSNet::DNS
  • Ondersteuning voor internationale domeinen (IDN, bijvoorbeeld яндекс.рф)

Toepassingen

  • Verzamelen van vrije domeinen of domeinen die binnenkort vrijkomen
  • Verzamelen van een lijst met ns-servers
  • Verkrijgen van domeinstatussen

Query's

Als query's moet u het domein van de gezochte site opgeven, bijvoorbeeld:

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

Voorbeelden van resultaatuitvoer

A-Parser ondersteunt flexibele formattering van resultaten dankzij de ingebouwde sjabloon-engine Template Toolkit, waardoor resultaten in een willekeurige vorm kunnen worden uitgevoerd, evenals in gestructureerde formaten zoals CSV of JSON

Standaard uitvoer

Resultaatformaat:

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

Het resultaat toont het domein, of het geregistreerd is, de vervaldatum en de registratiedatum van het domein:

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

Uitvoer van NS-lijst

Resultaatformaat:

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

Voorbeeld resultaat:

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

Uitvoer van domeintermijngegevens naar CSV

Resultaatformaat:

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

Voorbeeld van de uitvoer (domein .com, antwoord via RDAP — whoisserver is leeg, rdapserver is ingevuld):

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"

Uitvoer van NS-lijst naar een CSV-tabel

Resultaatformaat:

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

Voorbeeld resultaat:

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

Dump van resultaten naar JSON

Algemeen resultaatformaat:

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

Begintekst:

[

Eindtekst:

]

Voorbeeld resultaat (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"
}]
tip

Om de opties "Prepend text" en "Append text" beschikbaar te maken in de Taakeditor, moet u "More options" activeren.

Verwerking van resultaten

A-Parser maakt het mogelijk om resultaten direct tijdens de gegevensextractie te verwerken. In deze sectie hebben we de meest populaire cases voor de scraper Net::Whois opgenomen

Domeinregistreerder ophalen

Bij een antwoord via WHOIS bevat het veld $p1.data tekst; bij RDAP is dit JSON. Om de registrar in beide gevallen te verkrijgen, voegt u twee Resultaatconstructors toe.

Voeg Result Builders (resultaatconstructor) toe en kies in de keuzelijst de bron: $p1.data. Kies het type: RegEx Match. Vul in het veld Reguliere expressie in: Registrar:\s*(.+) en sla het op in de variabele registrarwhois.

Voeg opnieuw Result Builders (resultaatconstructor) toe en kies in de keuzelijst de bron: $p1.data. Kies het type: RegEx Match. Vul in het veld Reguliere expressie in: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" en sla het op in de variabele registrarrdap.

Voeg toe aan Result format (resultaatformaat): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — als RDAP de naam niet heeft gevonden (registrarrdap is gelijk aan none), wordt de waarde uit WHOIS weergegeven, anders die uit RDAP.

Voorbeeld downloaden

Hoe een voorbeeld te importeren in 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

Mogelijke instellingen

ParameterStandaardwaardeBeschrijving
Recursive queryMaakt het mogelijk om een uitgebreide versie van WHOIS te verkrijgen
WHOIS serverMaakt het mogelijk om een eigen WHOIS-server in te stellen
RDAP serverMaakt het mogelijk om een eigen RDAP-server in te stellen
Checking by DNSMaakt het mogelijk om te controleren of een domein geregistreerd is op basis van het bestaan van een IP voor het domein
Checking domains by DNS recordIP-controle: als de status ALLOCATED wordt gevonden, wordt het domein als geregistreerd gemarkeerd. Als deze optie is uitgeschakeld, vindt er helemaal geen IP-controle plaats
Force DNS check for not found domainsGeforceerde controle als het domein als niet-geregistreerd is geïdentificeerd