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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM