【问题标题】:Is it possible to fetch a https page via an authenticating proxy with urllib2 in Python 2.5?是否可以通过 Python 2.5 中带有 urllib2 的身份验证代理来获取 https 页面?
【发布时间】:2009-07-20 11:20:31
【问题描述】:

我正在尝试将身份验证代理支持添加到现有脚本,因为它是脚本连接到 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()

非常感谢

【问题讨论】:

    标签: python proxy https urllib2


    【解决方案1】:

    您可能想查看httplib2。如果安装了socks 模块,examples 之一声称支持 SOCKS 代理。

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多