3

我正在尝试向现有脚本添加身份验证代理支持,因为它是脚本连接到 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包含一个补丁urllib2httplib旨在解决这个问题(当我尝试这个问题时,我开始收到以下错误: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()

非常感谢

4

1 回答 1

1

您可能想查看httplib2如果安装了socks模块,其中一个示例声称支持 SOCKS 代理。

于 2009-07-20T11:36:22.807 回答