JMeter实战之——模拟登录
本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。
基本Session验证的机制
使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下:
一、登录过程
- 用户输入:用户在登录页面输入用户名和密码。
- 发送请求:浏览器将用户名和密码作为请求参数发送到服务器。
- 服务器验证:服务器接收到请求后,验证用户名和密码的正确性。
- 如果验证失败,服务器返回错误信息,提示用户重新输入。
- 如果验证成功,服务器会创建一个session对象,并将用户信息(如用户名、权限等)存储在session中。
- 生成session ID:服务器为每个session生成一个唯一的session ID,用于标识该session。
- 发送session ID:服务器将session ID通过Set-Cookie响应头字段发送给客户端(浏览器),并指示浏览器保存该Cookie。
二、请求验证过程
- 发送请求:用户在后续访问需要认证的页面或接口时,浏览器会自动将保存的包含session ID的Cookie附加在HTTP请求的头字段Cookie中发送给服务器。
- 服务器验证:服务器接收到请求后,从请求头中的Cookie提取session ID。
- 服务器根据session ID查找对应的session对象。
- 如果找到对应的session对象,且session未过期,则认为用户已经登录,并允许访问该页面或接口。
- 如果未找到对应的session对象,或session已过期,则认为用户未登录或会话已失效,服务器将返回错误信息或重定向到登录页面。
三、session管理
- session存储:session对象通常存储在服务器上,可以是内存、数据库或文件等。
- session过期:服务器可以设置session的过期时间,当session超过过期时间时,服务器将自动销毁该session对象。
- session注销:用户可以通过点击注销按钮或关闭浏览器等方式注销登录。注销时,服务器将销毁对应的session对象,并清除客户端的Cookie。
捡重点来说:
- 服务端产生Session ,并生成一个sessionID 给浏览器端
- 浏览器端保存这个SessionID到Cookie 中
- 后续浏览器端请求资源的时候都会带上这个SessionID
- 服务端验证这个SessionID是否正确和有效。
基于Session登录验证的JMeter 测试
使用JMeter 测试使用Session验证的站点很简单:
- 调用登录的接口
- 调用其他的接口
也就是在调用需要测试的接口前,想调用登录的接口, 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️⃣ 获取元数据信息 💻 案例分析…...
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、课程信息 📖 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书,如下: 2、课程信息 一般上什么课程了,课程信息大概如下: 汽车功能安全工程师认证课 (3天&#…...
axios直接上传binary
axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary,平常我们很少使用,可能有的同学遇到这种情况不太会了,认为后端应该有个字段名来接收,或者使用 Formdata,但其实…...
量化交易API接口是什么?如何申请和应用?
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
语义分割:YOLOv11的分割模型训练自己的数据集(从代码下载到实例测试)
文章目录 前言一、环境搭建二、构建数据集三、修改配置文件①数据集文件配置②模型文件配置 四、模型训练和测试模型训练模型验证模型推理 总结 前言 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改…...
Python爬虫:从入门到精通
Python爬虫:从入门到精通 在数字时代,信息就如同水源,源源不绝。然而,当你想要从海量的信息中汲取有价值的“水”,你会发现这并不是一件容易的事。这就是为什么网络爬虫出现了。它们帮助我们在网络的海洋中航行&#…...
Web组态软件
Web组态软件是近年来前端开发领域的一股新兴力量,它以其独特的魅力吸引着越来越多的开发者们。那么,Web组态软件到底是什么?它有哪些特点?我们又该如何选择和使用它呢?下面,就让我们一起探讨这些问题。 一…...
Java中为什么要私有化构造方法
为什么要私有化构造方法 要私有化的方法不是来描述一类事物的,创建没有任何意义 解决方案: 提示:这里填写该问题的具体解决方案: 为什么要将构造方法私有化? 问:如果要限制一个类对象产生,即&…...
【大数据学习 | kafka】kafuka的基础架构
1. kafka是什么 Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的(Replicated)、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比,KafKa能够很好…...
2-petalinux2018.3摸索记录-petalinux rootfs
1Filesystem Packages文件系统软件包2Petalinux Package GroupsPetalinux软件包组3Image Features镜像特性4apps应用程序5user packages用户软件包6Petalinux RootFS SettingsPetalinux根文件系统设置 Filesystem Packages(文件系统软件包) 这个选项主要…...
RHCE作业二
1.要求: 配置nginx服务通过ip访问多网站 2. 1关闭防火墙 2创建ip 3配置 4创建文件 5测试...
GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册
GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 时空安全隔离装置采用先进的防欺骗抗干扰技术,能够有效检测识别欺骗干扰信号,并快速对异常信号进行关断、切换,消除欺骗干扰影响。…...
【C++篇】深度解析类与对象(下)
引言 在上一篇博客中,我们学习了C的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,…...
【gRPC】什么是RPC——介绍一下RPC
说起RPC,博主使用CPP手搓了一个RPC项目,RPC简单来说,就是远程过程调用:我们一般在本地传入数据进行执行函数,然后返回一个结果;当我们使用RPC之后,我们可以将函数的执行过程放到另外一个服务器上…...
谈谈你对AQS的理解
AQS 是多线程同步器,它是 JUC 包中多个组件的底层实现,如 Lock、CountDownLatch、Semaphore等都用到了AQS。 从本质上来说,AQS 提供了两种锁机制,分别是排它锁,和共享锁。 排它锁,就是存在多线程竞争同一…...
Bitcoin全节点搭建
1. wget https://bitcoincore.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz 2.tar -xzvf bitcoin-0.20.1-x86_64-linux-gnu.tar.gz mv bitcoin-0.20.1 bitcoin 3.创建配置文件(bitcoin.conf) mkdir -p /btc_data mkdir ~/.b…...
【mysql进阶】4-6. InnoDB 磁盘文件
InnoDB 磁盘⽂件 1 InnoDB存储引擎包含哪些磁盘⽂件? 🔍 分析过程 ✅ 解答问题 InnoDB的磁盘⽂件主要是表空间⽂件和其他⽂件,表空间包括:系统表空间、独⽴表空间、通⽤表空间、临时表空间和撤销表空间;其他⽂件有重做…...
HexForge:一款用于扩展安全汇编和十六进制视图的IDA插件
关于HexForge HexForge是一款用于扩展安全汇编和十六进制视图的IDA插件,在该工具的帮助下,广大研究人员可以方便地直接从 IDA Pro 界面数据解码、解密或执行安全数据审计任务。 功能介绍 1、从 IDA 的反汇编或十六进制视图复制原始十六进制;…...
WORFBENCH:一个创新的评估基准,目的是全面测试大型语言模型在生成复杂工作流 方面的性能。
2024-10-10,由浙江大学和阿里巴巴集团联合创建的WORFBENCH,一个用于评估大型语言模型(LLMs)生成工作流能力的基准测试。它包含了一系列的测试和评估协议,用于量化和分析LLMs在处理复杂任务时分解问题和规划执行步骤的能力。WORFBE…...
SpringBoot 集成 Activiti 7 工作流引擎
一. 版本信息 IntelliJ IDEA 2023.3.6JDK 17Activiti 7 二. IDEA依赖插件安装 安装BPM流程图插件,如果IDEA的版本超过2020,则不支持actiBPM插件。我的IDEA是2023版本我装的是 Activiti BPMN visualizer 插件。 在Plugins 搜索 Activiti BPMN visualizer 安装创建…...
UVM初学篇 -(22)UVM field_automation 域的自动化机制
field_automation机制是域的自动化的机制,这个机制的最大的优点是可以对一些变量进行批量的处理,比如对象拷贝、克隆、打印之类的变量。 一、 成员变量的注册 使用field_automation机制首先要用uvm_field 系列宏完成变量的注册,类中的成员变…...
STL二分查找
本课主要介绍容器部分里面的二分查找函数。涉及的函数有 3 个,这 3 个函数的强两个输入参数都和迭代器有关,或者说参数是可以迭代的,而第三个参数则是你要查找的值。 1. binary_search binary_search 的返回结果是 bool 值,如果找…...
啤酒游戏—企业经营决策沙盘
感谢黄浦区文华学院的邀请,今年是为南房集团开展系统思考培训的第二年。我们现在为客户设计的一整年系统思考训练中,会将系统环路结构图与真实议题研讨作为前置内容,让大家在理解整体框架后,再体验麻省理工学院系统动力学著名的“…...
有哪些招聘网站/郑州seo地址
2019独角兽企业重金招聘Python工程师标准>>> 忙了几天,今天在公司居然没什么活干 ,所以早上就用公司的电脑写写之前在公司编写framebuffer的使用心得体会总结,这也算是一点开发经验,不过我还没写全,精华部分…...
百度云搭建网站/墨猴seo排名公司
在前端开发当中,我们都知道有些交互事件,会频繁触发。这样会导致我们的页面渲染性能,如果频繁触发接口调用的话,会直接导致服务器性能的浪费。话不多说,盘它!我们先简单列一下onresize onmousemove onkeydo…...
做网站系统/网站标题优化排名
昨天有人问到了微信搜一搜的文章排名有什么规则啥的,今天我来给大家讲一下吧~总的来说呢,高排名的文章常常是:拥有高粉丝数、高互动力、原创度高、以及拥有认证、正确关键词的公众号文章~ 鉴于微信巨大的日活及日均阅读量,我们可以…...
qq群优惠券里面网站怎么做的/网络推广的基本方法
原文:https://blog.csdn.net/SwordArcher/article/details/82465522 try-finally语句的语法与try-except很类似,稍有不同的是,__finally后面没有一个表达式,这是因为try- finally语句的作用不是用于异常处理,所以它不…...
电商新手入门教程/快速排名优化怎么样
(一).说明取得设备网卡的MAC地址和硬盘的卷标号(二).代码using System;using System.Management;namespace NetCard{/// <summary>/// 读取设备/// </summary>public class run{private ManagementClass mc;private ManagementObjectCollection moc;private Manage…...