由于微信公众号推送改为了信息流的形式,防止走丢,请给加个星标 ⭐,你就可以第一时间接收到本公众号的推送!
Requests库分享系列:
Requests库(一)
Requests库(二)
Requests库(三)如何获取接口传参参数
Requests库(四)如何传递不一样的参数
Requests库(五)接口返回状态码
Requests库(六)接口返回响应头和请求COOKIEs
Requests库(七)重定向和超时
Requests(八)代理和会话对象
一个 Response 对象时,request 属性其实是使用了 PreparedRequest。有时在发送请求之前,你需要对 body 或者 header
s = Session()req = Request('GET', url, data=data, headers=header)prepped = req.prepare()# do something with prepped.body# do something with prepped.headersresp = s.send(prepped, stream=stream, verify=verify, proxies=proxies, cert=cert, timeout=timeout)print(resp.status_code)
由于你没有对 Request 对象做什么特殊事情,你立即准备和修改了 PreparedRequest 对象,然后把它和别的参数一起发送到 requests.* 或者 Session.*。
然而,上述代码会失去 Requests Session 对象的一些优势, 尤其 Session 级别的状态,例如 COOKIE 就不会被应用到你的请求上去。要获取一个带有状态的 PreparedRequest, 请用 Session.prepare_request() 取代 Request.prepare() 的调用,如下所示:
from requests import Request, Sessions = Session()req = Request('GET', url, data=data headers=headers)prepped = s.prepare_request(req)# do something with prepped.body# do something with prepped.headersresp = s.send(prepped,stream=stream, verify=verify, proxies=proxies, cert=cert, timeout=timeout) print(resp.status_code)
SSL 证书验证
我们在请求的时候,https的协议需要校验证书,requests请求默认ssl的证书是开启的。
如果不加证书会导致请求报错的。看下如下的示例
import requestsr=requests.get('https://www.github.com')print(r.status_code)
有可能会出现requests.exceptions.SSLError。所以我们在请求的时候,可以关闭https的验证。
r=requests.get('https://www.github.com/',verify=False)print(r.status_code)
当然了我们可以还可以在verify传递本机校验的证书
你可以为 verify 传入 CA_BUNDLE 文件的路径,或者包含可信任 CA 证书文件的文件夹路径:
示例如下:
requests.get('https://github.com', verify='/users/leizi/certfile')
将其保持在会话中:
s = requests.Session()s.verify = '/users/leizi/certfile'
所以我们在请求https的协议的网站,如果校验证书,我们要传递对应的证书的。现在很多网站 会默认跟你重定向到https或者一些浏览器都会默认了,我们在接口测试的时候,还是要注意下的。https协议的接口的安全性毕竟比较高。现在很多网站都已经支持https协议的请求了。当然我们一般在测试服还是http协议的比较多。这里给大家分析下如何使用。大家用到的时候可以快速上手。
如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~