【问题标题】:Python, TOR, Requests - 'module' object has no attribute 'inet_pton'Python,TOR,请求-“模块”对象没有属性“inet_pton”
【发布时间】:2016-06-11 11:25:18
【问题描述】:

我正在尝试通过正在侦听 127.0.0.1:9050 的 TOR 发出 GET 请求

我已经安装了 request socks:pip install -U requests[socks]

 import requests
 tor_proxy = {'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'}

 r = requests.get("http://www.google.com", proxies=tor_proxy, timeout=20)

这是我运行代码时的错误

Traceback (most recent call last):

    r = requests.get("http://www.google.com", proxies=tor_proxy, timeout=20)
  File "C:\Python27\lib\site-packages\requests\api.py", line 71, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python27\lib\site-packages\requests\api.py", line 57, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests\adapters.py", line 403, in send
    timeout=timeout
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 578, in urlopen
    chunked=chunked)
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 362, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Python27\lib\httplib.py", line 1057, in request
    self._send_request(method, url, body, headers)
  File "C:\Python27\lib\httplib.py", line 1097, in _send_request
    self.endheaders(body)
  File "C:\Python27\lib\httplib.py", line 1053, in endheaders
    self._send_output(message_body)
  File "C:\Python27\lib\httplib.py", line 897, in _send_output
    self.send(msg)
  File "C:\Python27\lib\httplib.py", line 859, in send
    self.connect()
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\connection.py", line 167, in connect
    conn = self._new_conn()
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\contrib\socks.py", line 81, in _new_conn
    **extra_kw
  File "C:\Python27\lib\site-packages\socks.py", line 195, in create_connection
    sock.connect((remote_host, remote_port))
  File "C:\Python27\lib\site-packages\socks.py", line 747, in connect
    negotiate(self, dest_addr, dest_port)
  File "C:\Python27\lib\site-packages\socks.py", line 419, in _negotiate_SOCKS5
    CONNECT, dest_addr)
  File "C:\Python27\lib\site-packages\socks.py", line 482, in _SOCKS5_request
    resolved = self._write_SOCKS5_address(dst, writer)
  File "C:\Python27\lib\site-packages\socks.py", line 517, in _write_SOCKS5_address
    addr_bytes = socket.inet_pton(family, host)
AttributeError: 'module' object has no attribute 'inet_pton'

6 月 11 日 13:13:55.000 [notice] 尝试了 120 秒以连接到 [scrubbed]:0。放弃。 (等待袜子信息)

谢谢

【问题讨论】:

  • 你到底安装了什么包?
  • 请发布完整的回溯
  • 感谢添加回溯

标签: python tor


【解决方案1】:

问题出在库本身,尤其是 PySocks socks.pyinet_pton 仅在 unix 上可用:

socket.inet_pton(address_family, ip_string)

将 IP 地址从其特定系列的字符串格式转换为打包的二进制格式。当库或网络协议调用 struct in_addr(类似于 inet_aton())或 struct in6_addr 类型的对象时,inet_pton() 很有用。

目前支持的 address_family 值为 AF_INET 和 AF_INET6。如果 IP 地址字符串 ip_string 无效,则会引发 socket.error。请注意,究竟什么是有效的取决于 address_family 的值和 inet_pton() 的底层实现。

可用性:Unix(可能不是所有平台)。

一种解决方法是安装win_inet_pton并将其导入您的脚本中,该方法将自动添加到套接字库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2015-03-09
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多