作过接口测试的都会发现,如今的接口都是HTTPS协议了,今天就写一篇如何经过request发送https请求,若是不是很了解HTTP协议的同窗能够看下个人另一篇博客什么是HTTPhtml
HTTPS 的全称是Hyper Text Transfer Protocol over Secure Socket Layer ,是以安全为目标的HTTP通道,简单的讲是HTTP的安全版本,即HTTP下加入SSL层,简称HTTPS浏览器
其中HTTPS的安全基础为SSL,所以经过它的传输的内容都是通过SSL加密的,它的主要做用能够分为两种:安全
一、创建一个信息安全通道来保证数据传输的安全app
二、确保网站的真实性,凡是使用了HTTPS 的网站,均可以经过点击浏览器地址栏的锁头标志来查看网站认证以后的真实信息。测试
1.requests发送请求网站
2.携带请求头发送https加密
# coding:utf-8 import requests # 请求地址 url = "https://www.qlchat.com" headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chro' 'me/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400' } r = requests.get(url,headers=headers) print(r.status_code) 代码结果: 错误提示:requests.exceptions.SSLError: HTTPSConnectionPool(host='www.qlchat.com', port=443)
发现请求后代码出现了报错,发现是SSL的问题。url
requests中是有SSL证书认证的,SSL像默认浏览器同样,SSL 验证默认是开启的,若是证书验证失败,Requests 会抛出 SSLError,若是证书验证失败的时候加上verify=Falsespa
源码:code
def request(method, url, **kwargs): """Constructs and sends a :class:`Request <Request>`. :type allow_redirects: bool :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. 代码太多了,删除了一些
回到上面的代码,加入verify=False再次请求,会发现请求成功,可是会报一行安全错误,
# coding:utf-8 import requests # 请求地址 url = "https://www.qlchat.com" headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chro' 'me/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400' } r = requests.get(url,headers=headers,verify=False) print(r.status_code)
解决上图报错。导入urllib3模块,引入urllib3.disable_warnings()方法
再次请求就会发现报错没有了
感受对你有帮助,或者喜欢的小伙伴们,点个关注,持续更新,让咱们在测试的道路上更加精彩