【发布时间】:2016-03-12 13:47:18
【问题描述】:
我正在使用 tor 和 python 开发一个项目,为此我必须使用 pycurl 获取给定 url 的服务器 ip。
目前我正在使用以下代码进行简单的查询和响应。
def query(url):
"""
Uses pycurl to fetch a site using the proxy on the SOCKS_PORT.
"""
output = StringIO.StringIO()
curl = pycurl.Curl()
curl.setopt( pycurl.URL, url )
curl.setopt( pycurl.PROXY, '188.120.228.106' )
curl.setopt( pycurl.PROXYPORT, 1080 )
curl.setopt( pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5_HOSTNAME )
curl.setopt(pycurl.CONNECTTIMEOUT, CONNECTION_TIMEOUT)
try:
curl.perform()
return output.getvalue()
except pycurl.error as exc:
raise ValueError("Unable to reach %s (%s)" % (url, exc))
关于如何更改代码的任何建议,以便我也可以获得给定 url 的服务器 IP。
【问题讨论】:
-
您使用的是代理,您不知道远程服务器的IP。
-
由于您是通过代理连接的,因此 cURL 将只知道 Daniel 所说的代理服务器 IP。要获取服务器 IP,您只需对 URL 的主机名进行 DNS 查找。您可以使用计算机的 DNS 解析器在 Python 中执行此操作,或者通过连接到 Tor 的控制端口并发出 RESOLVE 命令通过 Tor 解析它(参见第 3.20 节)。