錯誤資訊如下:
requests.exceptions.sslerror: ("bad handshake: error([('ssl routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)
#方法一import requests
from bs4 import beautifulsoup
url = ''
req = requests.get(url,verify=false)
req.encoding = 'utf-8'
soup = beautifulsoup(req.text,'lxml')
print(soup)
ssl._create_default_https_context = ssl._create_unverified_context#注意用了這個就不能用requests了,得用urllib2.request
完整**如下:
經過大半年之後我又回到了爬蟲:對於咱們上面兩個方法我又發現了乙個好的ssl證書驗證的方法:加引數:verify=false
完整**如下:
#ssl證書驗證import requests
response = requests.get('', verify=false)
print(response.status_code)
不過我們發現報了乙個警告,它建議我們給它指定證書。我們可以通過設定忽略警告的方式來遮蔽這個警告:
import requestsfrom requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('', verify=false)
print(response.status_code)
或者通過捕獲警告到日誌的方式忽略警告:
import loggingimport requests
logging.capturewarnings(true)
response = requests.get('', verify=false)
print(response.status_code)
如果我上面三種方法還不能解決你ssl的錯誤的話,請重新安裝requests:
pip install requests==2.6.0
pip install requests==2.7.0
再次執行成功。
import requestsreq = requests.get('',verify=false)
print(req.text)
使用cloudflare後的ssl證書問題
2 您的 訪問者和cloudflare之間有加密連線,但是從cloudflare到您的伺服器沒有加密。即半程加密。優點在於 你的 不需要ssl證書,使用者也能實現ssl加密訪問。確保你的伺服器沒有ssl證書,否則使用該模式會導致不斷重定向的問題。3 全程加密,即從你的 到cdn伺服器再到使用者,全程...
證書鏈 證書校驗
回到證書鏈,在證書認證過程中,由於校驗方,通常為瀏覽器中,繼承的是權威ca機構的根證書,因此對於一些經授權的中間證書,瀏覽器卻識別不了 當然也有部分中間證書可以被識別 因此仔部署https 時,需要構建正確的證書鏈,告訴驗證方,該伺服器證書和它的簽署機構,以及根證書 權威ca機構 之間的關係。在證書...
理解證書和證書鏈
證書和證書鏈 最近一直在研究的東東,這東西說到底,也是依賴於乙個前提 root 證書,所以說很多安全說最終也是個偽命題 只是搞理論的人喜歡 把東西搞複雜,亂扯概念,不講本質。1.簡單來說,end user證書上面幾級證書都是為了保證end user證書未被篡改,保證是ca簽發的合法證書,進而保證en...