Was Python Weg würden Sie vorschlagen, um zu überprüfen, whois-Datenbank Datensätze?
Ich versuche, einen webservice laufen, der eigentlich verlangt, um zu überprüfen, whois-Datenbanken. Was mache ich jetzt hässlich ist, und ich möchte es vermeiden, so viel wie ich kann: ich nenne gwhois Befehl und analysieren der Ausgabe. Hässlich.
Habe ich einige der Suche, um zu versuchen zu finden ein pythonic Weg, dies zu tun Aufgabe. In der Regel ich habe ganz viel nichts - diese alte Diskussion link Liste hat einen Weg, um zu überprüfen, wenn die Domäne vorhanden ist. Durchaus nicht das, was ich suchte... Aber dennoch, es war am besten anwser Google gab mir - alles andere ist nur ein Haufen von unanwsered Fragen.
Einem von Euch gelungen, zu bekommen, einige Verfahren laufen? Ich würde es sehr schätzen, einige Tipps, oder sollte ich nur tun es die opensource-Weg, hinsetzen und etwas code von mir? 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nichts falsch mit der Verwendung von Befehlszeilen-Dienstprogramm, das zu tun, was Sie wollen. Wenn Sie eine schöne Hülle um den service, die Sie implementieren können, die Interna, aber Sie wollen! Zum Beispiel:
Nun, ob oder nicht Sie Rollen Sie Ihre eigenen mit das urllib, wrap-around-ein Befehlszeilen-Dienstprogramm (wie du tust), oder importieren Sie eine Drittanbieter-Bibliothek und verwenden Sie, dass (wie du sagst), das interface bleibt das gleiche.
Dieser Ansatz ist in der Regel nicht als hässlich an alle -- manchmal Dienstprogramme Befehl tun, was Sie wollen, und Sie sollten in der Lage sein, diese zu nutzen. Wenn die Geschwindigkeit am Ende ein Engpass, Ihre Abstraktion macht den Prozess der Umstellung auf eine native Python-Implementierung transparent für Ihre client-code.
Praktikabilität beats Reinheit -- das ist, was Pythonic. 🙂
Schau mal hier:
http://code.google.com/p/pywhois/
pywhois - Python-Modul zum abrufen von WHOIS-Informationen zu domains
Ziel:
- Erstellen Sie eine einfache importierbar Python-Modul, das analysiert WHOIS-Daten für eine gegebene Domäne.
- In der Lage, zum extrahieren von Daten für alle gängigen TLDs (com, org, net, ...)
- Abfrage eines WHOIS-server direkt statt über eine zwischengeschaltete web-service wie viele andere auch tun.
- Funktioniert mit Python 2.4+, keine externe Abhängigkeiten
Beispiel:
Fand diese Frage im Zuge meiner eigenen Suche nach einem python whois Bibliothek.
Nicht wissen, dass ich Stimme mit cdleary die Antwort, dass die Verwendung einer Bibliothek, wraps
ein Befehl ist immer der beste Weg zu gehen - aber ich kann sehen, dass seine Gründe, warum er dies sagte.
Pro: cmd-line whois Griffe all die harte Arbeit (socket-Aufrufe, Parsen, etc)
Con: nicht tragbar; - Modul funktioniert möglicherweise nicht, je nach zugrunde liegenden whois-Befehl.
Langsamer, da läuft ein Befehl, und die meisten wahrscheinlich shell zusätzlich zu den whois-Befehl.
Betroffen, wenn nicht UNIX (Windows), verschiedene UNIX -, ältere UNIX, oder
ältere whois-Befehl
Ich bin auf der Suche nach einem whois-Modul kann mit " whois IP-lookups und ich bin nicht daran interessiert, in die Entwicklung meiner eigenen whois-client.
Hier sind die Module, die ich (leicht) ausprobiert und weitere Informationen:
pywhoisapi:
BulkWhois
pywhois:
python-whois:
whoisclient - Gabel von python-whois
Update: ich landete mit pywhoisapi für die reverse IP lookups, dass ich dabei war
Hier ist die whois-client neu implementiert in Python:
http://code.activestate.com/recipes/577364-whois-client/
Ich weiß nicht, ob gwhois hat etwas besonderes mit der server-Ausgabe; Sie können jedoch einfach eine Verbindung zum whois-server auf port whois (43), senden Sie Ihre Anfrage, Lesen Sie alle Daten in die Antworten und analysieren Sie. Um das Leben ein wenig zu erleichtern, könnten Sie die telnetlib.Die Telnet-Klasse (auch wenn die whois-Protokoll ist viel einfacher als das telnet-Protokoll) anstelle von plain sockets.
Die knifflige Teile:
Anderen Weg, es zu tun, ist die Verwendung
urllib2
- Modul zum analysieren einige andere Seite der whois-Dienst (viele Seiten wie, die es gibt). Aber das scheint ja mehr ein hack, dass das, was Sie jetzt tun, und geben Ihnen eine Abhängigkeit von was auch immer die whois-Website, die Sie gewählt haben, das ist schlecht.Ich hasse es zu sagen, aber es sei denn, Sie wollen re-implementieren
whois
im Programm (die wäre neu zu erfinden das Rad), laufenwhois
auf das OS und analysieren Sie die Ausgabe (dh, was Sie jetzt tun) scheint der richtige Weg, es zu tun.Parsen einer anderen Webseite woulnd nicht so schlecht (vorausgesetzt, Ihre html-woulnd nicht sehr schlimm), aber es würde tatsächlich binden mich an Sie - wenn Sie sind unten, ich bin unten 🙂
Tatsächlich fand ich einige alte Projekt auf sourceforge: rwhois.py. Was mich erschreckt ein wenig, dass der Letzte update ist von 2003. Aber, es könnte scheinen, als ein guter Ort, um zu starten Neuimplementierung von dem, was ich jetzt tun... Gut, ich fühlte mich obligued, um den link posten zu diesem Projekt ohnehin nur für eine weitere Referenz.
wenn es gibt eine gaierror wissen Sie wissen es nicht registriert mit jeder DNS -
hier ist ein ready-to-use-Lösung, die funktioniert für mich; geschrieben für Python 3.1 (wenn Zurückportieren zu Py2.x, Besondere Sorgfalt der bytes /Unicode-text-Unterscheidungen). single-point-of-access die Methode ist, die
DRWHO.whois()
, die erwartet, dass ein domain-name übergeben werden; es wird dann versuchen, den Namen auflösen mithilfe der provider konfiguriertDRWHO.whois_providers[ '*' ]
(eine vollständigere Lösung könnte differenzieren die Anbieter nach der top-level-domain).DRWHO.whois()
zurückkehren wird ein Wörterbuch mit einer einzigen Eintragtext
enthält die Antwort-text geschickt zurück, indem Sie die WHOIS-server. Wieder eine vollständige Lösung würde dann versuchen und analysieren Sie den text (was muss getan werden, separat für jeden Anbieter, da es kein standard-format) und wieder einer mehr, strukturierter Form (z.B. durch setzen eines Flagsavailable
die angibt, ob oder nicht, die domain sieht verfügbar). Spaß haben!