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:

...
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]

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

10
задан Stanislav 28 May 2010 в 09:20
поделиться

2 ответа

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

1
ответ дан 3 December 2019 в 20:02
поделиться

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

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

на эту:

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

У меня все работает нормально.

17
ответ дан 3 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: