Jmeter 请求签名api接口-BeanShell
Jmeter 请求签名api接口-BeanShell
- 项目签名说明
- 编译扩展jar包
- jmeter 使用 BeanShell 调用jar包中的签名方法
项目签名说明
有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下
- 请求参数类型
body 参数
原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&body=json参数
- request 参数
原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&key1=value1&key2=value2
key 按照升序排列
- 签名算法
使用 sha512Hex 签名算法
String inputData = "name=scd&address=广东";
String encodeData = URLEncoder.encode(inputData, StandardCharsets.UTF_8.name());
String result = DigestUtil.sha512Hex(encodeData, StandardCharsets.UTF_8.name());
System.out.println(result);
originData 使用 URLEncoder.encode 编码,避免出现中文。在使用 sha512Hex 算法计算出签名串 sign
- 请求头数据
sign:sign
timestamp:1701948943849
appId:xxx
项目地址
https://gitee.com/3281328128/web-jdk17/tree/dev/
启动项目后 swagger 访问地址
http://localhost:8080/boot3/swagger-ui/index.html

编译扩展jar包
jmeter 支持扩展的jar包,使用BeanShell调用jar包中的方法。项目地址为https://gitee.com/3281328128/jmeter-api-sign。目前jmeter5.6.2版本支持jdk8编译的扩展jar,之前用jdk17编译出来的扩展jar包,不能运行签名算法,后面改成使用jdk8编译的jar包
引用的jar包需要带jar-with-dependencies 结束的jar,如图所示

如果使用 maven 编译,将依赖编译到jar包里面配置如下所示
<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>com.itsenlin.Helloworld</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id> <!-- this is used for inheritance merges --><phase>package</phase> <!-- bind to the packaging phase --><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
jmeter 使用 BeanShell 调用jar包中的签名方法
- 选择测试计划导航栏,配置扩展的jar

- 配置BeanShell 预处理程序
路径 添加 -》前置处理器 -》BeanShellProcessor

BeanShell 的具体配置如下所示

使用扩展jar包中的签名算法
import com.alibaba.fastjson.JSON;
import com.scd.sign.SignUtil;String inputParam = "{\n" +" \"id\": 0,\n" +" \"userName\": \"string\",\n" +" \"password\": \"string\"\n" +"}";
String inputJson = JSON.parseObject(inputParam).toJSONString();
log.info("request json " + inputJson);
String timeStamp = String.valueOf(System.currentTimeMillis());
String appId = bsh.args[0];
String appKey = bsh.args[1];
String sign = SignUtil.generateBodySign(appId, appKey, timeStamp, inputJson);
vars.put("body", inputJson);
vars.put("appId", appId);
vars.put("timestamp", timeStamp);
vars.put("sign", sign);
vars 中存入了原始的请求参数,http的请求的body参数需要取vars中存入的数据 ${body}

请求头中需要的数据 appId、timestamp、sign 也可以从 vars 中获取

BeanShell 的用法可以查看 【jmeter】BeanShell用法详细汇总
- 配置接口响应断言
路径 添加 -》断音 -》JSON断言

- 配置查看结果树
配置查看结果树之后才能查看请求的记录,配置路径 添加 -》监听器 -》查看结果树

- 启动线程组验证

启动之后,可以在查看结果树查看请求记录

点击黄色的感叹号,可以查看运行的日志

