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/
这发生在Python 2版本上,比2.7.9大。这些老版本缺少SNI的支持。这可能导致服务器显示客户认为无效的证书。遵循pyOpenSSL指南来解决这个警告。
注:如果在确认该HTTPS请求是安全的,可以访问时,可以通过以下方法取消警告
import urllib3
urllib3.disable_warnings()
#同时可以通过以下方式抓取日志
logging.captureWarnings(True)
Python接口自动化--SSL 3的更多相关文章
- python接口自动化9-https请求(SSL)
前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [S ...
- Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要
1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- python接口自动化-Cookie_绕过验证码登录
前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)
前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
随机推荐
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,W ...
- Tomcat7.0安装配置详细(图文)
说明:Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等Tomca ...
- c# 导出text 文本文件
/// <summary> /// 机构代码信息 /// </summary> public static void ExportT_XQJBQK_SLGAJGDM(DataT ...
- linux 安装mysql8.0
linux下安装mysql8.0 下载mysql $ wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.4 ...
- Java基础——网络编程(一)
本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...
- Cuckoo for Hashing(hash)hunnuoj
Problem B:Cuckoo for HashingAn integer hash table is a data structure that supports insert, delete a ...
- crontab -让服务器执行定时任务
1.启动服务 一般启动服务用 "/sbin/service crond start"就可以了,如果是root用户就是 "sudo service crond start& ...
- js-ES6学习笔记-Class(6)
1.类相当于实例的原型,所有在类中定义的方法,都会被实例继承.如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”. 2.父类的静态方法,可 ...
- css选取table元素的第一列
table tr td:first-child
- C3p0 的一个异常
转的,异常如下: NewPooledConnection - com.mchange.v2.c3p0.impl.NewPooledConnection@1285252 closed by a clie ...