更新時間:2023-09-28 來源:黑馬程序員 瀏覽量:
大多數(shù)網(wǎng)站中都加人了SSL證書,以實現(xiàn)數(shù)據(jù)信息在瀏覽器和服務器之間的加密傳輸,保證雙方傳遞信息的安全性。SSL證書是一種數(shù)字證書,類似于駕駛證、護照和營業(yè)執(zhí)照的電子副本,由受信任的數(shù)字證書頒發(fā)機構(gòu)CA在驗證服務器身份后頒發(fā),具有服務器身份驗證和數(shù)據(jù)傳輸加密功能。
當使用Requests 調(diào)用請求函數(shù)發(fā)送請求時,由于請求函數(shù)的verify參數(shù)的默認值為True.所以每次請求網(wǎng)站默認都會進行SSL證書的驗證。不過,有些網(wǎng)站可能沒有購買SSL證書,或者SSL證書失效。程序訪問這類網(wǎng)站時會因為找不到SSL證書而拋出SSLError異常。例如,使用Requests請求國家數(shù)據(jù)網(wǎng)站,具體代碼如下。
import requests
base url = 'https://data.stats.gov.cn/'
header = { 'User-Agent': 'Mozilla/5.0 (Nindows NT 6.1; Win64; x64'
'AppleWebKit/537.36 (KHTML, like Gecko)'
'Chrome/90.0.4430.212 Safar1/537.36')
# 發(fā)送GET請求
response = requests.get (base_url, headers=header)
print (response.status_code)
運行代碼,程序拋出SSLError異常,具體內(nèi)容如下。 ......
requests.exceptions.SSLError: HTTPSConnectionPool (host='data.stats.gov.cn', port=
443): Max retries exceeded with url: / (Caused by SSLError(SSLCert Verification Error(1,
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in
certificate chain (_ssl.c:1108)')))
這時需要主動關(guān)閉SSL驗證,即在調(diào)用getO函數(shù)時將verify參數(shù)設(shè)置為False,代碼如下。
C:\Users\admin\AppData\Roaming\Python\Python38\site-packages\ur11ib3\
connectionpool.py:981: InsecureRequestNarning: Unverified HTTPS request
is being made to host 'data.stata.gov.cn'. Adding certificate verification is
strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.
htmltssl-warnings
這時,如果不希望收到警告信息,則可以采用如下方式消除警告信息。
import urllib3
urllib3.disable warnings()
再次運行程序,發(fā)現(xiàn)控制臺中不再輸出上面的警告信息。