首页 > 其他分享 >接口自动化中cookies的处理技术

接口自动化中cookies的处理技术

时间:2023-09-07 15:01:18浏览次数:35  
标签:cookies 浏览器 Session 接口 session cookie 自动化 服务器 客户端


一,理论知识

为什么有cookie和session?

因为http协议是一种无状态的协议,即每次服务端接受到客户端的请求时都时一个全新的请求,服务器并不知道客户端的请求记录,session和cookie主要目的就是弥补http的无状态特性

·cookiecookie是服务器发送到用户浏览器并保存到用户本地的一小块数据,会在浏览器再下次向同一服务器再发起请求时被携带并发送到服务器上。通常用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。

原理:Cookie技术会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。

② 客户端再向服务器端发送请求的时候,客户端会在请求报文中加入Cookie值后发送出去。服务器端会检查客户端发送的请求中有没有Cookie值,然后对比服务器上的记录,最后确定是哪一个客户端,之前的信息状态是什么

·sessionsession 是一种在服务端记录用户信息的技术,在http无状态协议下,服务端记录用户状态时用于标识具体用户的机制,是在服务端保存的用来追踪用户状态的数据结构(键值对),可以保存在文件,数据库或者集群中

Session是存放在服务器端、用来存放用户数据的(类似于HashTable结构)。

当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable,并将其通过响应发送到浏览器。

当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable,以此来达到共享数据的目的。

cookie和session的区别

1,存储位置不同,cookie是将用户数据通过加密的方式存储在客户端(大多数在浏览器),session存储在服务器(用于控制客户端和服务端的连接)

2,存储容量不同,cookie只能发ASCII码,通过编码的方式获取Unicode字符,或者二进制数据,不能存复杂数据,session能存任何类型的数据。

3,安全性,隐私策略不同,cookie放在客户端,可以进行cookie欺骗,session放在服务端,比较安全

4,有效期不同,cookie实际上可以设置属性,达到长期有效(记住历史登录),(expires/Max-Age 字段为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。)

session依赖于JSESSIONID的cookie,JSESSIONID过期时间默认为-1,即关闭窗口就失效,可以设置时间,但是超时时间太长,容易造成内存溢出,

5,对服务器的压力不同,cookie保存在本地,不存在服务器压力,session保存在服务端,每个用户都会产生一个session,当访问增多,会比较占用服务器的性能,如果主要考虑减轻服务器性能压力,应使用cookie。

python接口自动化中对cookie和session的处理方式在python中,有专门的一个类来处理cookie和session,即Session类。类似于jmeter的cookie管理器。

import requests # 导入request
s = requests.Session() # 实例化一个request.Session类的对象
print("登陆之前的cookies:",s.cookies) # 与登录之后的cookie对比,一开始为空,后面登录后,就获取到了cookie
login_url = 
login_datas = {"email":"198658759##",
"password":"sdk93#####",
"remember":0}
resp = s.post(login_url, data=login_datas) # 发送post请求,登录,获取cookie,会自动添加到s对象中,后续接口请求要用到cookie,直接使用即可
print("登陆之后的cookies:",s.cookies) # 主动会将响应的set-cookies添加到s对象当中。
print(resp.json())
userinfo_url =  # 发送请求,获取用户信息,验证是否自动带上了cookie
resp1 = s.get(userinfo_url)
print(resp1.json())

标签:cookies,浏览器,Session,接口,session,cookie,自动化,服务器,客户端
From: https://blog.51cto.com/u_15333581/7397323

相关文章

  • 如何使用API数据接口给自己创造收益
    使用API数据接口创造收益的方法有很多,以下是一些常见的方法,并附有代码示例:一、数据分析与预测通过获取API数据接口中的大量数据,我们可以进行深入的数据分析,并利用这些数据来预测未来的趋势和行为。例如,我们可以使用Python中的pandas库来处理API返回的数据,并使用scikit-learn等库来......
  • 如何使用API数据接口给自己创造收益
    ​使用API数据接口创造收益的方法有很多,以下是一些常见的方法,并附有代码示例:一、数据分析与预测通过获取API数据接口中的大量数据,我们可以进行深入的数据分析,并利用这些数据来预测未来的趋势和行为。例如,我们可以使用Python中的pandas库来处理API返回的数据,并使用scikit-learn......
  • RDMA-MR内核接口-rxe_get_dma_mr
    描述:注册物理内存,获取具有数据传输所需密钥的内存区域结构.get_dma_mr=rxe_get_dma_mr,内核的PD下面会注册一个内部的特殊MR,这个MR的范围包含了所有的系统内存。然后如果内核态的RDMA用户创建PD的时候传入了这个flag,就会把这个MR的R_Key挂在PD结构体的unsafe_global_rkey里面返回......
  • 阿里巴巴API接口解析,实现按关键字搜索商品
    要解析阿里巴巴API接口并实现按关键字搜索商品,你需要进行以下步骤:了解阿里巴巴API接口文档:访问阿里巴巴开放平台,找到API文档,了解阿里巴巴提供的API接口以及相关的参数、返回值等信息。注册开发者账号:在阿里巴巴开放平台上注册一个开发者账号,并创建一个应用,获取到API权限。获取API密......
  • Vue + GitLab 实现自动化部署
      二、Linux安装nginx在Linux上安装NGINX的步骤如下:打开终端(命令行界面)。使用以下命令安装NGINX:对于Ubuntu/Debian系统:sudoapt-getinstallnginx对于CentOS/RHEL系统:sudoyuminstallnginx等待安装完成。使用以下命令启动NGI......
  • python+pytest+yam接口自动化
    分层设计项目下创建api、case、data、common(utils)目录:api下存放封装好的接口,case下放编写的测试用例,data下放测试数据,common下放公共操作(像连接数据库,读取yaml文件等)api下封装的登录接口:  case下对登录写的测试用例:用例设计的原则(pytest怎么去找的用例):文件名以test_*.py......
  • 接口
    接口 接口的定义与特点接口用关键字interface来定义/*声明了一个接口:体现一种规范,规范一定是公开的*/publicinterfaceInterfaceDemo{        //常量        //抽象方法        //目标:了解接口中的成分贴点,JDK1.8之前接口中只能有抽象方法和常量 ......
  • 接口注意事项
    1接收接口使用同步或异步的优缺点同步:需要等待接口返回数据才能往下执行优点:实时性强,流程容易控制缺点:需要阻塞等待异步:无需等待接口返回数据即可往下执行优点:无需阻塞等待缺点:流程控制较为复杂,可能需要回调操作,更多的多线程开销使用场景:需要根据具体业务需求判断......
  • 《Head First Java》学习笔记2--接口、构造函数与垃圾收集器
    接口:Java的接口就像是100%的纯抽象类接口的方法都带有public和abstract意义,这两个修饰符是属于选择性的完全不同的继承树的类可以实现相同的接口,使用接口就像是说“不管来自哪里,只要实现这个接口,别人就会知道你一定会履行这个合约”当用接口来作为多态......
  • uiautomator2自动化测试工具详解
    前言个人观点觉得uiautomator2的运行方式比appium要简单许多,因为appium依赖性方较多,尤其是在做iOS连接appium时需要xcode中编译的webdriveragent工具来协助运行自动化环境,特别容易在运行中自动中断自己就删除了......