• 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

  • 相关阅读:
    看完了红米5 Plus发布会,我觉得魅蓝Note6降价降多了
    红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
    java.lang.NoClassDefFoundError: org/apache/ibatis/mapping/DatabaseIdProvider
    mac tree命令
    spring boot集成dubbo
    玩转Spring Boot 集成Dubbo
    Linux下复制粘贴快捷键
    用创业舞动飞扬的青春
    SpringMVC 学习笔记(一) Hello World
    从 Kubernetes 谈容器网络
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14238395.html
Copyright © 2020-2023  润新知