我正在嘗試向現有腳本添加身份驗證代理支持,因爲它是連接到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。這讓我很驚訝,至少可以說。是否可以通過Python 2.5中的urllib2驗證代理來獲取https頁面?
似乎有浮動各地的網絡解決方案,例如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:[email protected]: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()
非常感謝