当登录接口依赖token的,可以先登录后,token存到一个yaml或者json或者ini的配置文件里面,
后面所有的请求去拿这个数据就可以全局使用。
如果是cookies的参数,可以用session自动关联。详情如下:
一、cookie与session都是可以用来保存信息,存储数据的。cookie是在客户端保存的(如浏览器),而session是在服务端保存的(如tomcat)。session是会话级别的(在一个会话期间,session里面的数据都不会消失)
二、cookie和session的关联技术
通过cookie可以关联session,服务端创建的每一个session都是存储在服务端内存中的,服务器的内存可能会有多个session,并且每一个session都会有一个sessionId,每一次新建一个session都会通过增加一个请求头的方法创建一个cookie来保存sessionId(可以通过抓包获取cookies,然后requests.session() 方法来控制会话)。
抓包可以用fiddler、charles、burpsuite等。选取拦截的cookies中的token值,放入requests.sesson()中,访问时即可越过身份验证,请求成功。
原因:客户端每次向服务器发起请求都会带上cookie,服务端可以通过cookie携带的sessionId来找到对应的session,从而获取session里面的数据。(每一个cookie都有自己的有效路径,通过设置自己的有效路径可以决定在发送哪些请求时可以带上该cookie,默认是本身的webapp实例)
所以cookies关联session会很方便。且首次登陆一个账号,一般会生成一个或多个唯一的cookie来保存该账号对该网站的会话信息(cookie保存sessionId,sessionId指向一个唯一的session,session保存会话信息),但是当浏览器禁用cookie后,浏览器也就没有办法通过cookie来传递sessionId了(此时session还在,只是客户端没有携带sessionId从而无法找到对应的session,解决的办法是通过url重写,把sessionId参数携带在url中,连同url一起发送给服务器即可)
另外:当调用request.geSession()方法时,首先会根据客户端传递的cookie保存的sessionId来寻找对应的session,当找不到sessionId对应的session或者没有携带sessionId时,就会自动创建一个session对象并把生成的sessionId通过客户端用cookie保存起来(客户端的cookie保存sessionId所用的key是JSESSIONID)。这样一直循环下去,每次删除后,都会新建一个session对象,并保存再cookie中(里面包含sessionid)。
具体用法可以通过help(requests.session())查看,当然需要先导入resuests。