Zum Hauptinhalt springen

Net::Whois - Der Parser prüft Domaindaten über RDAP und WHOIS

Übersicht über den Parser

Übersicht über den Parser

Domain-Daten werden über RDAP (HTTP, JSON), WHOIS (Port 43) oder die Webseite des Betreibers gesammelt – abhängig von der Domain-Zone. Für jede TLD sind im Parser RDAP- und WHOIS-Server hinterlegt; wenn RDAP für eine Zone verfügbar ist, wird die Abfrage vorrangig darüber ausgeführt, bei Fehlern über WHOIS, und falls beides nicht verfügbar ist – über das Web, sofern eine Seite existiert.

Die Auswahl der Prüfmethoden hängt vom Betreiber ab, nicht nur von der TLD. Einige Zonen haben kein WHOIS oder RDAP oder diese funktionieren nicht – so hat es der Betreiber entschieden. Eine Webseite zur Überprüfung gibt es ebenfalls nicht für alle: Deren Vorhandensein wird ebenfalls vom Betreiber festgelegt. Wenn eine Seite existiert, fragt der Parser die Daten darüber ab.

Es gibt Zonen, in denen der Betreiber nur die TLD besitzt und Webseiten auf SLDs (Second-Level-Domains, z. B. co.uk, org.uk) registriert werden. Der Besitzer einer SLD kann einer oder mehrere sein – aber es ist nicht der TLD-Betreiber. Die Auswahl der Prüfmethoden wird bereits vom SLD-Besitzer festgelegt: WHOIS, RDAP, Webseite, eine Kombination davon – oder gar nichts davon.

Der Inhalt der Felder in WHOIS und RDAP kann ebenfalls variieren – aufgrund von Gesetzgebung, Betreiberrichtlinien und Einschränkungen bei personenbezogenen Daten. Die Felder sind jedoch im Allgemeinen vorhersehbar: Registrierung, Daten, NS, Registrar, Status.

Bei der Datenerfassung über das Web gibt es keine Standardisierung. Es wird immer geprüft, ob die Domain registriert ist oder nicht. Der Rest hängt davon ab, was der Betreiber auf der Seite ausgibt: Es kann fast der vollständige Datensatz sein oder nur die Tatsache der Registrierung.

Weitere Informationen: RDAP (engl.), WHOIS.

Die Funktionalität von A-Parser ermöglicht es, Datenerfassungseinstellungen für die spätere Verwendung zu speichern (Presets), Zeitpläne für die Datenerfassung festzulegen und vieles mehr. Sie können die automatische Abfragevervielfältigung, die Ersetzung von Unterabfragen aus Dateien, das Durchlaufen von alphanumerischen Kombinationen und Listen nutzen, um die maximal mögliche Anzahl an Ergebnissen zu erhalten.

Das Speichern der Ergebnisse ist in der von Ihnen benötigten Form und Struktur möglich, dank der integrierten leistungsstarken Template-Engine Template Toolkit, die es ermöglicht, zusätzliche Logik auf die Ergebnisse anzuwenden und Daten in verschiedenen Formaten auszugeben, einschließlich JSON, SQL und CSV.

Anwendungsbeispiele für den Parser

Gesammelte Daten

Die folgende Liste ist ein typischer Satz für WHOIS/RDAP; die spezifischen Felder hängen von der Antwort des Servers und den Gesetzen ab. Bei der Datenerfassung über das Web wird garantiert nur der Registrierungsstatus ausgefüllt; andere Felder nur, wenn der Betreiber sie veröffentlicht.

  • $registered — ob die Domain registriert ist oder nicht
  • $expire_date — Ablaufdatum der Domain-Registrierung
  • $creation_date — wann die Domain registriert wurde
  • $free_date — Datum, an dem die Domain frei wird
  • $whoisserver — verwendeter WHOIS-Server (bei WHOIS-Anfrage; bei RDAP oft leer)
  • $rdapserver — URL des RDAP-Servers (bei erfolgreicher RDAP-Anfrage)
  • $registrar — Domain-Registrar
  • $updated_date — Datum der letzten Aktualisierung des Eintrags
  • $data — Rohantwort: WHOIS-Text oder RDAP-JSON
  • Array $ns (Nameserver):
    • $ns.$i.server — Name des NS-Servers
  • Array $statuses (Statusliste):
    • $statuses.$i.status — Domain-Status

