Я пытаюсь взаимодействовать с API из моей оболочки Python 2.7, используя пакет, который опирается на запросы Python. Вещь - это удаленный адрес, заблокированный моей сетью (университетская библиотека).
Итак, чтобы поговорить с API, я делаю следующее:
~$ ssh -D 8080 [email protected]
И затем, в новом терминале, на локальном компьютере:
~$ export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080
Затем я запускаю программу в консоли Python, но не удается:
~$ python
>>> import myscript
>>> id = '1213'
>>> token = 'jd87jd9'
>>> connect(id,token)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 518, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 370, in send
conn = self.get_connection(request.url, proxies)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 273, in get_connection
proxy_manager = self.proxy_manager_for(proxy)
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 169, in proxy_manager_for
**proxy_kwargs
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 43, in SOCKSProxyManager
raise InvalidSchema("Missing dependencies for SOCKS support.")
requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.
Этот отрывок из module.py просит модуль:
> try:
> from .packages.urllib3.contrib.socks import SOCKSProxyManager except ImportError:
> def SOCKSProxyManager(*args, **kwargs):
> raise InvalidSchema("Missing dependencies for SOCKS support.")
Теперь проблема возникает в urllib3 SOCKSProxyManager.
Итак, я читал, что вы можете использовать SOCKSProxyManager с SOCKS5, если у вас установлена PySocks, или вы используете pip install urllib3 [socks]
Увы, я пробовал как PySocks, так и urllib3 с носками без каких-либо успехов.
Любая идея другого обходного пути?
EDIT:
Я также попробовал запросы на установку пакетов [socks] (которые запрашивают поддержку 2.10.0 с поддержкой Socks), и я получаю следующее:
File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 467, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='api-server.com', port=443): Max retries exceeded with url: /auth (Caused by NewConnectionError('<requests.packages.urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x95c7ccc>: Failed to establish a new connection: SOCKS5 proxy server sent invalid data',))