Python, TOR, Requests — объект «модуль» не имеет атрибута «inet_pton»

Я пытаюсь сделать запрос GET через TOR, который прослушивает 127.0.0.1:9050.

Я установил носки запросов: pip install -U request[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'

11 июня 13:13:55.000 [уведомление] Пытался в течение 120 секунд установить соединение с [scrubbed]:0. Сдаваться. (жду информацию о носках)

Спасибо


person mbudge    schedule 11.06.2016    source источник
comment
Какой именно пакет вы установили?   -  person skyline75489    schedule 11.06.2016
comment
Пожалуйста, опубликуйте полную трассировку   -  person gaganso    schedule 11.06.2016
comment
Спасибо добавил трассировку   -  person mbudge    schedule 11.06.2016


Ответы (1)


Проблема в самой библиотеке, в частности PySocks socks.py, inet_pton доступен только в Unix:

socket.inet_pton(address_family, ip_string)

Преобразование IP-адреса из строкового формата, характерного для семейства, в упакованный двоичный формат. inet_pton() полезен, когда библиотека или сетевой протокол вызывает объект типа struct in_addr (аналогично inet_aton()) или struct in6_addr.

Поддерживаемые значения для address_family в настоящее время: AF_INET и AF_INET6. Если строка IP-адреса ip_string недействительна, будет вызвана ошибка socket.error. Обратите внимание, что правильность зависит как от значения address_family, так и от базовой реализации inet_pton().

Доступность: Unix (возможно, не все платформы).

Один из способов обхода — установить win_inet_pton и импортировать его в свой скрипт. Этот метод будет автоматически добавлен в библиотека сокетов.

person Padraic Cunningham    schedule 11.06.2016