Python接口自动化--SSL 3

Posted 小女子的测试之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python接口自动化--SSL 3相关的知识,希望对你有一定的参考价值。

官方文档参考地址:

https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

针对SSL Warnings,urllib3根据不同级别的证书校验有不同级别的警告,针对这些不同的场景有以下几种不同的解决办法

1.不安全的请求警告

  当在没有启用证书验证的情况下对HTTPS URL进行请求时,就会发生这种情况。解决办法如下:

  参考官方地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl

  urllib3没有对HTPPS请求做校验,为了启用证书验证,需要安装一组root证书,最简单也最现实的实现方法是用certifi包,包含Mozilla的root证书包

  安装方式:1)、pip install certifi  或者 2)、pip install urllib3[secure]

  安装好后,当发送请求时,可以通过创建PoolManager进行证书验证

# _*_ encoding:utf-8 _*_

import requests
import urllib3
import certifi

http = urllib3.PoolManager(
    cert_reqs = CERT_REQUIRED,
    ca_certs = certifi.where()
)
#无异常
http.request(GET,https://www.baidu.com/)

#有异常
http.request(GET,https://expired.badssl.com)
#urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘expired.badssl.com‘, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)‘),))

#报错如下
r = requests.get(https://www.baidu.com/)
#requests.exceptions.SSLError: HTTPSConnectionPool(host=‘www.baidu.com‘, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1,
u‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)‘),))

 

2、不安全的平台警告

  这种情况发生在具有过时ssl模块的Python 2平台上。这些旧的ssl模块可能会导致一些不安全的请求,从而在它们失败的地方获得成功,并在它们应该成功的地方请求失败。遵循pyOpenSSL指南来解决这个警告。

  官方文档参考地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2

  pyOpenSSL官方地址:https://pyopenssl.readthedocs.io/en/latest/

3、SNIMissingWarning

  这发生在Python 2版本上,比2.7.9大。这些老版本缺少SNI的支持。这可能导致服务器显示客户认为无效的证书。遵循pyOpenSSL指南来解决这个警告。

 

注:如果在确认该HTTPS请求是安全的,可以访问时,可以通过以下方法取消警告

import urllib3
urllib3.disable_warnings()
#同时可以通过以下方式抓取日志
logging.captureWarnings(True)

 

 




以上是关于Python接口自动化--SSL 3的主要内容,如果未能解决你的问题,请参考以下文章

python自动化接口自动化:3.接口自动化测试框架理论

Python Api接口自动化测试框架 代码写用例

Python接口测试实战3(上)- Python操作数据库

Python接口测试实战3(上)- Python操作数据库

python 用于在终端中运行的sublime text 3的简单代码片段制作工具

python常用代码