Python urllib2> HTTP-прокси> запрос HTTPS

Эта работа прекрасна:

import urllib2 opener = urllib2.build_opener( urllib2.HTTPHandler(), urllib2.HTTPSHandler(), urllib2.ProxyHandler({'http': 'http://user:pass@proxy:3128'})) urllib2.install_opener(opener) print urllib2.urlopen('http://www.google.com').read() 

Но, если http изменится на https :

  • Python отправляет электронное письмо за прокси-сервер
  • DNS через прокси?
  • Использование pip за прокси-сервером
  • Python - Twisted, Proxy и изменение содержимого
  • Выполнение HTTP-запросов через модуль запросов Python не работает через прокси-сервер, где работает curl? Зачем?
  • Как заставить pip работать за прокси-сервером
  •  ... print urllib2.urlopen('https://www.google.com').read() 

    Есть ошибки:

     Traceback (most recent call last): File "D:\Temp\6\tmp.py", line 13, in <module> print urllib2.urlopen('https://www.google.com').read() File "C:\Python26\lib\urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "C:\Python26\lib\urllib2.py", line 389, in open response = self._open(req, data) File "C:\Python26\lib\urllib2.py", line 407, in _open '_open', req) File "C:\Python26\lib\urllib2.py", line 367, in _call_chain result = func(*args) File "C:\Python26\lib\urllib2.py", line 1154, in https_open return self.do_open(httplib.HTTPSConnection, req) File "C:\Python26\lib\urllib2.py", line 1121, in do_open raise URLError(err) URLError: <urlopen error [Errno 10060] 

    Почему и как решить эту проблему?

  • Запрос SOAP SOAP для Python для службы https 401
  • Python - Twisted, Proxy и изменение содержимого
  • Как я могу увидеть весь HTTP-запрос, который отправляется моим приложением Python?
  • Использование pip за прокси-сервером
  • Преобразование HTTP-прокси в HTTPS-прокси в Twisted
  • Python urllib2 HTTPS и прокси-аутентификация NTLM
  • 3 Solutions collect form web for “Python urllib2> HTTP-прокси> запрос HTTPS”

    Измените эту строку:

     urllib2.ProxyHandler({'http': 'http://user:pass@proxy:3128'})) 

    к этому:

     urllib2.ProxyHandler({'https': 'http://user:pass@proxy:3128'})) 

    Он отлично работает для меня.

    В Windows errno 10060 является ошибкой winsock, означающей время ожидания соединения. Вы можете достичь https://www.google.com с того же компьютера с помощью веб-браузера с прокси-сервером, установленным на http: // user: pass @ proxy: 3128 ? Вы уверены, что ваш прокси-сервер может обрабатывать как https, так и http на одном и том же порту?

    В документации для urllib2 говорится следующее:

    Примечание. В настоящее время urllib2 не поддерживает выборку https-адресов через прокси-сервер. Однако это можно активировать, расширив urllib2, как показано в этом рецепте .

    Я должен признать, что выше рецепт не работал сразу для Jython 2.5.3, но я все еще пытаюсь.

    UPDATE : я применил этот патч к Jython 2.5.3, и он работал для меня. Теперь я могу получить ресурсы HTTPS через прокси-сервер.

    UPDATE2 : Вот код для запроса ресурсов HTTPS с базовой проверкой подлинности через HTTP-прокси (НЕ ЗАБЫВАЙТЕ УСТАНОВИТЬ ПУТЬ ПЕРВЫЙ (см. Предыдущее обновление)):

     from suds.client import Client from suds.transport.https import HttpAuthenticated credentials = dict(username='...', password='...', proxy={'https': 'host:port', 'http': 'host:port'}) t = HttpAuthenticated(**credentials) url = 'https://example.com/service?wsdl' client = Client(url, transport=t) print client.service.getFoo() 
    Python - лучший язык программирования в мире.