Funktionen

  • Automatische Auswahl von RDAP oder WHOIS basierend auf der Domain-Endung (RDAP-Priorität)
  • Wenn eine Zone kein funktionierendes WHOIS/RDAP hat, aber eine Webseite des Betreibers existiert, erfolgt die Prüfung darüber
  • Die Zusammensetzung der WHOIS/RDAP-Felder hängt von der Serverantwort und der Gesetzgebung ab
  • Bei der Datenerfassung über das Web wird immer die Existenz der Domain geprüft; andere Felder nur, wenn der Betreiber sie bereitstellt
  • Einige Zonen (TLD und SLD) verfügen weder über WHOIS/RDAP noch über eine Webseite — WHOIS-Daten sind nicht verfügbar, aber die Existenz der Domain wird über Net::DNSNet::DNS geprüft
  • Unterstützung für internationale Domainnamen (IDN, z. B. яндекс.рф)

Anwendungsfälle

  • Suche nach freien Domains oder solchen, die bald frei werden
  • Erfassung einer Liste von NS-Servern
  • Abfrage von Domain-Status

Abfragen

Als Abfragen muss die Domain der gesuchten Website angegeben werden, zum Beispiel:

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

Beispiele für die Ergebnisausgabe

A-Parser unterstützt eine flexible Formatierung der Ergebnisse dank der integrierten Template-Engine Template Toolkit, was die Ausgabe der Ergebnisse in beliebiger Form sowie in strukturierter Form wie CSV oder JSON ermöglicht.

Standardausgabe

Ergebnisformat:

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

Das Ergebnis zeigt die Domain, ob sie registriert ist, das Ablaufdatum der Registrierung und das Erstellungsdatum der Domain:

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

Ausgabe der NS-Liste

Ergebnisformat:

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

Beispielergebnis:

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

Ausgabe von Domain-Fristen in CSV

Ergebnisformat:

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

Ergebnisbeispiel (Domain .com, Antwort über RDAP — whoisserver leer, rdapserver ausgefüllt):

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"

Ausgabe der NS-Liste in eine CSV-Tabelle

Ergebnisformat:

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

Beispielergebnis:

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

Ergebnis-Dump in JSON

Allgemeines Ausgabeformat:

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

Anfangstext:

[

Endtext:

]

Beispielergebnis (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"
}]
Tipp

Damit die Optionen "Prepend text" und "Append text" im Task-Editor verfügbar sind, muss "More options" aktiviert werden.

Ergebnisverarbeitung

A-Parser ermöglicht die Verarbeitung von Ergebnissen direkt während der Datenerfassung. In diesem Abschnitt haben wir die beliebtesten Anwendungsfälle für den Parser Net::Whois aufgeführt.

Abrufen des Domain-Registrars

Bei einer Antwort über WHOIS enthält das Feld $p1.data Text; bei RDAP — JSON. Um den Registrar in beiden Fällen zu erhalten, fügen Sie zwei Ergebnis-Builder hinzu.

Fügen Sie einen Result Builders (Results Builder) (Ergebnis-Builder) hinzu und wählen Sie in der Dropdown-Liste die Quelle: $p1.data. Wählen Sie den Typ: RegEx Match. Geben Sie im Feld Regulärer Ausdruck: Registrar:\s*(.+) ein und speichern Sie dies in der Variable registrarwhois.

Fügen Sie erneut einen Result Builders (Results Builder) (Ergebnis-Builder) hinzu und wählen Sie in der Dropdown-Liste die Quelle: $p1.data. Wählen Sie den Typ: RegEx Match. Geben Sie im Feld Regulärer Ausdruck: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" ein und speichern Sie dies in der Variable registrarrdap.

Fügen Sie im Result format (Ergebnisformat) hinzu: [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — wenn RDAP den Namen nicht gefunden hat (registrarrdap ist gleich none), wird der Wert aus WHOIS ausgegeben, andernfalls aus RDAP.

Beispiel herunterladen

Wie man ein Beispiel in A-Parser importiert

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ögliche Einstellungen

ParameterStandardwertBeschreibung
Recursive queryErmöglicht den Erhalt einer erweiterten WHOIS-Version
WHOIS serverErmöglicht die Angabe eines eigenen WHOIS-Servers
RDAP serverErmöglicht die Angabe eines eigenen RDAP-Servers
Checking by DNSErmöglicht die Überprüfung, ob eine Domain registriert ist, basierend auf der Existenz einer IP für die Domain
Checking domains by DNS recordIP-Prüfung: Wenn der Status ALLOCATED gefunden wird, wird die Domain als registriert eingestuft. Wenn die Option deaktiviert ist, findet keine IP-Prüfung statt
Force DNS check for not found domainsErzwungene Prüfung, wenn die Domain als nicht registriert eingestuft wurde