Python urllib2:https通过http代理发送到目标

Python urllib2:https通过http代理发送到目标,python,https,proxy,urllib2,Python,Https,Proxy,Urllib2,我使用代理服务器连接到多个目标服务器。一些目标服务器需要http,其他服务器需要https。我的http请求工作顺利,但urllib2忽略https请求上的代理处理程序,并将请求直接发送到目标服务器 我尝试了许多不同的方法,但这里有一个相当简洁的尝试: import urllib2 cookie_handler = urllib2.HTTPCookieProcessor (cookielib.LWPCookieJar()) proxies = {'http': 'http://123.456.7

我使用代理服务器连接到多个目标服务器。一些目标服务器需要http,其他服务器需要https。我的http请求工作顺利,但urllib2忽略https请求上的代理处理程序,并将请求直接发送到目标服务器

我尝试了许多不同的方法,但这里有一个相当简洁的尝试:

import urllib2
cookie_handler = urllib2.HTTPCookieProcessor (cookielib.LWPCookieJar())
proxies = {'http': 'http://123.456.78.9/',
           'https': 'http://123.45.78.9/'}
proxy_handler = urllib2.ProxyHandler (proxies)
url_opener = urllib2.build_opener (proxy_handler, cookie_handler)
request = urllib2.Request ('https://example.com')
response = url_opener.open (request)
据我所知,自Python 2.6.3以来,urllib2已经能够向代理服务器发送https请求,但我似乎无法让它正常工作。我用的是2.7.3

谢谢你提供的任何建议


更新:上面的代码确实有效。当我问这个问题时,我不确定为什么它不起作用。最有可能的是,我在https代理URL中输入了一个错误。

您是如何确定代理未被使用的?我刚刚尝试了您的示例代码,将其作为代理指向一个
nc
实例,并看到了一个
connectexample.com:443http/1.0
请求。您最好尝试使用库执行此操作。你试过了吗?James,我用WireShark查看实际流量,看看代理处理程序是否正常工作。我可以通过传出消息的目标IP地址判断它们是发送到代理还是最终收件人。jdotjdot,最初我使用请求作为http客户端,但是我不得不用urllib2替换它,因为我在管理连接池时遇到了问题。我认为这是因为
https
的代理使用HTTP(即没有SSL)。调试时,我看到代码尝试与代理建立SSL连接(使用
httplib.HTTPSConnection
)。