我正在尝试向现有脚本添加身份验证代理支持,因为它是脚本连接到 https url(使用 urllib2.Request 和 urllib2.urlopen),抓取页面并根据它找到的内容执行一些操作。最初我希望这会像简单地将 urllib2.ProxyHandler({"http": MY_PROXY}) 作为 arg 添加到 urllib2.build_opener 一样简单,然后将其传递给 urllib2.install_opener。不幸的是,这在尝试执行 urllib2.Request(ANY_HTTPS_PAGE) 时似乎不起作用。谷歌搜索让我相信 python 2.5 中 urllib2 中的代理支持不支持 https url。至少可以说这让我感到惊讶。
网上似乎有一些解决方案,例如http://bugs.python.org/issue1424152包含一个补丁urllib2
,httplib
旨在解决这个问题(当我尝试这个问题时,我开始收到以下错误:urllib2.URLError: <urlopen error (1, 'error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol')>
)。这里有一个食谱食谱http://code.activestate.com/recipes/456195我打算接下来尝试。总而言之,虽然我很惊讶这不支持“开箱即用”,这让我想知道我是否只是错过了一个明显的解决方案,所以简而言之 - 有没有人有一个简单的方法来获取 https 页面在 Python 2.5 中使用带有 urllib2 的身份验证代理?理想情况下,这将起作用:
import urllib2
#perhaps the dictionary below needs a corresponding "https" entry?
#That doesn't seem to work out of the box.
proxy_handler = urllib2.ProxyHandler({"http": "http://user:pass@myproxy:port"})
urllib2.install_opener( urllib2.build_opener( urllib2.HTTPHandler,
urllib2.HTTPSHandler,
proxy_handler ))
request = urllib2.Request(A_HTTPS_URL)
response = urllib2.urlopen( request)
print response.read()
非常感谢