从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中吗?
答案 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/
(它还支持验证服务器证书。)