前言

我们不难发现浏览器中存在着cookie缓存等,但我们在python中如果像浏览器这样的缓存,我们就很难的需要关联cookie或会话了。

但python的requests库,就封装了Session方法、Session类实现会话对象。就好比如是python中的浏览器。

一、Cookie 与 Session 的区别

1、Cookie,也用复数Cookies,就是为了辨别用户身份、进行 Session 跟踪而储存在用户本地终端上的数据,通常要加密,而Cookie数据存放在客户的浏览器上;

2、Cookie保存在客户端本地,最大是4kb,key、value形式的字典;

3、Session:会话控制,或者会话对象,Session对象存储特定用户会话所需的属性及配置信息;

4、Session由服务器端生成,响应给客户端,客户端每次带上Session,就可以跨请求,相当于身份识别;

无论是基于Session的还是基于Cookie的认证方式,都需要客户端上传标识,都需要服务端下发这个标识,并且对这个标识进行加密。

虽然加密,但是不法之人一旦拿到这个标识还是可以进行一系列非法操作,所以这个标识里边最好能加上来源IP和过期时间这些属性,再配置上https,可以更加有效的保护整个认证流程和数据。

二、禅道登录实例

1、正常浏览器操作登录-抓包,请求头部信息有个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

2、fiddler 断点将cookies 删除再发送请求。

如下图一,断点已将cookies传的参数删除,接下来允许发送。图二,明显发现登录没有成功,没有到达禅道-我的地盘这个html的返回。

由此我们能知道,如果在接口测试中,我们没能自动关联cookies与session的话会非常不方便。

3、没有关联session、cookies,明显登录没有成功。

4、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

python接口自动化5-session关联的更多相关文章

  1. Python接口自动化基础---session关联接口

    登录一个系统之后,如果需要在登录状态下进行一些操作,那么需要怎样保持会话呢? 可以使用Session() 举例如下: import requests s=requests.Session() url1 ...

  2. python接口自动化23-token参数关联登录(登录拉勾网)

    前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...

  3. python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

  4. python接口自动化26-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了. 最常见的案例就是网站的登录案例,很多网站的登录并不仅 ...

  5. python接口自动化7-参数关联【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...

  6. python接口自动化-token参数关联登录(二)

    原文地址https://www.cnblogs.com/yoyoketang/p/9098096.html 原文地址https://www.cnblogs.com/yoyoketang/p/68866 ...

  7. python接口自动化-token参数关联登录(登录拉勾网)

    前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...

  8. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  9. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  10. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

随机推荐

  1. 使用jeecg-boot心得

    使用jeecg-boot心得: Jeect-boot,采用主流最新的开发技术,是个强大的快速开发平台. 刚开始发现jeecg-boot时便对其精致美观的页面深深的迷住了.下载项目运行发现其中也有想要的 ...

  2. RU/RUR的安装

    RU/RUR的安装方法是仍然使用现有的Opatch技术来安装RU/RUR. 更多常见问题,请参考文档: Release Update and Release Update Revisions for ...

  3. 菜鸟刷面试题(三、Redis篇)

    目录: redis是什么?都有哪些使用场景? redis有哪些功能? redis和memecache有什么区别? redis为什么是单线程的? 什么是缓存穿透?怎么解决? redis支持的数据类型有哪 ...

  4. TopCoder12727 「SRM590Hard」FoxAndCity 最小割离散变量模型

    问题描述 一张 \(N\) 个点无向图,边权都为 \(1\) ,添加若干条边,最小化 \(\sum\limits_{1 \le i \le n,i \in N_{+}}{(a_i-b_i)^2}\). ...

  5. [考试反思]1110csp-s模拟测试109:细节

    细节...决定成败 T2数组开小,T3long long没开够. 而且其实不止这样,考试结束前15分钟发现了好多低错: T3双向边没开2倍.dfs没递归调用.T2为了调试bitset开20没改(后来改 ...

  6. SpringBoot:@Scope注解学习

    概述 先通过注解的javadoc,可以了解到,@Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围,在和@Bean一起修饰在方法上,作为方法级别注解 ...

  7. IT兄弟连 HTML5教程 CSS3揭秘 CSS3属性3

    5 用户界面属性 在CSS3中,新的用户界面特性包括重设元素尺寸.盒尺寸及轮廓等.本小节着重介绍一下resize属性,只有Firefox 4和Safari 3浏览器支持此属性.resize属性可用于重 ...

  8. Java大数类 BigInteger

    package bigint; /** * This class encapsulates a BigInteger, i.e. a positive or negative integer * wi ...

  9. mysql8安装后如何修改root密码

    mysql5.7.9之后,就没有了password函数,所以,使用传统的password()函数修改root密码的话,就会提示sql错误 UPDATE user SET authentication_ ...

  10. JDK1.8源码分析02之阅读源码顺序

    序言:阅读JDK源码应该从何开始,有计划,有步骤的深入学习呢? 下面就分享一篇比较好的学习源码顺序的文章,给了我们再阅读源码时,一个指导性的标志,而不会迷失方向. 很多java开发的小伙伴都会阅读jd ...