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

2023-09-19 14:45:30

一,理论知识

为什么有cookie和session?

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

cookie

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

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

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

session

session 是一种在服务端记录用户信息的技术,在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 = "https://www.ketangpai.com/UserApi/login"

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 = "https://www.ketangpai.com/UserApi/getUserInfo"  # 发送请求,获取用户信息,验证是否自动带上了cookie

resp1 = s.get(userinfo_url)

print(resp1.json())

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

更多推荐

BIO、NIO、AIO有什么区别

什么是IOJava中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等

基于招聘网站的大数据专业相关招聘信息建模与可视化分析

需要本项目的可以私信博主!!!在大数据时代背景下,数据积累导致大数据行业的人才需求快速上升,大量的招聘信息被发布在招聘平台上。深入研究这些信息能帮助相关人士更好地理解行业动态,并对其未来发展进行预测。本文主要通过分析51job网站上的大数据职位招聘信息,进行一次可视化的呈现。本研究首先使用Python爬虫技术,抓取51

Kubernetes中Pod的扩缩容介绍

Kubernetes中Pod的扩缩容介绍在实际生产系统中,我们经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景。此时可以利用Deployment/RC的Scale机制来完成这些工作。Kubernetes对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过执行k

零基础学前端(五)模仿QQ官网首页(重点练习HTML+CSS)

1.我前面已经将HTML和CSS讲解完成,希望初学者是跟着一步一步敲代码走过来的。2.我个人觉得先不着急进入Javascript的学习,要将前面写样式,写布局的基础打好,所以我编写了本篇模仿QQ网站首页,请认真阅读。一、确认目标我们要模仿qq官网的首页。你可以点击去看看官网的样子,我将目标图片先贴在下面。素材可以自己通

UWB学习——day4

UWB学习——day4技术劣势技术细节UWB频段系统调制方式UWB帧结构芯片实例技术劣势干扰其它技术,UWB技术目前允许在未授权的3.1GHz至10.6GHz频谱上运行,但该频谱上有许多其它无线通讯所在的频带,容易互相产生干扰,反而限制了适用范围。时钟同步要求高,测距和定位需要高精度的时钟同步频谱利用率低,虽然拥有巨大

实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务

文章目录1.前言2.本地文件服务器搭建2.1python的安装和设置2.2cpolar的安装和注册3.本地文件服务器的发布3.1Cpolar云端设置3.2Cpolar本地设置4.公网访问测试5.结语1.前言数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用,对于个人用户也有很强的实用意义。也正因如

产业互联网,并非消费互联网式的置身事外

在消费互联网时代,我们听到最多的一个词汇,便是「收割」。当「收割」发展到一定的程度,我们还听到了一个词,叫「豢养」。不得不说,在流量充沛的年代里,通过「收割」和「豢养」的方式,的确是可以获得一定的发展潜能的。然而,等到流量的红利不再,通过简单粗暴的「收割」和「豢养」开始表现出来了越来越多的问题和弊端。我们看到的流量的沉

HEXO 基本使用

1新建、编辑并预览文章1.新建文章hexonew[layout]title#或hexon[layout]title创建文章前要先选定模板,在hexo中也叫做布局。hexo支持三种布局(layout):post(默认)、draft、page。我们先介绍如何使用已有布局,后面还将会介绍如何自定义布局。在博客目录下输入以下命

macOS 中 聚焦搜索 的使用教程

macOS中的聚焦搜索是一个强大的工具,它可以帮助你快速找到文件、应用程序、联系人、电子邮件、互联网搜索结果等。下面是macOS中聚焦搜索的使用教程:1.打开聚焦搜索:使用键盘快捷键:按下键盘上的Command键和空格键(⌘+空格),即可打开聚焦搜索。这是最快的方式。使用鼠标或触控板:点击屏幕右上角的聚焦搜索图标(放大

详细介绍下VLAN隔离与VLAN之间互联

什么VLAN?VLAN代表虚拟局域网(VirtualLocalAreaNetwork),它是一种在物理网络基础上创建逻辑上独立的虚拟网络的技术。VLAN允许将一个局域网划分为多个虚拟的逻辑网络,这些虚拟网络在逻辑上相互隔离,就像它们是物理上分开的一样。通过使用VLAN,可以将不同的设备、用户和资源划分到不同的虚拟网络中

每日练习-8

目录一、选择题二、算法题1.另类加法2、走方格的方案数一、选择题1、解析:当使用new运算符创建一个类的对象数组时,会调用该类的构造函数来初始化每个对象。因此,如果创建了5个对象,那么构造函数会被调用5次。当使用delete运算符删除一个指针时,会调用该指针指向的对象的析构函数来释放内存。但是,如果该指针指向的是一个对

热文推荐