Jmeter 请求签名api接口-BeanShell

本文介绍了如何在JMeter中使用BeanShell扩展jar包,对API接口的body参数进行SHA512Hex签名算法处理,包括编码、签名生成及使用Maven配置打包jar文件。

项目签名说明

有签名算法的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包中的方法。项目地址为

### 配置带签名的HTTP请求头 为了在JMeter中配置包含签名的HTTP请求头,通常需要先理解如何创建和管理这些签名。这可以通过编写外部脚本来实现,该脚本负责生成必要的签名,并将其传递给JMeter测试计划中的HTTP Header Manager组件。 #### 使用Python脚本生成签名 假设有一个Python脚本用于生成API调用所需的签名[^2]。此脚本可以根据特定算法处理密钥和其他参数来计算签名值。一旦有了这个签名字符串,在JMeter里就可以利用BeanShell PreProcessor或JSR223 PreProcessor执行这段Python代码(如果环境支持),从而动态地为每次请求准备最新的签名信息。 对于实际操作来说: 1. **引入外部库/工具** 如果依赖于某些特殊加密方式,则可能还需要确保相应的Java类库被放置到了`lib`目录下以便加载使用;同时确认所有必需的第三方模块已安装好以供Python解释器访问。 2. **设置预处理器** 在线程组内添加一个合适的预处理器元件,比如`BSF PreProcessor` 或者 `JSR223 PreProcessor (Groovy)` ,并将上述提到过的Python逻辑嵌入其中。注意调整语法使之适应所选的语言环境。 3. **定义变量存储签名结果** 让预处理器把最终得到的签名存放到用户自定义的一个属性名之下——例如`${signature}` ——之后就能方便地在整个测试方案里面引用它了。 4. **应用到HTTP头部** 接下来转至同一级别的另一个组件即`HTTP Header Manager` 。在此处新增一条记录指定名称为`Authorization`或其他适当的名字,并将值设成类似于`Bearer ${signature}`的形式,这样就实现了携带有效认证凭证随同每一次网络交互发出的目的。 ```groovy // 示例 Groovy 代码片段展示如何获取并保存签名作为 JMeter 变量 def signature = "your_signature_generation_logic_here" vars.put("signature", signature) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Chengdu.S

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

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

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

打赏作者

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

抵扣说明:

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

余额充值