Ich habe kürzlich in einem CompSci-Kurs mit 100 Levels an Operationen mit Strings gearbeitet. Ich hatte die sehr "originelle" Idee, einen einfachen Domainnamengenerator / -prüfer zu schreiben.

Also habe ich ein paar Hausaufgaben gemacht und festgestellt, dass die verschiedenen whois-Server verständlicherweise die Anzahl der zulässigen Abfragen begrenzen.

Also habe ich mich entschlossen, zuerst nach einem DNS-Booleschen Wert zu suchen. Wenn keine Datensätze gefunden werden, überprüfe ich eine MySQL-Datenbank, um sicherzustellen, dass in letzter Zeit nicht dieselbe Abfrage gesendet wurde. Wenn nicht, starte ich eine Whois-Abfrage mit PHP mit fsockopen. Ich war gerade dabei, mein kleines Skript fertigzustellen und es von meinem Entwicklungsserver auf meinen Produktionsserver hochzuladen, und ich fand einige Websites, die darauf hinwiesen, dass verschiedene whois-Server die Abfragen auf nur 1.000 beschränken.

Meine Frage:

Nähere ich mich dem angemessen? Die einfache Mathematik legt nahe, dass nur 10 Benutzer, die jeweils 10 Suchanfragen auschecken und nur 10 Ergebnisse (10 ** 3) liefern, zu einer Überschreitung des Grenzwerts und einem vorübergehenden Verbot führen können.

Gibt es Methoden, um Massenabfragen an den whois-Server durchzuführen?

Verwenden andere Websites eine clientseitige Javascript-Abfrage oder einen serverseitigen Proxy? Ich habe hier bei stackoverflow eine andere ähnliche Frage gefunden, die darauf hindeutet, dass * NIX-Systeme Zugriff auf einen Terminalbefehl haben, der keine Grenzen kennt. Andere Fragen, die ich gefunden habe, befassen sich mit dem Parsen der Daten - was mich nicht betrifft.

Ich verstehe, dass dies eine vage Frage ist. Ich möchte die whois-Server nicht unangemessen belasten. Ich erwarte und möchte keine fertige Codelösung. Eine grundlegende Diskussion alternativer programmatischer Strategien würde mich zu einem sehr zufriedenen Freund machen :) Hat jemand ein oder zwei Schlüsselwörter, mit denen ich meine Forschung fortsetzen kann?

6
Samantha P 9 Okt. 2012 im 04:34

3 Antworten

Beste Antwort

Der whois-Unix-Befehl scheint weniger eingeschränkt zu sein (https://superuser.com/questions/452751/what-are-the-limits-of-whois-command-on-unix). Es ist möglicherweise am einfachsten, das zu tun, was whois unter der Decke tut, und eine TCP-Verbindung zu whois.internic.net an Port 43 herzustellen.

<?php

$fp = fsockopen("whois.internic.net", 43);
fwrite($fp, "hello.com\n");

$response = "";
while (!feof($fp)) {
    $response .= fread($fp, 8192);
}

fclose($fp);
echo $response;

?>

Wenn Sie das bereits tun, ist dies wahrscheinlich die beste Wahl. Ich vermute, ein Limit von 1.000 Abfragen bezieht sich wahrscheinlich auf die Verwendung eines Webdienstes, der dies für Sie erledigt (z. B. whois.com). Ich denke, Sie können viel mehr Fragen stellen, wenn Sie das tun, was ich oben gezeigt habe.

(Ich habe hier viele Vermutungen und Annahmen gemacht.)

P.S. Viele gute Infos hier: http: / /semmyfun.blogspot.com/2010/08/how-does-whois-work-dirty-guide.html

4
Community 20 März 2017 im 10:04

Wenn Sie nur daran interessiert sind, ob Domains registriert sind, und nicht an den WHOIS-Details, sollten Sie DNS-Server besser für Ihre Überprüfungen verwenden als WHOIS.

1
duskwuff -inactive- 9 Okt. 2012 im 05:11

Obwohl dies bereits als beantwortet markiert wurde (ich habe es bereits für einen anderen Beitrag eingegeben, damit ich es genauso gut wiederverwenden kann) :-)

