一般来说,urllib2 似乎不支持带有代理身份验证的 HTTPS,更不支持 NTLM 身份验证。任何人都知道是否有针对具有 NTLM 身份验证的代理上的 HTTPS 的补丁。
问候,
洛朗
一般来说,urllib2 似乎不支持带有代理身份验证的 HTTPS,更不支持 NTLM 身份验证。任何人都知道是否有针对具有 NTLM 身份验证的代理上的 HTTPS 的补丁。
问候,
洛朗
迟回复。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,但我认为它应该可以工作。
编辑:如果您使用 SSL 隧道,代理身份验证是个坏主意。
当 SSL 建立隧道时,使用基于 HTTPS 的基本身份验证的代理不安全。您的密码将以明文(Base64 编码)形式发送到代理。很多人认为密码将在 SSL 中加密。在这种情况下,情况并非如此。
几乎不可能支持其他加密或散列机制,如 Digest/NTLM,因为它们都需要协商(多次交换),而 CONNECT 协议中没有定义。这种协商发生在 HTTP 连接的带外。在代理/浏览器中也很难实现。
如果这是一个企业代理,IP ACL 是唯一安全的解决方案。
很好的配方(用于 HTTPS w/proxy)和讨论here,应该可以将它与 @ZZ 已经建议的 python-nltm 代码融合在一起。