2009-06-23 124 views
6

在Python 2.6.1支持代理是否urllib2通過https是否urllib2的?在Python 2.6.1支持代理通過HTTPS

我發現在http://www.voidspace.org.uk/python/articles/urllib2.shtml如下:

NOTE

Currently urllib2 does not support fetching of https locations through a proxy. This can be a problem.

我試圖在以網站和下載文件自動登錄,我有有效的用戶名/密碼。

proxy_info = { 
    'host':"axxx", # commented out the real data 
    'port':"1234" # commented out the real data 
} 

proxy_handler = urllib2.ProxyHandler(
       {"http" : "http://%(host)s:%(port)s" % proxy_info}) 
opener = urllib2.build_opener(proxy_handler, 
     urllib2.HTTPHandler(debuglevel=1),urllib2.HTTPCookieProcessor()) 
urllib2.install_opener(opener) 

fullurl = 'https://correct.url.to.login.page.com/user=a&pswd=b' # example 
req1 = urllib2.Request(url=fullurl, headers=headers) 
response = urllib2.urlopen(req1) 

我已經受夠了工作,類似網頁,但不使用HTTPS,我懷疑它不通過代理獲得 - 它只是卡住以同樣的方式,當我不指定代理。我需要通過代理出去。

我需要驗證,但是不使用基本身份驗證,將urllib2的弄清楚認證通過https網站去當(我通過URL到網站提供的用戶名/密碼)?

編輯: 不,我

proxies = { 
     "http" : "http://%(host)s:%(port)s" % proxy_info, 
     "https" : "https://%(host)s:%(port)s" % proxy_info 
    } 

    proxy_handler = urllib2.ProxyHandler(proxies) 

測試,我得到錯誤:

urllib2.URLError: urlopen error [Errno 8] _ssl.c:480: EOF occurred in violation of protocol

回答

3

我不知道邁克爾Foord的文章,你們報,被更新到Python 2.6。 1 - 爲什麼不試一試?不是告訴ProxyHandler該代理僅用於HTTP好,你現在做的,它註冊爲HTTPS,太(當然你應該把它你打電話ProxyHandler,只是反覆使用該變量在之前格式化爲一個變量只有一次字典),可能會或可能無法正常工作,但是,你甚至沒有嘗試,這是肯定沒有工作 - )

+0

啊哈,我知道了:)讓我試試(順便說一句,我想通了,我需要什麼,捲曲,但仍然會是不錯的它在python運行) – stefanB 2009-06-23 03:04:05

+0

不幸的是加入代理爲「HTTPS」鍵在傳遞給ProxyHandler的字典中,不會解決問題,因爲AFAIK不支持CONNECT HTTP方法。使用PyCurl是最簡單的解決方法,但爲了分發代碼,在PyCurl中缺少Windows支持(或者至少易於安裝)可能是一個很大的障礙。 – Tom 2010-09-22 02:38:30

3

櫃面任何人對未來有這個問題,我想!指出,它不支持HTTPS進行代理現在,確保代理支持太否則你可能運行到這把Python庫陷入無限循環的錯誤(這發生在我身上)。

查看在被測試HTTPS進行代理進一步的信息支持蟒源的單元測試: http://svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203

+0

+1感謝您的信息 – stefanB 2009-12-09 03:48:37

+0

+1鏈接到python源中的unittest – charmoniumQ 2013-10-27 19:34:02

6

固定在Python 2.6.3和其他幾個分支:

  • _bugs。 python.org/issue1424152(用_替換_ ...)
  • http://www.python.org/download/releases/2.6.3/NEWS.txt

    問題#1424152:修復了httplib,urllib2在通過 代理進行工作時支持SSL的問題。由克里斯托弗李原創補丁,由Senthil Kumaran所作的修改。

+0

+1感謝您的信息 – stefanB 2010-10-07 05:02:42