Jmeter 请求签名api接口-BeanShell

基于 JMeter API 开发性能测试平台 2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili​​​​​​也方便你下次能够快速查找。如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结, 阅读详情

项目签名说明

有签名算法的api接口本地不好测试,使用BeanShell 扩展jar 包对参数进行签名,接口签名算法使用 sha512Hex 算法。签名的说明如下

  1. 请求参数类型
    body 参数
    原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&body=json参数
  1. request 参数
    原始字符串 originData
appId=appId&appKey=appKey&timeStamp=当前时间戳&key1=value1&key2=value2

key 按照升序排列

  1. 签名算法
    使用 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

  1. 请求头数据
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包中的签名方法

  1. 选择测试计划导航栏,配置扩展的jar
    在这里插入图片描述
  2. 配置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用法详细汇总

  1. 配置接口响应断言
    路径 添加 -》断音 -》JSON断言
    在这里插入图片描述
  2. 配置查看结果树
    配置查看结果树之后才能查看请求的记录,配置路径 添加 -》监听器 -》查看结果树
    在这里插入图片描述
  3. 启动线程组验证
    在这里插入图片描述
    启动之后,可以在查看结果树查看请求记录
    在这里插入图片描述
    点击黄色的感叹号,可以查看运行的日志
    在这里插入图片描述
JMeter处理接口签名sign Jmeter脚本的结构如下,用户自定义变量key(找开发同学要),随机变量红包获取红包id,Bean Shell PreProcessor获取当前时间戳。写接口脚本的时候,很多接口涉及到签名,今天介绍下用Jmeter编写签名脚本的方法。再取hash值,需要注意是哪种算法,有的是SHA-1,有的是SHA-256。1、将请求参数按照键名进行升序排序,需要带上时间戳。2、随机变量红包获取红包id,是1到100的数字。举个例子,开启红包接口,请求方式为post。2、拼接秘钥,将秘钥拼接在参数后面。 阅读详情

相关推荐

jmeter 用beanShell preProcessor 生成sign并使用

背景 最近在进行压力测试的时候,需要在发送请求的时候生成签名,因为现在的REST api大多会传sign(签名)字段,各接口对sign签名的内容、方式可能不一样,但一般模式都是从接口的入参中选择部分内容组成一个字符串,然后再拼接一个 secretKey 或 appKey (像秘钥一样,值固定) ,最后对这个拼接起来的字符串进行MD5的运算或者其他自定义的算法,将结果赋值给sign。完整规范的接口文档都会有sign的算法描述。因此,编写了本篇文章记录以下。 解决步骤 (1)确认签名算法。 (2)如.

wangxuelei036的博客 9114

Jmeter API文档-常用类使用方法介绍

Jmeter本身就集成了一些比较好用的类,可以在脚本开发中辅助使用,具体使用方法可以参考jmeter的API文档。2)beanshell中,通过vars.get()、vars.put()方法使用。2)beanshell中,直接通过sampler.xxx()来调用具体的类型。2)beanshell中,直接通过prev.xxx()来调用具体的类型。可以通过vars设置局域变量,提取局域变量的值。需要引用HTTPFileArg相关类。1)不需要引用额外的类。1)不需要引用额外的类。1)不需要引用额外的类。

weixin_44593330的博客 2428

JMeter Beanshell脚本进阶:从参数化到签名接口实战

在性能测试与接口自动化领域,脚本化是实现复杂逻辑和动态数据处理的核心能力。其原理在于通过编程方式扩展测试工具的内置功能,从而突破固定元件的限制,实现高度定制化的测试流程。这一技术价值在于能够处理动态参数生成、复杂逻辑判断、自定义断言以及外部数据交互等场景,极大提升了测试的灵活性和覆盖深度。在JMeter中,Beanshell作为经典的脚本解决方案,允许测试工程师使用近似Java的语法,在请求前后注入自定义逻辑,实现诸如**动态签名计算**和**JSON数据处理**等高级功能。掌握Beanshell脚本编写,

clijovtbq401783153的博客 309

Jmeter关于测试API的配置说明教程

Jmeter的常用配置说明

