咱们不难发现浏览器中存在着cookie缓存等,但咱们在python中若是像浏览器这样的缓存,咱们就很难的须要关联cookie或会话了。html
但python的requests库,就封装了Session方法、Session类实现会话对象。就比如如是python中的浏览器。python
一、Cookie,也用复数Cookies,就是为了辨别用户身份、进行 Session 跟踪而储存在用户本地终端上的数据,一般要加密,而Cookie数据存放在客户的浏览器上;浏览器
二、Cookie保存在客户端本地,最大是4kb,key、value形式的字典;缓存
三、Session:会话控制,或者会话对象,Session对象存储特定用户会话所需的属性及配置信息;服务器
四、Session由服务器端生成,响应给客户端,客户端每次带上Session,就能够跨请求,至关于身份识别;cookie
不管是基于Session的仍是基于Cookie的认证方式,都须要客户端上传标识,都须要服务端下发这个标识,而且对这个标识进行加密。session
虽然加密,可是不法之人一旦拿到这个标识仍是能够进行一系列非法操做,因此这个标识里边最好能加上来源IP和过时时间这些属性,再配置上https,能够更加有效的保护整个认证流程和数据。post
一、正常浏览器操做登陆-抓包,请求头部信息有个cookies,以下标红色字为登陆必传的cookies的token,抓包数据以下。测试
cookies = Cookie: lang=zh-cn; theme=default; keepLogin=on; za=admin; lastProduct=1; preBranch=0; preProductID=1; preCaseLibID=1; lastCaseLib=1; libCaseModule=2; caseModule=0; checkedItem=2%2C1; zp=d8486c87280cdfe6c3f4e53b44612c0ad486aa2f; windowWidth=1920; windowHeight=968; csrftoken=WAUVNHlXBnWmPfBPdQoK80PLq9NJcJcR6Ew1KIHBfht4Cs1Z0fhaJFn7LDdNnRt3; zentaosid=h6r0cho8eiq4na767vgjcan886加密
二、fiddler 断点将cookies 删除再发送请求。
以下图一,断点已将cookies传的参数删除,接下来容许发送。图二,明显发现登陆没有成功,没有到达禅道-个人地盘这个html的返回。
由此咱们能知道,若是在接口测试中,咱们没能自动关联cookies与session的话会很是不方便。
三、没有关联session、cookies,明显登陆没有成功。
四、requests.session() 方法能作到控制会话。session关联后登陆成功了!
import requests s = requests.session() # session() 控制会话 print(s.cookies) # 没请求前cookies为空 url = 'http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html' par = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=%2Fzentao%2F' r = s.post(url, params=par) # 登陆后查看 cookies print(s.cookies) r1 = s.get('http://127.0.0.1:81/zentao/my/') # 断言 print(r1.content.decode('utf-8'))
requests 库是否是很简单的让session关联了呢?学会了吗?欢迎来QQ交流群:482713805