当前位置: 首页 > news >正文

JMeter实战之——模拟登录

在这里插入图片描述

本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。

基本Session验证的机制

使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下:

一、登录过程

  1. 用户输入:用户在登录页面输入用户名和密码。
  2. 发送请求:浏览器将用户名和密码作为请求参数发送到服务器。
  3. 服务器验证:服务器接收到请求后,验证用户名和密码的正确性。
    • 如果验证失败,服务器返回错误信息,提示用户重新输入。
    • 如果验证成功,服务器会创建一个session对象,并将用户信息(如用户名、权限等)存储在session中。
  4. 生成session ID:服务器为每个session生成一个唯一的session ID,用于标识该session。
  5. 发送session ID:服务器将session ID通过Set-Cookie响应头字段发送给客户端(浏览器),并指示浏览器保存该Cookie。

二、请求验证过程

  1. 发送请求:用户在后续访问需要认证的页面或接口时,浏览器会自动将保存的包含session ID的Cookie附加在HTTP请求的头字段Cookie中发送给服务器。
  2. 服务器验证:服务器接收到请求后,从请求头中的Cookie提取session ID。
    • 服务器根据session ID查找对应的session对象。
    • 如果找到对应的session对象,且session未过期,则认为用户已经登录,并允许访问该页面或接口。
    • 如果未找到对应的session对象,或session已过期,则认为用户未登录或会话已失效,服务器将返回错误信息或重定向到登录页面。

三、session管理

  1. session存储:session对象通常存储在服务器上,可以是内存、数据库或文件等。
  2. session过期:服务器可以设置session的过期时间,当session超过过期时间时,服务器将自动销毁该session对象。
  3. session注销:用户可以通过点击注销按钮或关闭浏览器等方式注销登录。注销时,服务器将销毁对应的session对象,并清除客户端的Cookie。

捡重点来说:

  1. 服务端产生Session ,并生成一个sessionID 给浏览器端
  2. 浏览器端保存这个SessionID到Cookie 中
  3. 后续浏览器端请求资源的时候都会带上这个SessionID
  4. 服务端验证这个SessionID是否正确和有效。

基于Session登录验证的JMeter 测试

使用JMeter 测试使用Session验证的站点很简单:

  1. 调用登录的接口
  2. 调用其他的接口

也就是在调用需要测试的接口前,想调用登录的接口, JMeter 会自动保存登录成功后的SessionID 并且后续请求会自动带上这个Cookie,这里自动带的原因是因为这个Cookie是通用的,也就是 * JSESSIONID

JSESSIONID是一个特定类型的Cookies,用于跟踪用户会话。它是由Java Servlet规范定义的一种机制,用于在用户与Java Web应用程序之间保持会话状态。

基于以上在JMeter 中建立的测试项目就基本上很简单:

在这里插入图片描述

  • 线程组下面包含一个登录请求以及若干个获取数据的请求。

实战场景之复杂验证

这里遇到一个实战的项目,因为单点登录或是安全性的要求,除了JSESSIONID之外,会额外产生一个Token 进行验证。原因是:

  • 这个站点本身调用了多个其他的服务,而调用其他服务的验证就是使用token 的方式。
  • 同时这个站点本身也是使用自行产生的token 进行验证

在调用登陆之后,会将这个通过通过响应内容的方式返回。

在JMeter 中需要从响应中解析出这个Token 附件到后续请求中。

于是需要在Login的请求中添加一个 Regular Expression Extractor解析出自行产生的Token。

需要从返回中通过Regular Expression Extracotor 解析Token , 附加到请求头中, 解析的配置类似如下:

在这里插入图片描述

除以上外,还需要添加一个HTTP Cookie Manager, 以便在后续的请求中附加上这个Cookie:
在这里插入图片描述

测试计划的完整结构如下:

在这里插入图片描述



相关文章:

JMeter实战之——模拟登录

本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下: 一、登录过程 用户输入:用户在登录页面输入用户名和密码。发送请求&#x…...

智能台灯设计(一)原理图设计

1. 前言 作者最近突发奇想,想自己做一个小台灯,设想的功能有:带锂电池可充电、可以调节亮度,后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能,有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…...

数据库查询返回结果集及其元数据信息:ResultSet 和 ResultSetMetaData 深度解析

全文目录: 开篇语📌 目录🌟 前言📝 摘要📚 简介🔍 概述🧩 核心源码解读1️⃣ 创建数据库连接2️⃣ 执行查询获取结果集3️⃣ 读取查询数据4️⃣ 获取元数据信息 💻 案例分析&#x1…...

2.插入排序(斗地主起牌)

