jmeter压测学习37-请求头部自动签名带上X-sign参数

前言

接口请求 body 带有 sign 签名参数,sign 签名是根据请求 body 除去 sign 本身参数后,拼接请求参数最后 md5 加密生成的。
前面一篇是把 sign 前面参数放到请求的 body 里面,这篇继续讲把签名参数放到请求头部的情况。

实现方式

http 请求需要进行签名校验 X-Sign,放到请求头部

Content-Type: application/json; charset=UTF-8
X-Sign: 2a76a7d2ec34760afb7f4f3ff5a02ef3

body传参:{“username”: “yoyo”, “password”: “123456”, “mail”: “”}

sign是由 请求body拼接排序后+"key" 生成的值 md5 加密而来

具体签名规则,可以参考前面这篇https://www.cnblogs.com/yoyoketang/p/14229289.html
讲下整体的思路和实现方式,在 BeanShell 预处理程序先获取请求的头部,拿到签名值后添加到请求的头部,然后发送新的请求头部,整体实现思路如下
1.先获取请求 headers 值
2.获取到签名的 sign 值(具体参考前面的,这里就不讲签名的实现了)
3.添加签名参数和对应的值到请求头部
4.发送新的请求头部

添加 BeanShell 预处理程序

http头部管理器,可以不用加 X-sign 参数

添加-前置处理器-BeanShell 预处理程序

根据签名规则,拿到 sign 值后添加到请求头部,实现代码如下

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.testelement.property.CollectionProperty;
// 作者-上海悠悠 QQ交流群:717225969
// blog地址 https://www.cnblogs.com/yoyoketang/

//sampler 里面有个getHeaderManager 可以获得请求头
HeaderManager headers =sampler.getHeaderManager();

// 打印全部的头部内容
log.info(headers.getHeaders().getStringValue());

// 中间省略签名拿到的sign值,这里给固定的"aaaaaaaaaaaaaaaaaa"

// new 一个Header对象
signHeader = new Header("X-sign","aaaaaaaaaaaaaaaaaa");

// 添加 Header 到请求头管理器
headers.add(signHeader);

// 打印全部的头部内容
log.info(headers.getHeaders().getStringValue());

代码中间省略签名拿到的 sign 值,这里给固定的”aaaaaaaaaaaaaaaaaa”,签名值根据开发文档自己去实现,也可以找开发给个 jar 包。

打印的日志内容可以看到添加 X-sign 前后的对比

INFO o.a.j.u.BeanShellTestElement: [Content-Type application/json]
INFO o.a.j.u.BeanShellTestElement: [Content-Type application/json, X-sign aaaaaaaaaaaaaaaaaa]

查看结果数看到请求头部已经带上了 X-sign

2021年第六期《python接口自动化+测试开发》课程,1月9号开学(火热报名中!)

本期上课时间:1月9号-4月18号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • Jmeter接口测试-B接口传参使用A接口响应数据

    实例: A接口:http://127.0.0.1:8000/api/get_event_list/?eid=1&name=pyrequest01 B接口:http://127.0.0.1:80 ...

  • jmeter压测学习36-请求body自动签名带上sign参数

    前言 接口请求body带有sign签名参数,sign签名是根据请求body除去sign本身参数后,拼接请求参数最后md5加密生成的. 使用 jmeter 测试接口,我们希望在请求之前修改 post b ...

  • jmeter压测学习47-发soap请求测试webservice接口

    前言 jmeter3 的版本可以新建一个SOAP/XML-RPC Request 的请求,直接测试webservice的接口. jmeter5.1.1 版本已经去掉了自带的SOAP/XML-RPC R ...

  • jmeter压测学习13-添加配置元件之HTTP请求默认值

    前言 在使用jmeter测接口的时候,当我们的接口数量越来越多的时候,在每个接口里面都需要添加服务器ip和端口. 当测试环境的ip和端口发生改变时,需一个个去修改这时候去维护接口就很麻烦,我们希望有个 ...

  • jmeter压测学习39-获取post请求x-www-form-urlencoded格式的数据

    前言 post请求的参数有一些是json格式,也有一些是x-www-form-urlencoded格式,前面讲签名的时候获取到post请求的是json格式. 本篇继续讲x-www-form-urlen ...

  • jmeter压测学习2-linux运行jmeter环境

    前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在linux服务器上使用jmeter做压力测试. 本篇记录下linux上搭建jmeter环境,以及运行jmeter脚本,查看报告 ...

  • jmeter压测学习5-XPath提取器

    前言 有些web项目是前后端不分离的,返回的内容不是那种纯进口返回json格式,返回的是一个HTML页面. 并且有些参数是隐藏在html里面的,需要先从html页面中取出隐藏参数,如:csrfmidd ...

  • jmeter压测学习4-正则表达式提取

    前言 上一个接口返回的token作为下个接口的入参,除了前面一篇讲到的用json提取器提取,也可以用正则提取. json提取器只能提取json格式的数据,正则可以匹配任意的返回. 我现在有一个登陆接口 ...

  • jmeter压测学习3-提取json数据里面的token参数关联

    前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有 ...

  • jmeter压测学习7-登录参数化(CSV 数据文件设置)

    前言 我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况. 如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有 ...