Wie bereits erwähnt, werden die meisten whois-Behörden Ihren Datenverkehr drosseln (oder sogar blockieren), wenn sie der Ansicht sind, dass Sie innerhalb von 24 Stunden zu viele Anfragen stellen.

Stattdessen möchten Sie sich möglicherweise bei der FTP-Site eines der whois-Anbieter weltweit anmelden und die verschiedenen Teile der Datenbank herunterladen. Alle stellen diese öffentlichen Daten zur Verfügung und es sind genau dieselben Daten, die Unternehmen wie maxmind für ihre IP verwenden für den Geo-Lookup-Service, und es sind dieselben Daten, die sich hinter all diesen 'whois'-Befehlen befinden, die jeder automatisiert.

Ich mache dies derzeit mit einem meiner eigenen Server, der mithilfe des folgenden Shell-Skripts (einmal alle 24 Stunden) eine Verbindung herstellt. WARNUNG - Dadurch werden fast 4 GB Daten erzeugt. Stellen Sie daher sicher, dass Sie dies auf einer Festplatte mit viel Speicherplatz tun. .:

#!/bin/bash
rm -f delegated-afrinic-latest
rm -f delegated-lacnic-latest
rm -f delegated-arin-latest
rm -f delegated-apnic-latest
rm -f delegated-ripencc-latest
rm -f ripe.db.inetnum
rm -f apnic.db.inetnum
rm -f ripe.db.inetnum.gz
rm -f apnic.db.inetnum.gz
wget ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
wget ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
wget ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
wget ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
wget ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest
wget ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz
ftp -n -v ftp.apnic.net <<END
user anonymous anonymous@anonymous.org
binary
passive
get /apnic/whois-data/APNIC/split/apnic.db.inetnum.gz apnic.db.inetnum.gz
bye
END
gunzip ripe.db.inetnum
gunzip apnic.db.inetnum

Ich habe dann ein benutzerdefiniertes Programm, das die Dateien in eine benutzerdefinierte Datenbankstruktur analysiert, von der aus meine Server ihre Abfragen ausführen.

Da sich alle Server gegenseitig spiegeln, sollten Sie in der Lage sein, einen vollständigen Datensatz von einem Server abzurufen. Wenn dies nicht der Fall ist, würde es nicht viel kosten, das obige Shell-Skript zu ändern, um die Daten von den anderen Servern herunterzuladen. Alle antworten auf 'ftp. ????' und haben die gleiche universelle Ordnerstruktur.

Ich kann Ihnen jedoch nicht mit dem Parser helfen, da dieser proprietären Code enthält, aber das Dateiformat (insbesondere, wenn Sie die geteilten Dateien erhalten) ist identisch mit dem, was Sie in einer typischen whois-Ausgabe sehen, so dass es sehr einfach ist, damit zu arbeiten.

Es gibt einen Parser für Google-Code (dort habe ich das Download-Skript) namens 'ip-country' (glaube ich), mit dem Sie Ihre eigene whois-Datenbank erstellen können. Die von mir erstellte ist etwas komplizierter Es wird auch mit anderen Daten kombiniert (daher ist mein Parser proprietär).

Wenn Sie Ihre eigenen Daten auf diese Weise herunterladen und verarbeiten, umgehen Sie alle von den Anbietern auferlegten Grenzen. Das Ergebnis ist, dass es höchstwahrscheinlich viel schneller ist, Ihren eigenen Datenspeicher abzufragen, als jedes Mal Anfragen von Ihrem Server an die Abfrageserver auszulösen jemand gibt eine IP-Adresse ein.

3
shawty 29 Mai 2013 im 19:37