简介

  本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

小编环境:
python:3.7

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

requests:2.21.0

fiddler:v5.0.20

python & requests:

 python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第1张

Fiddler:

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第2张

一、SSL问题

1、在你不启用fiddler时,python代码直接发送https请求,不会有SSL问题(也就是说不想看到SSL问题,关掉fiddler就行)

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第3张

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')])")))

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第4张

二、verify参数设置

1、Requests的请求默认verify=True

2、如果你将 verify设置为 False,Requests 也能忽略对 SSL 证书的验证

3、但是依然会出现两行Warning,可以不用管

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第5张

三、忽略Warning

  有些小伙伴有强迫症看到红色的心里就发慌,这里加两行代码可以忽略掉警告,眼不见为净!

 Python2添加如下代码即可解决:

1 from requests.packages.urllib3.exceptions import InsecureRequestWarning
2 # 禁用安全请求警告
3 requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

Python3添加如下三种任意一种代码即可解决:

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第6张
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)(详解)(转载) 随笔 第7张

python接口自动化(十二)--https请求(SSL)(详解)(转载) 随笔 第8张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