2009-07-20 42 views
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。這讓我很驚訝,至少可以說。是否可以通過Python 2.5中的urllib2驗證代理來獲取https頁面?

似乎有浮動各地的網絡解決方案,例如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:[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() 

非常感謝

回答

1

你可能想看看httplib2。如果已安裝socks模塊,其中一個examples聲稱支持SOCKS代理。

相關問題