【JMeter】前端使用JMeter测试JSEncrypt加密登录

您所在的位置:网站首页 前端登录密码加密 【JMeter】前端使用JMeter测试JSEncrypt加密登录

【JMeter】前端使用JMeter测试JSEncrypt加密登录

2024-07-10 04:15| 来源: 网络整理| 查看: 265

前端使用JMeter测试JSEncrypt加密登录

简介:前端开发时会接触到用户登录,登录时为了数据的安全会使用到jsencrypt加密工具,同时我们需要使用jmeter来进行压测,帮助我们了解Web应用程序在高负载情况下的性能表现,从而为优化应用程序性能提供参考

环境:

1.JMeter: 5.5 2.JDK: 8.0 3.插件: 安装插件:jmeter-plugins-manager-1.3.jar 在这里插入图片描述

1.创建线程组

在这里插入图片描述

2. 创建HTTP信息头管理器

在这里插入图片描述

Content-Type :application/json 3. 创建HTTP请求

在这里插入图片描述 3.1请求接口说明requestBody: loginType登录类型,phone登录的手机号,password加密后的密码

{ "loginType":0, "phone":"${username}", "password":"${rsa_pwd}" } 4. 添加前置处理器 4.1 添加csv文件

在这里插入图片描述 在这里插入图片描述

4.2 添加JSR223预处理程序 4.2.1 获取公钥并保存

在这里插入图片描述 脚本:

// 导入必需的类 import org.apache.http.clienthods.HttpGet import org.apache.http.impl.client.HttpClients import org.apache.http.util.EntityUtils // 创建一个 HTTPS 连接 def httpClient = HttpClients.createDefault() // 创建一个 HTTP GET 请求 def httpRequest = new HttpGet("https://XXXXX.com/auth-server/oauth/publickey") // 发送 HTTP GET 请求并获取响应 def httpResponse = httpClient.execute(httpRequest) // 获取响应数据 def response = EntityUtils.toString(httpResponse.getEntity()) // 将响应数据保存到 JMeter 变量中 vars.put("response", response) // 关闭连接 httpClient.close() 4.2.2 加密用户的密码

在这里插入图片描述

var log = org.apache.logging.log4j.LogManager.getLogger(); var response = vars.get("response"); var navigator = this; var window = this; // 引用在线jsencrypt.min.js包,也可以下载到本地再引用 load("https://passport.cnblogs.com/scripts/jsencrypt.min.js"); log.info("==================================开始加密=============================="); // 获取公钥 var pubKey = JSON.parse(response).data; log.info("公钥:"+pubKey); // 使用JSEncrypt库对数据进行加密 var encrypt = new JSEncrypt(); encrypt.setPublicKey(pubKey); // 用户名 var username = '${phone}'; log.info("用户名:"+username); // 将用户名保存到 JMeter 变量中 vars.put("username", username) // 获取密码 var password = '${password}'; log.info("密码:"+password); // 获取当前时间戳 var currentTime = new Date().getTime(); log.info("当前时间戳:"+currentTime); // 将密码和当前时间进行拼接 var data = password + "," + currentTime; var rsa_pwd = encrypt.encrypt(data); log.info("加密后数据:"+rsa_pwd); // 将加密后数据保存到 JMeter 变量中 vars.put("rsa_pwd", rsa_pwd) log.info("==================================结束加密=============================="); 5. 添加-断言-JSON断言

在这里插入图片描述

6.添加-后置处理器-JSON提取器

提取登录成功后,后端返回的token 在这里插入图片描述

7.添加-监听器-察看结果树

在这里插入图片描述

8.添加-监听器-聚合报告

在这里插入图片描述

9.开始测试 9.1接口响应结果:

在这里插入图片描述

9.2聚合报告:

在这里插入图片描述 补充:你也可以直接使用我配置好的jmx文件,在jmeter中直接打开即可:

false true false false saveConfig true true true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true true true false true true false false false true false false false true 0 true true true true true true 1000 false false false xxxxxx.com CPU xxxxxx.com Memory xxxxxx.com Network I/O continue false 1 10 1 false true Content-Type application/json true false { ;loginType;:0, ;phone;:;${username};, ;password;:;${rsa_pwd}; } = xxxxxx.com https /auth-server/oauth/login POST true false true false , UTF-8 C:/Users/chenhongxin/Desktop/20用户.csv true false false shareMode.all true phone,password groovy true // 导入必需的类 import org.apache.http.clienthods.HttpGet import org.apache.http.impl.client.HttpClients import org.apache.http.util.EntityUtils // 创建一个 HTTPS 连接 def httpClient = HttpClients.createDefault() // 创建一个 HTTP GET 请求 def httpRequest = new HttpGet(;https://xxxxxx.com/auth-server/oauth/publickey;) // 发送 HTTP GET 请求并获取响应 def httpResponse = httpClient.execute(httpRequest) // 获取响应数据 def response = EntityUtils.toString(httpResponse.getEntity()) // 将响应数据保存到 JMeter 变量中 vars.put(;response;, response) // 关闭连接 httpClient.close() javascript true var log = org.apache.logging.log4j.LogManager.getLogger(); var response = vars.get(;response;); var navigator = this; var window = this; // 引用在线jsencrypt.min.js包,也可以下载到本地再引用 load(;https://passport.cnblogs.com/scripts/jsencrypt.min.js;); log.info(;==================================开始加密==============================;); // 获取公钥 var pubKey = JSON.parse(response).data; log.info(;公钥:;+pubKey); // 使用JSEncrypt库对数据进行加密 var encrypt = new JSEncrypt(); encrypt.setPublicKey(pubKey); // 用户名 var username = '${phone}'; log.info(;用户名:;+username); // 将用户名保存到 JMeter 变量中 vars.put(;username;, username) // 获取密码 var password = '${password}'; log.info(;密码:;+password); // 获取当前时间戳 var currentTime = new Date().getTime(); log.info(;当前时间戳:;+currentTime); // 将密码和当前时间进行拼接 var data = password + ;,; + currentTime; var rsa_pwd = encrypt.encrypt(data); log.info(;加密后数据:;+rsa_pwd); // 将加密后数据保存到 JMeter 变量中 vars.put(;rsa_pwd;, rsa_pwd) log.info(;==================================结束加密==============================;); // // 将加密后的密码和用户名添加到HTTP请求参数中 //vars.put(;rsa_pwd;, rsa_pwd); //vars.put(;username;, username); // // $.code 200 true false false true token $.data.token 1 false true false


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3