Python HTTPS客户端,通过代理进行基本身份验证

时间:2009-09-21 07:35:49

标签: python proxy https basic-authentication

从Python,我想通过HTTPS通过基本身份验证从网站检索内容。我需要磁盘上的内容。我在内联网上,信任HTTPS服务器。平台是Windows上的Python 2.6.2。

我一直在玩urllib2,但到目前为止没有成功。

我有一个运行的解决方案,通过os.system()调用wget:

wget_cmd = r'\path\to\wget.exe -q -e "https_proxy = http://fqdn.to.proxy:port" --no-check-certificate --http-user="username" --http-password="password" -O path\to\output https://fqdn.to.site/content'

我想摆脱os.system()。这可能在Python中吗?

3 个答案:

答案 0 :(得分:3)

试试这个(请注意,您还必须填写服务器的领域):

import urllib2
authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password(realm='Fill In Realm Here',
                      uri='https://fqdn.to.site/content',
                      user='username',
                      passwd='password')
proxy_support = urllib2.ProxyHandler({"https" : "http://fqdn.to.proxy:port"})
opener = urllib2.build_opener(proxy_support, authinfo)
fp = opener.open("https://fqdn.to.site/content")
open(r"path\to\output", "wb").write(fp.read())

答案 1 :(得分:3)

代理和https与urllib2无法正常工作for a long time。它将在下一个发布的python 2.6版本(v2.6.3)中修复。

与此同时,您可以重新实现正确的支持,这就是我们为mercurial所做的:http://hg.intevation.org/mercurial/crew/rev/59acb9c7d90f

答案 2 :(得分:0)

您也可以尝试这样做:    http://code.google.com/p/python-httpclient/

(它还支持验证服务器证书。)