python如何使用session和cookie_Python + request接口测试中Cookie和Session的获取和使用

Cookie和Session的简单理解

由于Http协议是无状态的,所以产生了cookie和session进行状态的管理。

从哪里来,在哪里,到哪里去:

--> Cookie是由服务端生成,存储在响应头中,返回给客户端,客户端会将cookie存储下来。

--> Session是由服务端生成,存储在服务端的内存、缓存、数据库等地方。

--> 在客户端发送请求时,user-agent会自动获取本地存储的cookie,将cookie信息存储在

请求头中,发送给服务端。

--> 请求都是由客户端发起的,当服务端生成了session,客户端如何获取:

1)在客户端发送请求给服务端后,服务端会根据请求信息生成session,同时生成一个

session_id,通过cookie返回给客户端。

2)客户端再次向服务端发送请求时,会通过cookie将这个session_id发送给服务端,

这样相当于带上了session的标示。

--> cookie可以作为管理session的一种方式,当cookie被禁用时,可以通过表单或重写

url传送session_id。

requests实现cookie操作

--> cookie包含在响应中,要获取响应中的cookie信息,可以用r.cookies.get_dict()获取响应

的cookie信息,并传递给后续请求。

--> 找一个不会被进行验证的网站进行练习,从输出信息中,可以看到,第2个请求使用了第一

个请求响应头中的cookies信息,保持了连接

818760-20180910185803969-2039712303.png

--> 在已知cookie信息时,需要构造成对应的cookie对象传递给请求时,可以采用Cookie的返回

对象为RequestsCookieJar或者字典构造。

--> RequestsCookieJar构造cookie是已知登录响应返回的cookies信息,通过创建对象,设置对

应的值进行构造传递。

818760-20180910190308351-1392008287.png

--> 采用字典构造cookies信息,将构造方式更改为:

cookies = dict(zentaosid='5qm86pvshjm3s8u729cmc0mb15')

会话对象session

会话对象让你能够跨请求保持某些参数。它也会在同一个Session实例发出的所有请求之间保持

cookie。所以如果你向同一主机发送多个请求,底层的TCP连接将会被重用,从而带来显著的

性能提升。

--> session会自动管理cookie,一个session对象会保持同一个会话中的所有请求之间的cookie

信息。

818760-20180910192114839-825371118.png

总结:

--> 会话对象session比cookie更方便管理请求的cookie信息

--> 服务器返回的cookie信息通常在响应头中

--> 如果需要将响应体中的部分信息传递给后续的请求的cookie,可以构造cookie信息并传递

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python + requests 接口测试获取 CookieSession 的方式主要有两种:手动获取和自动获取。 手动获取 CookieSession: 1. 首先通过浏览器登录接口系统,获取CookieSession。 2. 打开浏览器的开发者工具,找到请求头CookieSession。 3. 将 CookieSession 复制下来,保存为变量或者放在 headers 。 自动获取 CookieSession: 1. 安装 requests 库和 requests.cookies 库。 2. 使用 requests.session() 创建一个 session 对象。 3. 在 session 对象发送请求,session 对象会自动保存 CookieSession。 4. 在后续的请求使用 session 对象发送请求,可以自动携带 CookieSession使用 CookieSession: 1. 将 CookieSession 放在 headers 。 2. 使用 requests.get() 或 requests.post() 发送请求时,将 headers 作为参数传入。 示例代码: 手动获取 CookieSession: ```python import requests # 手动获取 CookieSession cookie = "xxx" session = "xxx" headers = { "Cookie": cookie, "Session": session, "Content-Type": "application/json" } # 发送请求 response = requests.post(url, headers=headers, data=data) ``` 自动获取 CookieSession: ```python import requests # 自动获取 CookieSession session = requests.session() # 登录 login_data = {"username": "xxx", "password": "xxx"} session.post(login_url, data=login_data) # 发送请求 response = session.post(url, data=data) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值