在Python 2.6.1支持代理通过HTTPS
在Python 2.6.1支持代理是否urllib2通过https是否urllib2的?在Python 2.6.1支持代理通过HTTPS
我发现在http://www.voidspace.org.uk/python/articles/urllib2.shtml如下:
NOTE
Currently urllib2 does not support fetching of https locations through a proxy. This can be a problem.
我试图在以网站和下载文件自动登录,我有有效的用户名/密码。
proxy_info = {
'host':"axxx", # commented out the real data
'port':"1234" # commented out the real data
}
proxy_handler = urllib2.ProxyHandler(
{"http" : "http://%(host)s:%(port)s" % proxy_info})
opener = urllib2.build_opener(proxy_handler,
urllib2.HTTPHandler(debuglevel=1),urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
fullurl = 'https://correct.url.to.login.page.com/user=a&pswd=b' # example
req1 = urllib2.Request(url=fullurl, headers=headers)
response = urllib2.urlopen(req1)
我已经受够了工作,类似网页,但不使用HTTPS,我怀疑它不通过代理获得 - 它只是卡住以同样的方式,当我不指定代理。我需要通过代理出去。
我需要验证,但是不使用基本身份验证,将urllib2的弄清楚认证通过https网站去当(我通过URL到网站提供的用户名/密码)?
编辑: 不,我
proxies = {
"http" : "http://%(host)s:%(port)s" % proxy_info,
"https" : "https://%(host)s:%(port)s" % proxy_info
}
proxy_handler = urllib2.ProxyHandler(proxies)
测试,我得到错误:
urllib2.URLError: urlopen error [Errno 8] _ssl.c:480: EOF occurred in violation of protocol
我不知道迈克尔Foord的文章,你们报,被更新到Python 2.6。 1 - 为什么不试一试?不是告诉ProxyHandler该代理仅用于HTTP好,你现在做的,它注册为HTTPS,太(当然你应该把它你打电话ProxyHandler,只是反复使用该变量在之前格式化为一个变量只有一次字典),可能会或可能无法正常工作,但是,你甚至没有尝试,这是肯定没有工作 - )
柜面任何人对未来有这个问题,我想!指出,它不支持HTTPS进行代理现在,确保代理支持太否则你可能运行到这把Python库陷入无限循环的错误(这发生在我身上)。
查看在被测试HTTPS进行代理进一步的信息支持蟒源的单元测试: http://svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203
+1感谢您的信息 – stefanB 2009-12-09 03:48:37
+1链接到python源中的unittest – charmoniumQ 2013-10-27 19:34:02
固定在Python 2.6.3和其他几个分支:
- _bugs。 python.org/issue1424152(用_替换_ ...)
-
http://www.python.org/download/releases/2.6.3/NEWS.txt
问题#1424152:修复了httplib,urllib2在通过 代理进行工作时支持SSL的问题。由克里斯托弗李原创补丁,由Senthil Kumaran所作的修改。
+1感谢您的信息 – stefanB 2010-10-07 05:02:42
啊哈,我知道了:)让我试试(顺便说一句,我想通了,我需要什么,卷曲,但仍然会是不错的它在python运行) – stefanB 2009-06-23 03:04:05
不幸的是加入代理为“HTTPS”键在传递给ProxyHandler的字典中,不会解决问题,因为AFAIK不支持CONNECT HTTP方法。使用PyCurl是最简单的解决方法,但为了分发代码,在PyCurl中缺少Windows支持(或者至少易于安装)可能是一个很大的障碍。 – Tom 2010-09-22 02:38:30