Аутентификация Python urllib2 HTTPS и прокси NTLM

urllib2, похоже, не поддерживает HTTPS с аутентификацией прокси в целом, даже меньше с аутентификацией NTLM. Кто-нибудь знает, есть ли патч где-то для HTTPS на прокси с аутентификацией NTLM.

с уважением,

Лорен

3 ответов


поздний ответ. Urllib2 не поддерживает проксирование NTLM, но pycurl из делает. Отрывок:

self._connection = pycurl.Curl()
self._connection.setopt(pycurl.PROXY, PROXY_HOST)
self._connection.setopt(pycurl.PROXYPORT, PROXY_PORT)
self._connection.setopt(pycurl.PROXYUSERPWD,
                        "%s:%s" % (PROXY_USER, PROXY_PASS))
...

http://code.google.com/p/python-ntlm/

Я никогда не пробовал с HTTPS, но я думаю, что это должно работать.

EDIT: если вы используете туннелирование SSL, аутентификация прокси-сервера-плохая идея.

прокси с использованием базовой аутентификации по HTTPS не является безопасным, когда SSL туннелируется. Ваш пароль будет отправлен в clear (base64-encoded) прокси. Многие люди предполагают, что пароль будет зашифрован внутри SSL. В данном случае это не так.

Это почти невозможно поддерживать другие зашифрованные или хэшированные механизмы, такие как Digest/NTLM, потому что все они требуют согласования (несколько обменов), и это не определено в протоколе CONNECT. Это согласование происходит из диапазона HTTP-соединения. Это очень сложно реализовать в прокси / браузере.

Если это корпоративный прокси, IP ACL является единственным безопасным решением.


хороший рецепт (для HTTPS w/proxy) и обсуждение здесь, должно быть возможно объединить это с кодом python-nltm, который @ZZ уже предложил.