Python urllib2 HTTPS和代理NTLM身份验证

时间:2009-09-26 15:03:42

标签: python authentication proxy https ntlm

urllib2似乎一般不支持使用代理身份验证的HTTPS,甚至更少使用NTLM身份验证。任何人都知道在使用NTLM身份验证的代理服务器上是否存在HTTPS补丁。

此致

劳伦

3 个答案:

答案 0 :(得分:6)

迟到的回复。 Urllib2不支持NTLM代理,但pycurl支持NTLM代理。摘录:

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

答案 1 :(得分:2)

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

我从未尝试使用HTTPS,但我认为它应该可行。

编辑:如果您使用的是SSL隧道,则代理身份验证不是一个好主意。

通过隧道传输SSL时,使用基本身份验证通过HTTPS的代理是不安全的。您的密码将以明文(Base64编码)发送给代理。很多人认为密码将在SSL内部加密。在这种情况下并非如此。

几乎不可能支持像Digest / NTLM这样的其他加密或散列机制,因为它们都需要协商(多次交换)并且没有在CONNECT协议中定义。此协商发生在HTTP连接的带外。在代理/浏览器中也很难实现。

如果这是企业代理,则IP ACL是唯一安全的解决方案。

答案 2 :(得分:1)

良好的配方(对于HTTPS w / proxy)和讨论here,应该可以使用@ZZ已经建议的python-nltm代码来融合它。