Я пытаюсь добавить поддержку аутентификации прокси к существующему сценарию, так как он подключается к URL-адресу https (с urllib2.Request и urllib2.urlopen), очищает страницу и выполняет некоторые действия в зависимости от того, что у него есть. найденный. Изначально я надеялся, что это будет так же просто, как просто добавить urllib2.ProxyHandler ({"http": MY_PROXY}) в качестве аргумента для urllib2.build_opener, который, в свою очередь, передается в urllib2.install_opener. К сожалению, это не работает при попытке сделать urllib2.Request (ANY_HTTPS_PAGE). Поиск в интернете позволяет мне полагать, что поддержка прокси в urllib2 в python 2.5 не поддерживает https URL. Это удивило меня, если не сказать больше.
Похоже, что решения, плавающие в Интернете, например, http://bugs.python.org/issue1424152 содержит патч для urllib2
и httplib
, который предназначен для решения проблемы (когда я попробовал эту проблему, я начал получать вместо этого следующая ошибка: urllib2.URLError: <urlopen error (1, 'error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol')>
). Здесь есть рецепт поваренной книги http://code.activestate.com/recipes/456195, который я планирую попробовать дальше. В целом, хотя я удивлен, что это не поддерживается "из коробки", что заставляет меня задуматься, не упускаю ли я очевидные решения, иными словами - есть ли у кого-нибудь простой способ для получения https-страниц использовать аутентифицирующий прокси с urllib2 в Python 2.5? В идеале это будет работать:
import urllib2
#perhaps the dictionary below needs a corresponding "https" entry?
#That doesn't seem to work out of the box.
proxy_handler = urllib2.ProxyHandler({"http": "http://user:pass@myproxy:port"})
urllib2.install_opener( urllib2.build_opener( urllib2.HTTPHandler,
urllib2.HTTPSHandler,
proxy_handler ))
request = urllib2.Request(A_HTTPS_URL)
response = urllib2.urlopen( request)
print response.read()
Большое спасибо