2016-12-28 50 views
0

正如我在標題中提到的,我想讀取網站的源代碼。一切工作正常,但有時我得到一個錯誤。Python:使用urllib2獲取網站源代碼(ssl問題)

錯誤

urllib2.URLError: <urlopen error [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590) 

我知道,有一個與SSL證書有問題,但我不知道如何解決它。我已經花了幾個小時來找到解決問題的方法,但直到現在我還沒有成功(我已經在ssl模塊中嘗試了幾件事情)。

我做的方式:

import urllib2 
urllib2.openurl("https://www.website.com") 

如果沒有辦法做這種東西與urllib2,是有不同的模塊,你建議?

+0

PS:我正在使用python2.7.10 – ghnome

+0

握手失敗可能是缺少SNI或舊版OpenSSL版本,它不支持較新的協議或密碼。你可能會嘗試請求庫,這取決於問題的未知原因可能會更好或失敗。如果這無助於提供有關平臺,OpenSSL版本('ssl.OPENSSL_VERSION')和目標URL的信息,以便其他人可以重現問題併爲您提供幫助。 –

+0

'OpenSSL 0.9.8zh 2016年1月14日' – ghnome

回答

0

這可能是由於服務器請求的某些ssl選項以及庫不支持的urllib2

我建議您安裝並使用request庫,因爲它提供了更多的安全軟件包和選項。

+0

我已經用請求試過了!但沒有成功! – ghnome

+0

使用'request'時會得到什麼樣的錯誤? – Aliweb

+0

這:requests.exceptions.SSLError:[SSL:SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3警報握手失敗(_ssl.c:590) – ghnome