文書化されていないライブラリuwhoisdを使用しようとしています。UWhois
オブジェクトでwhois()
関数を正常に呼び出す方法を理解できません。python:uwhoisdプロキシを使用してwhoisを実行する方法
私は次の内容のUwhoisDeamon.pyファイルを呼び出すことにより、デーモンを起動します。
import uwhoisd
uwhoisd.main()
私のpythonに与える引数は、私がダウンロードしたときに余分ディレクトリに含まれていた*.ini fileです
:デーモンを起動するソースコードは次の出力で成功しています
2016-04-21 19:00:19,830情報:uwhoisd設定ファイルを '/path/to/my/ini/uwhoisd.ini'に読み込みます。2016-04-21 19:00:19,838情報:uwhoisd 0.0.0.0:4243 2016年4月21日 19:00:19842 INFO:uwhoisdキャッシュが有効化[2016年4月21日午前17時00分19秒] {}ディーゼルWARNING |ディーゼル
を起動する今、私は」メートル(私はthisコードを再利用)、別のpythonのインスタンスを起動することによって、google.comでのwhoisを実行し、私は顔に平手打ちを取得しよう:
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
そして、ここ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'
クライアントとデーモンアプリケーション間の通信にuwhoisdで使用されdieselライブラリはそれを動作させるためにいくつかの特別な条件を必要と私には思えます。私は謎のcurrent_loop
が実行されていないことがわかります。しかし、以前はディーゼルを使用していなかったので、何をすべきか分かりません。これらのwhoisクエリーを実行するには、あとでディーゼルループを始める必要があるようです。
実例は素晴らしいでしょう。私がuwhoisdを選んだ主な理由は、 "win.win"のようなエキゾチックなウェブサイトでwhoisを実行できることです。また、レスポンスがキャッシュされるため、より高速でネットワークが少なくなります。
ありがとうございました!私はそれが自分自身の出力を解析する必要があることを意味すると思いますが、それは大きな問題ではありません。 – evolution
gTLDについては、今日は固定フォーマットがありますが、これは簡単に解析できます:https://www.icann.org/resources/pages/approved-with-specs-2013-09-17-en #whois 薄いレジストリ(.com、.net、.jobs、&c。)の場合、すべてのレジストラがそのフォーマットを使用するわけではありません。 ccTLD(2文字のドメイン名)の場合、それは完全に駄目です。 : - / –