Выполнение HTTP-запросов через модуль Python Requests не работает через прокси там, где работает curl? Почему?

Используя эту команду curl, я могу получить ответ, который я ищу из Bash

curl -v -u z:secret_key --proxy http://proxy.net:80  \
-H "Content-Type: application/json" https://service.com/data.json

Я уже видел другую статью о прокси с модулем Requests

И она помогла мне сформулировать мой код на Python, но мне нужно сделать запрос через прокси. Однако даже при указании правильных прокси это не работает. Возможно, я просто чего-то не вижу?

>>> requests.request('GET', 'https://service.com/data.json', \
>>> headers={'Content-Type':'application/json'}, \ 
>>> proxies = {'http' : "http://proxy.net:80",'https':'http://proxy.net:80'}, \
>>> auth=('z', 'secret_key'))

Более того, в той же консоли python я могу использовать urllib, чтобы сделать запрос, и он будет успешным.

>>> import urllib
>>> urllib.urlopen("http://www.httpbin.org").read()
---results---

Даже попытки запросов на не-https-адреса не работают.

>>> requests.get('http://www.httpbin.org')
Traceback (most recent call last):
File "", line 1, in 
File "/Library/Python/2.6/site-packages/requests/api.py", line 79, in get
   return request('get', url, **kwargs)
File "/Library/Python/2.6/site-packages/requests/api.py", line 66, in request
    prefetch=prefetch
File "/Library/Python/2.6/site-packages/requests/sessions.py", line 191, in request
    r.send(prefetch=prefetch)
File "/Library/Python/2.6/site-packages/requests/models.py", line 454, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: Max retries exceeded for url:

Requests настолько элегантен и удивителен, но как он может быть неудачным в данном случае?

11
задан Community 23 May 2017 в 11:51
поделиться