接口自动化:cookie/session/token区别及代码实现

cookie

1、保存位置
**cookie:**客户端(浏览器),目的是为了下次访问网站的时候可以直接取出来,上传服务器,所以HTTP协议中通过客户端发送给服务器的请求报文头中,有一个cookies域专门用于存放这个信息,以便客户端将cookie信息发送给服务器。
哪些信息需要保存作为cookie,保存在客户端本地,保存多长时间,一般由服务器决定的
抓取cookies:登录cookie=登录前cookie-登录后cookie - fiddler只能看到cookie的name和value

**session:**即会话,一个session,一次会话对象,以session_id的形式存在客户端(浏览器),session数据是存在服务器内存中的,如数据库
客户端和服务端通过一个sessionID来进行沟通,为了防止不同的客户之间出现冲突和重复,这个sessionID一般是一个较长的随机字符串(一般32或者48个字节)
session保持会话 跨请求情况
http协议是无状态的,也就是每个请求都是独立的。那么登录后的一系列动作,都需要用cookie来验证身份是否是登录状态。

**token:**客户端,令牌,跨平台。有些登录是用的token,如app csrfToken
服务端先检验数据库,通过之后会返回一个tooken,客户端会存着这个token。以后拿着这个token就可以直接登录了,比直接拿账户密码安全

token 放哪,看接口文档。(开发人员和你规定的)
cookie 放哪,放headers请求头里(HTTP协议规定)

2.特点
**cookie:**因为存在本地,所以不安全,不适合保存敏感信息
**session:**在服务器记住用户信息状态的,服务器验证- 登录的时候服务器会有个校验过程,已经提前备份了。
会话对象的过期时间,默认浏览器关闭就会失效,可以由服务端去设置时间,关闭浏览器,浏览器会自动删除session

3.组成:
cookie组成
fiddler只能看到cookie的name和value
完整的组成结构
cookie ={u’domain’: u’.cnblogs.com’,
u’name’: u’.CNBlogsCookie’,
u’value’: u’xxxx’,
u’expiry’: 1491887887,
u’path’: u’/’,
u’httpOnly’: True,
u’secure’: False}
name:cookie的名称
value:cookie对应值,动态生成的
domain:服务器域名
expiry:Cookie有效终止日期
path:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的cookie
httpOnly:防脚本攻击
secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时,
浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。

session关联
1.跨请求保持会话 s = requests.Session()
2.先get获取部分cookie
3.登录s.post()账号密码登录(或添加cookie绕过登录)
4.登录后继续发请求保存草稿s.post()
5.登录后保持其他请求,如:s.get() s.post()

通过cookies:
接口自动化:cookie/session/token区别及代码实现
通过session:
接口自动化:cookie/session/token区别及代码实现
接口自动化:cookie/session/token区别及代码实现