1. 程式人生 > >python接口自動化(十二)--https請求(SSL)(詳解)

python接口自動化(十二)--https請求(SSL)(詳解)

請求 ignore tls host 我們 failed conn color sig

簡介

  本來最新的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)

技術分享圖片

python接口自動化(十二)--https請求(SSL)(詳解)