在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,只是反复使用该变量在之前格式化为一个变量只有一次字典),可能会或可能无法正常工作,但是,你甚至没有尝试,这是肯定没有工作 - )

+0

啊哈,我知道了:)让我试试(顺便说一句,我想通了,我需要什么,卷曲,但仍然会是不错的它在python运行) – stefanB 2009-06-23 03:04:05

+0

不幸的是加入代理为“HTTPS”键在传递给ProxyHandler的字典中,不会解决问题,因为AFAIK不支持CONNECT HTTP方法。使用PyCurl是最简单的解决方法,但为了分发代码,在PyCurl中缺少Windows支持(或者至少易于安装)可能是一个很大的障碍。 – Tom 2010-09-22 02:38:30

柜面任何人对未来有这个问题,我想!指出,它不支持HTTPS进行代理现在,确保代理支持太否则你可能运行到这把Python库陷入无限循环的错误(这发生在我身上)。

查看在被测试HTTPS进行代理进一步的信息支持蟒源的单元测试: http://svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203

+0

+1感谢您的信息 – stefanB 2009-12-09 03:48:37

+0

+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所作的修改。

+0

+1感谢您的信息 – stefanB 2010-10-07 05:02:42