python: 如何使用uwhoisd代理进行whois
python: how to perform whois with uwhoisd proxy
我正在尝试使用未记录的库 uwhoisd,但我不知道如何在 UWhois
对象上成功调用 whois()
函数。
我通过调用包含以下内容的文件 UwhoisDeamon.py 来启动守护程序:
import uwhoisd
uwhoisd.main()
我给python的参数是*.ini file下载源码时在extra目录下的
守护进程启动成功,输出如下:
2016-04-21 19:00:19,830 INFO:uwhoisd Reading config file at
'/path/to/my/ini/uwhoisd.ini' 2016-04-21
19:00:19,838 INFO:uwhoisd Listen on 0.0.0.0:4243 2016-04-21
19:00:19,842 INFO:uwhoisd Caching activated [2016/04/21 17:00:19]
{diesel} WARNING|Starting diesel
现在我正在尝试通过启动一个单独的 python 实例在 google.com 上执行 whois,我被打了一巴掌(我重复使用了 this 代码):
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
这里是结果:
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。它还缓存响应,这意味着更快的速度和更少的网络。
这里是 uwhoisd 的作者。
首先,摆脱掉 UwhoisDeamon.py
:它是一个守护进程,而不是一个库。您打算 运行 守护程序,然后使用 whois 客户端查询它。您无需编写任何其他代码即可启动并 运行ning。它已经安装了一个可以正常工作的控制台脚本。
当您将它安装到虚拟环境中时,它会创建一个名为 uwhoisd
的脚本,您可以使用该脚本来 运行 守护进程。这是一个例子:
$ virtualenv env
$ env/bin/pip install uwhoisd
Downloading/unpacking uwhoisd
Downloading uwhoisd-0.0.7-py2-none-any.whl
... installation log ...
Successfully installed uwhoisd diesel greenlet twiggy pyopenssl flask http-parser dnspython six cryptography Werkzeug Jinja2 itsdangerous idna pyasn1 setuptools enum34 ipaddress cffi MarkupSafe pycparser
Cleaning up...
如果你 运行 守护进程没有,这里是你应该得到的,假设你已经安装了所有必要的系统包:
$ env/bin/uwhoisd
Usage: uwhoisd <config>
uwhoisd 需要一个配置文件来告诉它如何与它需要能够查询的各种 WHOIS 服务器通信。您可以像这样下载文件:
$ wget https://raw.githubusercontent.com/kgaughan/uwhoisd/master/extra/uwhoisd.ini
运行使用此配置文件运行守护程序应该会为您提供以下信息:
$ env/bin/uwhoisd uwhoisd.ini
2016-05-03 17:41:25,028 INFO:uwhoisd Reading config file at 'uwhoisd.ini'
2016-05-03 17:41:25,038 INFO:uwhoisd Listen on 0.0.0.0:4243
2016-05-03 17:41:25,058 INFO:uwhoisd Caching activated
第二行表示守护进程运行所在的地址和端口。在这种情况下,它在端口 4243 上的所有接口上 运行ning,因此您现在可以在该端口上向它发出请求(在不同的终端 window):
$ whois -h localhost -p 4243 whosebug.com
Domain Name: whosebug.com
Registry Domain ID: 108907621_DOMAIN_COM-VRSN
...
并且您应该在守护程序 运行ning 的终端中看到以下附加日志行:
2016-05-03 17:43:36,841 INFO:uwhoisd Querying whois.verisign-grs.com about whosebug.com
2016-05-03 17:43:37,283 INFO:uwhoisd Recursive query to whois.name.com about whosebug.com
您不应该直接使用 uwhois 的内部结构:它是一个守护进程,并非设计用作库,当然不能像那样在 diesel 的事件循环之外,这就是您获得回溯的原因。 运行 但是,带有配置文件的守护程序,你会很高兴。
不幸的是,我没有时间为它需要的守护进程编写所有文档,但我希望尽快解决这个问题。
我正在尝试使用未记录的库 uwhoisd,但我不知道如何在 UWhois
对象上成功调用 whois()
函数。
我通过调用包含以下内容的文件 UwhoisDeamon.py 来启动守护程序:
import uwhoisd
uwhoisd.main()
我给python的参数是*.ini file下载源码时在extra目录下的
守护进程启动成功,输出如下:
2016-04-21 19:00:19,830 INFO:uwhoisd Reading config file at '/path/to/my/ini/uwhoisd.ini' 2016-04-21 19:00:19,838 INFO:uwhoisd Listen on 0.0.0.0:4243 2016-04-21 19:00:19,842 INFO:uwhoisd Caching activated [2016/04/21 17:00:19] {diesel} WARNING|Starting diesel
现在我正在尝试通过启动一个单独的 python 实例在 google.com 上执行 whois,我被打了一巴掌(我重复使用了 this 代码):
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
这里是结果:
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。它还缓存响应,这意味着更快的速度和更少的网络。
这里是 uwhoisd 的作者。
首先,摆脱掉 UwhoisDeamon.py
:它是一个守护进程,而不是一个库。您打算 运行 守护程序,然后使用 whois 客户端查询它。您无需编写任何其他代码即可启动并 运行ning。它已经安装了一个可以正常工作的控制台脚本。
当您将它安装到虚拟环境中时,它会创建一个名为 uwhoisd
的脚本,您可以使用该脚本来 运行 守护进程。这是一个例子:
$ virtualenv env
$ env/bin/pip install uwhoisd
Downloading/unpacking uwhoisd
Downloading uwhoisd-0.0.7-py2-none-any.whl
... installation log ...
Successfully installed uwhoisd diesel greenlet twiggy pyopenssl flask http-parser dnspython six cryptography Werkzeug Jinja2 itsdangerous idna pyasn1 setuptools enum34 ipaddress cffi MarkupSafe pycparser
Cleaning up...
如果你 运行 守护进程没有,这里是你应该得到的,假设你已经安装了所有必要的系统包:
$ env/bin/uwhoisd
Usage: uwhoisd <config>
uwhoisd 需要一个配置文件来告诉它如何与它需要能够查询的各种 WHOIS 服务器通信。您可以像这样下载文件:
$ wget https://raw.githubusercontent.com/kgaughan/uwhoisd/master/extra/uwhoisd.ini
运行使用此配置文件运行守护程序应该会为您提供以下信息:
$ env/bin/uwhoisd uwhoisd.ini
2016-05-03 17:41:25,028 INFO:uwhoisd Reading config file at 'uwhoisd.ini'
2016-05-03 17:41:25,038 INFO:uwhoisd Listen on 0.0.0.0:4243
2016-05-03 17:41:25,058 INFO:uwhoisd Caching activated
第二行表示守护进程运行所在的地址和端口。在这种情况下,它在端口 4243 上的所有接口上 运行ning,因此您现在可以在该端口上向它发出请求(在不同的终端 window):
$ whois -h localhost -p 4243 whosebug.com
Domain Name: whosebug.com
Registry Domain ID: 108907621_DOMAIN_COM-VRSN
...
并且您应该在守护程序 运行ning 的终端中看到以下附加日志行:
2016-05-03 17:43:36,841 INFO:uwhoisd Querying whois.verisign-grs.com about whosebug.com
2016-05-03 17:43:37,283 INFO:uwhoisd Recursive query to whois.name.com about whosebug.com
您不应该直接使用 uwhois 的内部结构:它是一个守护进程,并非设计用作库,当然不能像那样在 diesel 的事件循环之外,这就是您获得回溯的原因。 运行 但是,带有配置文件的守护程序,你会很高兴。
不幸的是,我没有时间为它需要的守护进程编写所有文档,但我希望尽快解决这个问题。