Ich versuche, die undokumentierte Bibliothek uwhoisd zu verwenden, und ich kann nicht herausfinden, wie erfolgreich die whois()
Funktion auf dem Objekt UWhois
aufgerufen wird.Python: wie whois mit uwhoisd Proxy ausführen
beginne ich die deamon, indem eine Datei UwhoisDeamon.py mit folgendem Inhalt Aufruf:
import uwhoisd
uwhoisd.main()
Das Argument, das ich zu Python gebe die *.ini file, die im zusätzlichen Verzeichnis aufgenommen wurde, als ich die heruntergeladene Quellcode
die deamon starten erfolgreich mit folgenden Ausgang:
2016-04-21 19: 00: 19.830 INFO: uwhoisd Lesen der Konfigurationsdatei unter '/pfad/zu/my/ini/uwhoisd.ini' 2016-04-21 19: 00: 19,838 INFO: uwhoisd Anhören auf 0.0.0.0:4243 2016.04.21 19: 00: 19.842 INFO: uwhoisd Caching aktiviert [2016.04.21 17.00.19] {Diesel} WARNUNG | Dieselstart
Jetzt bin ich versuchen, auf google.com whois durchführen, indem eine separate python-Instanz starten und bekomme ich ins Gesicht geschlagen (wiederverwendet ich this Code):
from os import path
import uwhoisd
from uwhoisd.utils import make_config_parser
HERE = path.dirname(__file__)
def create_uwhois():
"""Prepare a UWhois object for testing."""
config = path.join(HERE, 'uwhoisd.ini')
parser = make_config_parser(uwhoisd.CONFIG, config)
uwhois = uwhoisd.UWhois()
uwhois.read_config(parser)
return uwhois
uwhois = create_uwhois()
# uwhois = uwhoisd.UWhois()
result = uwhois.whois("google.com")
print result
und hier die resul t:
Traceback (most recent call last):
File "/home/user/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.python.pydev_3.9.0.201411111611/pysrc/pydevd.py", line 2183, in <module>
globals = debugger.run(setup['file'], None, None)
File "/home/user/.eclipse/org.eclipse.platform_3.8_155965261/plugins/org.python.pydev_3.9.0.201411111611/pysrc/pydevd.py", line 1622, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/path/to/my/project/Whois/WhoisChecker.py", line 17, in <module>
result = uwhois.whois("google.com")
File "/usr/local/lib/python2.7/dist-packages/uwhoisd/__init__.py", line 137, in whois
with net.WhoisClient(server, port) as client:
File "/usr/local/lib/python2.7/dist-packages/diesel/client.py", line 16, in __init__
ip = self._resolve(self.addr)
File "/usr/local/lib/python2.7/dist-packages/diesel/client.py", line 21, in _resolve
return resolve_dns_name(addr)
File "/usr/local/lib/python2.7/dist-packages/diesel/resolver.py", line 67, in resolve_dns_name
except (NotFound, Timeout):
File "/usr/local/lib/python2.7/dist-packages/diesel/util/lock.py", line 24, in __exit__
self.release()
File "/usr/local/lib/python2.7/dist-packages/diesel/util/lock.py", line 18, in release
fire(self)
File "/usr/local/lib/python2.7/dist-packages/diesel/core.py", line 92, in fire
return current_loop.fire(*args, **kw)
AttributeError: 'NoneType' object has no attribute 'fire'
Es scheint mir, dass die diesel-Bibliothek, die von uwhoisd verwendet wird zwischen Client und Deamon Anwendung erfordert einige besondere Bedingungen zu kommunizieren, damit es funktioniert. Von dem, was ich sehen kann, läuft das mysteriöse current_loop
nicht. Allerdings habe ich noch nie Diesel verwendet und ich habe keine Ahnung was zu tun ist. Es scheint mir, dass ich diese Dieselschleife irgendwie starten muss, bevor ich diese Whois-Abfragen durchführen kann.
Ein funktionierendes Beispiel wäre großartig. Der Hauptgrund, warum ich mich für uwhoisd entschieden habe, ist, dass ich Whois auf exotischen Webseiten wie "win.win" ausführen kann. Es speichert auch Antworten, was mehr Geschwindigkeit und weniger Netzwerk bedeutet.
Vielen Dank! Ich denke, das bedeutet, dass ich die Ausgabe selbst parsen muss, aber das ist kein großes Problem. – evolution
Unvermeidlich, ich fürchte, obwohl es für gTLDs heutzutage ein festes Format gibt, das leicht zu analysieren ist: https://www.icann.org/resources/pages/approved-with-specs-2013-09-17-de #whois Für Thin-Registries (.com, .net, .jobs usw.) verwenden leider nicht alle Registrare dieses Format. Für ccTLDs (Zwei-Buchstaben-Domain-Namen) ist es ein totales Craps-Shooting. : - / –