weixin_44257107的博客 1580

jmeter API 中文版+分布式部署

jmeter API 中文版+分布式部署

beanshell-maven-plugin-archetype-1.2.2-sources.jar

官方版本,亲测可用

jmeter实现带RSA的sign签名

实现开放接口 我们通常需要根据参数 及开发提供的密钥 生成一个签名 在根据解签签证成功后 请求接口 接口名称:/api-open-center/open/gateway 请求方式:post 参数类型:form-data 根据正常的添加线程添加http请求设置好 添加默认线程组 在添加一个http请求,设置好url及参数及请求方式,请求类型 再添加http请求头 比如说Content-Type参数之类的头部参数 由于我们需要的签名需要根据参数生成,所以我们需要加一个BeanShel...

LXiaYu123456789的博客 1122

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 614

md5加密后如何再加salt_使用jmeter对字符串进行加密

之前介绍过如何利用jmeter函数助手构造时间戳参数,本次再来研究下另一个功能:对字符串进行加密下面通过一个例子来演示一下如何对请求参数进行md5加密准备工作这次仍然使用百度通用翻译接口当做案例,因为它刚好有一个参数就是经过md5加密得来的之前用postman来发送这种有md5加密参数的请求时,也是用百度翻译做的例子,传送门:postman系列(十):发送携带md5签名、随机数等...

weixin_39939303的博客 346

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 518

基于OpenAI Agents构建多智能体工作流:从原理到实战