一、思想 扑克牌起牌 代码: 二、时间复杂度: 最好情况(已经排序好的):T O(N) 最坏情况(完全逆序):T O(N^2) 三、优劣: 严格的大小比较之后才进行错位插入&#x…...

漫谈编程小白如何成为大神:夯实基础,开启通神之路

在当今数字化时代,编程已成为一项基本技能,对于大学新生而言,掌握编程能力不仅能够为学术研究提供支持,还能为未来的职业生涯开辟广阔天地。然而,面对琳琅满目的编程语言和学习资源,新生们往往会感到迷茫和…...

基于机器学习的个性化电影推荐系统【源码+安装+讲解+售后+文档】

【1】系统介绍 研究背景 随着互联网技术的迅速发展,数字娱乐内容特别是电影和电视剧的数量急剧增加。用户在享受丰富内容的同时,也面临着选择困难的问题,即“信息过载”。传统的搜索和分类方法已经无法满足用户日益增长的个性化需求。与此同…...

企业如何配合好等级保护测评工作?

企业如何配合好等级保护测评工作,是一个涉及多方面因素的系统性任务。等级保护测评,简称等保测评,是中国对信息和信息系统安全的重要管理手段和评估制度。通过这一制度,企业可以全面了解其信息系统的安全状况,及时发现…...

Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency> 引入hutool 8.1版本的工具…...

【功能安全】汽车功能安全个人认证证书

目录 1、证书 2、课程信息 &#x1f4d6; 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书&#xff0c;如下&#xff1a; 2、课程信息 一般上什么课程了&#xff0c;课程信息大概如下&#xff1a; 汽车功能安全工程师认证课 &#xff08;3天&#…...

axios直接上传binary

axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary&#xff0c;平常我们很少使用&#xff0c;可能有的同学遇到这种情况不太会了&#xff0c;认为后端应该有个字段名来接收&#xff0c;或者使用 Formdata&#xff0c;但其实…...

量化交易API接口是什么?如何申请和应用?

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

语义分割:YOLOv11的分割模型训练自己的数据集(从代码下载到实例测试)

文章目录 前言一、环境搭建二、构建数据集三、修改配置文件①数据集文件配置②模型文件配置 四、模型训练和测试模型训练模型验证模型推理 总结 前言 专栏目录&#xff1a;YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改…...

Python爬虫:从入门到精通

Python爬虫&#xff1a;从入门到精通 在数字时代&#xff0c;信息就如同水源&#xff0c;源源不绝。然而&#xff0c;当你想要从海量的信息中汲取有价值的“水”&#xff0c;你会发现这并不是一件容易的事。这就是为什么网络爬虫出现了。它们帮助我们在网络的海洋中航行&#…...

Web组态软件

Web组态软件是近年来前端开发领域的一股新兴力量&#xff0c;它以其独特的魅力吸引着越来越多的开发者们。那么&#xff0c;Web组态软件到底是什么&#xff1f;它有哪些特点&#xff1f;我们又该如何选择和使用它呢&#xff1f;下面&#xff0c;就让我们一起探讨这些问题。 一…...

Java中为什么要私有化构造方法

为什么要私有化构造方法 要私有化的方法不是来描述一类事物的&#xff0c;创建没有任何意义 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; 为什么要将构造方法私有化&#xff1f; 问&#xff1a;如果要限制一个类对象产生&#xff0c;即&…...

【大数据学习 | kafka】kafuka的基础架构

1. kafka是什么 Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的&#xff08;Replicated&#xff09;、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比&#xff0c;KafKa能够很好…...

2-petalinux2018.3摸索记录-petalinux rootfs

1Filesystem Packages文件系统软件包2Petalinux Package GroupsPetalinux软件包组3Image Features镜像特性4apps应用程序5user packages用户软件包6Petalinux RootFS SettingsPetalinux根文件系统设置 Filesystem Packages&#xff08;文件系统软件包&#xff09; 这个选项主要…...

RHCE作业二

1.要求&#xff1a; 配置nginx服务通过ip访问多网站 2. 1关闭防火墙 2创建ip 3配置 4创建文件 5测试...

GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册

GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 时空安全隔离装置采用先进的防欺骗抗干扰技术&#xff0c;能够有效检测识别欺骗干扰信号&#xff0c;并快速对异常信号进行关断、切换&#xff0c;消除欺骗干扰影响。…...

【C++篇】深度解析类与对象(下)

引言 在上一篇博客中&#xff0c;我们学习了C的基础类与对象概念&#xff0c;包括类的定义、对象的使用和构造函数的作用。在这一篇&#xff0c;我们将深入探讨C类的一些重要特性&#xff0c;如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象&#xff0c;…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...