簡介
本來最新的requests庫V2.13.0是支持https請求的,但是一般寫腳本時候,我們會用抓包工具fiddler,這時候會 報:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
小編環境:
python:3.7
requests:2.21.0
fiddler:v5.0.20
python & requests:
Fiddler:
一、SSL問題
1、在你不啟用fiddler時,python代碼直接發送https請求,不會有SSL問題(也就是說不想看到SSL問題,關掉fiddler就行)
2、啟動fiddler抓包,會出現這個錯誤:
requests.exceptions.SSLError: HTTPSConnectionPool(host='passport.cnblogs.com', port=443): Max retries exceeded with url: /user/signin (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))
二、verify參數設置
1、Requests的請求默認verify=True
2、如果你將 verify設置為 False,Requests 也能忽略對 SSL 證書的驗證
3、但是依然會出現兩行Warning,可以不用管
三、忽略Warning
有些小伙伴有強迫症看到紅色的心里就發慌,這里加兩行代碼可以忽略掉警告,眼不見為凈!
Python2添加如下代碼即可解決:
1 from requests.packages.urllib3.exceptions import InsecureRequestWarning 2 # 禁用安全請求警告 3 requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
Python3添加如下三種任意一種代碼即可解決:
1 1、requests.packages.urllib3.disable_warnings() 2 3 2、import warnings 4 warnings.filterwarnings("ignore") 5 6 3、import urllib3 7 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)