多智能体系统(Multi-Agent System)是人工智能领域的重要分支,它通过多个智能体(Agent)的协作与交互,解决单一智能体难以处理的复杂任务。其核心原理在于将任务分解、分配与协调,每个智能体具备特定能力,通过通信机制实现信息共享与决策协同。在工程实践中,多智能体框架的价值在于提升任务处理效率、增强系统鲁棒性,并支持模块化开发。典型的应用场景包括自动化工作流编排、复杂问题求解以及人机协同交互。本文以OpenAI Agents SDK为例,深入探讨如何利用其提供的智能体(Agent)、会话(Ses

weixin_28725959的博客 603

JMeter 验签加密

1.首先执行登录接口,用JSON提取器把获取到的token信息,存放到全局的token这个变量中,方便下面验签中获取 2.在登录成功后,需要写BeanShell取样器来生成signature。 注意BeanShell需要在获取数据接口的上面,不然获取不到signature,requestTime等信息。 用Jmeter的系统方法,生成时间戳与nonce,然后用SHA1来加密。 import org.apache.commons.codec.binary.Base64; import org.apac

g3230863的博客 669

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

BeanShell Sampler实战:JMeter动态参数、签名生成与性能避坑指南

在JMeter接口压测与自动化测试场景中,动态参数和复杂业务逻辑常常让脚本编写陷入困境。BeanShell作为一款轻量级Java脚本解释器,被嵌入JMeter内部,能在请求发送前动态执行代码,完成签名生成、变量加工、响应断言等操作。其核心原理是通过脚本访问JMeter的vars、prev、sampler等预置对象,在不重启测试计划的情况下完成数据改造。掌握这一工具,可以大幅提升测试脚本的灵活性,尤其适合支付接口签名的实时计算、登录token的二次处理、测试数据批量构造等高频场景。同时,BeanShell在性

weixin_28826545的博客 161

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2168

1 初识智能化测试

非常感谢您可以和我一起来聊一聊智能化测试的一些事。智能化测试是一个新鲜又老旧的问题,说新鲜是因为很多人当听到智能化测试都会联想到人工智能、机器学习、深度学习等高大上的技术,很多时候觉得离我们的实际工作还很远;说老旧,是因为智能化测试的一些技术的发展在行业里面已经很久了,例如符号执行、静态分析等技术已经有很长的历史了。近些年,随着测试技术的的飞速发展,智能化测试也有了越来越多的实践,优秀的开源项目慢慢的被行业推行并且落地。那么在这里我们就一起来聊聊智能化测试以及智能化测试好的思路、实践、方法以及技术落地过程。

Criss@陈磊 2625

【精通JMeter接口测试-完结】05-JMeter通关收官!BeanShell和接口签名

🔥精通 JMeter 接口测试终章!吃透 BeanShell 脚本神器与接口签名核心,从 BeanShell 内置变量、调用 Java/Python/jar 包,到 MD5/RSA 加密、签名生成全流程实战,拆解防篡改签名逻辑,手把手教你搞定企业级接口测试,学完直接上手落地,解锁 JMeter 进阶天花板~

弹简特的博客,步履不停,持续学习,多尝试,多复盘,多沉淀。 5726

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为

KJ.JK 715

JMeter处理接口签名之BeanShell实现MD5加密

BeanShell实现MD5加密

weixin_44867191的博客 2534

数据治理路径之辩:从“先治后用”到“边用边治”,企业如何选择最优路径?

数据治理是企业在数智化建设中的核心挑战,主要涉及三种时序策略:先治理后使用、先用后治理和边用边治。先治理后使用强调在数据应用前建立完整的治理框架,适合高合规要求的行业,但可能响应滞后。先用后治理则优先释放数据价值,适合快速变化的业务环境,但可能累积数据质量问题。边用边治寻求动态平衡,通过持续改进实现治理与应用的同步迭代,适合复杂数据环境。技术选型决策矩阵和实施方法论提供了具体的操作指南,建议根据组织特性和业务需求选择适配方案,并通过渐进式演进路径实现治理与业务的共生演进。

石榴姐yyds 405

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jmeter 接口测试 签名_Jmeter之API接口签名验证测试

一、参数签名的原理是什么?请求方对请求数据按一定的规则排序,加上appkey码一起通过MD5加密生成签名,然后把请求数据和签名发给服务方,服务方拿到数据后,去掉appid和无用的数据,通过appid找到请求方的appkey,然后按同样的规则处理数据,并加上appkey通过MD5加密也生成签名,然后和请求方生成的签名去对比,如果值一样,签名验证通过。二、参数签名的优势有哪些?安全参数签名可以保证开发...

weixin_42132325的博客 2321

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用Postman和JMeter进行signature签名

​ 有些接口的请求会带上sign(签名)进行请求,各接口对sign的签名内容、方式可能不一样,但一般都是从接口的入参中选择部分内容组成一个字符串,然后再进行签名操作, 将结果赋值给sign;完整规范的接口文档都会有sign的算法描述。这里通过Postman的Pre-request Script以及JMeter的BeanShell前置处理器进行接口签名的处理。

jj2772367224的博客 2638

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jmeter测试对外接口使用BeanShell生成签名

jmeter的简单应用参考jmeter的简单应用 一般对外的接口都会使用签名进行身份和参数校验 使用jmeter测试需要签名的接口有两种办法 1.使用服务器转发请求。在服务器中生成签名并转发请求到目标服务器 2.使用BeanShell预处理程序。根据签名规则,可能需要暴露secreteKey等信息 下面介绍BeanShell预处理生成签名。 beanShell测试代码(使用DigestUtils需要导入commons-codec.jar包) import org.apache.commons

wl的博客 1110

【Jmeter】什么是BeanShell?

BeanShell Postprocessor(BeanShell后置处理程序)其实就是通过脚本来获取响应相关的数据,用于做一些和其他接口有交互的场景,如接口A的响应结果的某个字段用于接口B的入参的时候,就可以通过BeanShell Postprocessor(BeanShell后置处理程序)来提取到接口A的响应结果的数据,然后参数化传递给接口B或者将提取的数据写入文件等。添加BeanShell Postprocessor后置处理器,比如我们想要获取请求后的响应状态码、响应头响应体等数据都是可以的。

2301_77645750的博客 1261

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是BeanShell Preprocessor(BeanShell预处理程序)和BeanShell Postprocessor(BeanShell后置处理程序),能通过编写代码的方式更好的处理接口性能测试中的请求前置入参和后置数据的获取等等。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 5629
上一篇: Github 开启 2FA-无需下载软件实现
下一篇: Jmeter 测试脚本录制器-HTTP 代理服务器
Chengdu.S
博客等级 码龄9年 282粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chengdu.S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值