相关文章:
Jmeter 请求签名api接口-BeanShell
Jmeter 请求签名api接口-BeanShell 项目签名说明编译扩展jar包jmeter 使用 BeanShell 调用jar包中的签名方法 项目签名说明 有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下…...
No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)
有两种情况: 压根没安装下载了但没设为库或方法不对 大多数为第一种情况: 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…...
word文档中数字格式转换(排版助手)
示例:李老师收入了234243.33元,产量3000公斤; 张老师收入了2324324元,产量45555公斤; 孙老师收入了600000元,产量2342公斤 王老师收入了1234443243元,产量1243142公斤。 1、数字批量转换成千…...
阿里云docker加速
文章目录 一、 阿里云镜像仓库配置二、配置加速1. CentOS2. Mac3. Windows注意 一、 阿里云镜像仓库配置 1.注册阿里云账号,并登陆到阿里云后台,进入控制台面板 2.进入控制台以后,找到左上方的三横的功能列表按钮,在弹出来的功能…...
Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现
0x01 产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校、 公安、 政企、 医疗、 金融、 能源等行业之中,针对网络流量的信息进行日志留存,可对用户上网行为进行审计,逐渐形成大数据采集、 大数据分析、 大数据整合的工作模式…...
openGauss学习笔记-152 openGauss 数据库运维-备份与恢复-物理备份与恢复之PITR恢复
文章目录 openGauss学习笔记-152 openGauss 数据库运维-备份与恢复-物理备份与恢复之PITR恢复152.1 背景信息152.2 前提条件152.3 PITR恢复流程152.4 recovery.conf文件配置**152.4.1 归档恢复配置****152.4.2 恢复目标设置** openGauss学习笔记-152 openGauss 数据库运维-备份…...
PhpStorm基本配置及常用快捷键
重要Preference配置 激活服务器 http://jetbrains.tencent.click/http://owo.helphttp://idea.imsxm.com/http://www.0-php.com:10172017.3以上版本 JetBrains IDE 2017.3以上版本,激活检测机制变成了动态封禁域名,导致大部分域名激活被屏蔽了࿰…...
Autosar通信实战系列05-CanNM模块进阶常见问题思考
本文框架 前言1. UDS 0x28服务控制Nm报文收发后对状态机有影响?2. 节点网络启动后第一帧是否必须是网络管理报文?3. 主动唤醒后发送的第一帧报文为NM报文如何配置?4. CanNmMsgCycleOffset的使用场景?5. 什么情况下CBV中RepeatMessageRequest Bit置位?6. 主动(本地)唤醒与…...
Java中多态的一些简单理解
什么是多态 1.面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 2.多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发…...
011 数据结构_哈希
前言 本文将会向你介绍哈希概念,哈希方法,如何解决哈希冲突,以及闭散列与开散列的模拟实现 1. 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经…...
案例025:基于微信小程序的移动学习平台的设计与实现
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...
写实3D游戏模型纹理贴图设置
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格: …...
如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用
与地理位置有关的应用相信大家都很熟悉了,无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配,我们几乎每天都在使用类似的功能与服务。不过你有没有想过,如何在自己开发的应用中嵌入类似的功能? 本文Akamai将为大家提…...
【开源】基于JAVA的木马文件检测系统
项目编号: S 041 ,文末获取源码。 \color{red}{项目编号:S041,文末获取源码。} 项目编号:S041,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…...
KaiOS 运营商相关文件operator_variant_manager.js代码功能和调试
gaia/apps/system/js/operator_variant_manager.js at master mozilla-b2g/gaia GitHub js文件接口功能 No 接口/常量 功能 1 OperatorVariantManager var OperatorVariantManager function(core) 2 OperatorVariantManager.IMPORTS OperatorVariantManager.I…...
【数据结构(六)】排序算法介绍和算法的复杂度计算(1)
文章目录 1. 排序算法的介绍1.1. 排序的分类 2. 算法的时间复杂度2.1. 度量一个程序(算法)执行时间的两种方法2.2. 时间频度2.2.1. 忽略常数项2.2.2. 忽略低次项2.2.2. 忽略系数 2.3. 时间复杂度2.4. 常见的时间复杂度2.5. 平均时间复杂度和最坏时间复杂度 3. 算法的空间复杂度…...
带有 RaspiCam 的 Raspberry Pi 监控和延时摄影摄像机
一、说明 一段时间以来,我一直想构建一个运动激活且具有延时功能的树莓派相机,但从未真正找到我喜欢的案例。我在thingiverse上找到了这个适合树莓派和相机的好案例。它是为特定的鱼眼相机设计的,但从模型来看,我拥有的廉价中国鱼…...
Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践
作者|某工商信息商业查询平台 高级数据研发工程师 李昂 信息服务行业可以提供多样化、便捷、高效、安全的信息化服务,为个人及商业决策提供了重要支撑与参考。对于行业相关企业来说,数据收集、加工、分析能力的重要性不言而喻。以某工商信息…...
【尘缘送书第六期】2023年度学习:AIGC、AGI、GhatGPT、人工智能大模型实现必读书单
【文末送书】今天推荐几本AIGC、AGI、GhatGPT、人工智能大模型领域优质书籍。 目录 前言1 《ChatGPT 驱动软件开发》2 《ChatGPT原理与实战》3 《神经网络与深度学习》4 《AIGC重塑教育》5 《通用人工智能》6 文末送书 前言 2023年是人工智能大语言模型大爆发的一年࿰…...
我的 CSDN 三周年创作纪念日:2020-12-12
本人大叔一枚,自1992年接触电脑,持续了30年的业余电脑发烧爱好者,2022年CSDN博客之星Top58,阿里云社区“乘风者计划”专家博主。自某不知名财校毕业后进入国有大行工作至今,先后任职于某分行信息科技部、电子银行部、金…...
新手福音:通过快马AI生成代码学习下拉词功能实现原理
今天想和大家分享一个特别适合前端新手练手的小项目——实现一个基础的下拉词搜索框。这个功能看似简单,但涵盖了事件监听、数组过滤、DOM操作等前端开发的核心概念。我自己在学习过程中发现,通过实际动手实现一个小功能,比单纯看理论要容易理…...
智能水印引擎:重新定义摄影后期效率标准
智能水印引擎:重新定义摄影后期效率标准 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 问题发现:数字摄影时代的效率困境 …...
多语言翻译工作流:OpenClaw协同千问3.5-27B实现文档自动本地化
多语言翻译工作流:OpenClaw协同千问3.5-27B实现文档自动本地化 1. 为什么需要智能翻译流水线? 去年参与一个开源项目时,我遇到了文档翻译的噩梦。团队需要将技术文档同步翻译成英、日、韩三种语言,传统流程是:先用机…...
SILERGY矽力杰 SY81103ABT NA DC-DC电源芯片
特性 内部MOSFET低导通电阻:顶部80m2,底部40mO 宽输入电压范围:4.5V~18V 最高输出电流3A 1.5%0.6V参考电压 精确的EN阈值 SY81103和SY81103C采用脉冲频率调制(PFM)模式运行 SY81103E和SY81103B的强制连续导通模式(FCCM)操作 内部软启动限制浪涌电流 支持预偏置输出的…...
谷歌Home应用与Gemini Live更新:AI赋能智能家居与新闻交互新体验
谷歌Home应用更新:让智能家居控制更自然本周谷歌对其Home应用进行更新,借助Gemini AI助手,让用户控制智能家居变得“更加自然和可靠”。更新后,用户能以更自然的方式描述需求,如描述灯光类型为“海洋的颜色”ÿ…...
gcc编译与gdb使用
一、GCC介绍1.1 GNU工具集GNU 工具集是由自由软件基金会发起的 GNU 项目孕育而生,始于20世纪80年代初,旨在构建完全自由的操作系统,其核心原则强调用户自由使用、修改和分发软件的权利,极大推动了自由软件运动和开源生态系统发展&…...
Zotero Reference插件:5个步骤实现PDF文献自动化管理
Zotero Reference插件:5个步骤实现PDF文献自动化管理 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference Zotero Reference是一款革命性的Zotero插件,专门为学…...
MelonLoader Cpp2IL组件加载故障解决方案:从排查到优化
MelonLoader Cpp2IL组件加载故障解决方案:从排查到优化 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 问题现象&am…...
javaweb物流运输仓储仓库采购信息系统平台的设计与实现
目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点扩展功能安全与权限项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 物流运输管理模块 运输订单管理…...
Qwen-Image-2512-SDNQ开源大模型:SVR低秩微调技术落地解析
Qwen-Image-2512-SDNQ开源大模型:SVR低秩微调技术落地解析 1. 引言 你有没有遇到过这样的烦恼?想用AI生成一张图片,要么得自己折腾复杂的模型部署,要么得忍受在线服务漫长的排队和模糊的画质。特别是对于开发者来说,…...
