Есть локальная машина (которая выход к к интернету имеет через прокси). Прокси работает без логина/пароля, просто фильтрует контент. Настройки ее работы и прочие подробности мне неизвестны.
В случае необходимости обращения к интернет (и интранет) ресурсам, чтобы не получать urlib.HTTPError: HTTP Error 407: Proxy Authentication Required питоновские скрипты используют простенький обработчик:
proxy_support = urllib2.ProxyHandler({}) opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener)
С HTTPS сайтами все работает не хуже HTTP.
Не так давно поставил на локальной машине Oracle VM VirtualBox c Debian+Apache, сеть через bridget adapter, на виртуалке развернул несколько WSGI приложений (Django и чисто питоновских, без фреймворков). Есть необходимость общаться с
Из браузера работают без проблем. Пока ресурсы допускали обращение по HTTP, то из питона проблем не возникает. Но если попытаться обратиться из питона по HTTPS, проблемы сыпятся, как горох.
Ключи/сертификаты SSL на виртуалке созданы рукотворно и, разумеется, не подписаны http://help.ubuntu.ru/wiki/apache_%D0%B8_https . При обращении по HTTPS начинают падать ошибки urllib2.URLError: certificate verify failed (_ssl.c:590)
Ситуация эта нормальная (хотя до этого ни разу, в том числе и с неподписанными сертификатами не возникала), и описана в PEP476 https://www.python.org/dev/peps/pep-0476/ Там же приведено и решение проблемы:
import ssl context = ssl._create_unverified_context() urllib.urlopen("https://no-valid-cert", context=context)
Вот только если его использовать, то начинают падать ошибки urllib2.URLError:
Tunnel connection failed: 407 Proxy Authentication Required
То же самое, если предварительно использовать urllib2.Request, или вообще воспользоваться библиотекой requests.
Есть какие-нибудь идеи?
Спасибо.