【问题标题】:IP of Server using Tor and pycurl使用 Tor 和 pycurl 的服务器 IP
【发布时间】: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 将只知道 Dan​​iel 所说的代理服务器 IP。要获取服务器 IP,您只需对 URL 的主机名进行 DNS 查找。您可以使用计算机的 DNS 解析器在 Python 中执行此操作,或者通过连接到 Tor 的控制端口并发出 RESOLVE 命令通过 Tor 解析它(参见第 3.20 节)。

标签: python curl tor pycurl


【解决方案1】:

您正在寻找的正确标志似乎是CURLINFO_PRIMARY_IP

尝试在您的 pycurl.Curl() 对象上使用 curl.getinfo(pycurl.PRIMARY_IP)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多