jmeter 接口請求參數加密處理


 如圖,是其中一個場景的壓測腳本。

1.臨界部分控制器

  根據鎖名來控制並發,同一個鎖名之下,在同一時間點只能存在一個運行中,適用於控制並發的場景。

  這里使用是由於接口存在參數依賴的情況,可以避免出現依賴接口無法獲取依賴值的情況。

2.JSR223 預處理程序

  下載 jython-standalone-2.7.0.jar 放入jmeter的lib目錄中,然后jmeter界面選擇python語言<只支持python2,惡心的一批,好在python3和2的差別不大>。

  接口參數加密腳本:

import random
import base64
import hmac
import json
import hashlib

storeId = vars.get("store_id") # 獲取csv等方式參數化值
channelId = vars.get("channel_id")

parsms = {} # get請求參數
body = {"storeId": storeId, "channelId": channelId} # post請求參數

vars.put("body", json.dumps(body)) # 把參數加入到jmeter全局變量中,供接口請求使用

def ranstr(num):
    """
    隨機字符串
    :param num:
    :return:
    """
    H = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    salt = ""
    for i in range(num):
        salt += random.choice(H)
    return salt

def hmac_sign(params, body, random_str):
    """
    key value body 隨機字符串  加密
   根據加密方式編寫加密腳本
    :param params:
    :param body:
    :param random_str:
    :return:
    """
    body = json.dumps(body) if body else ""
    data = ""
    if isinstance(params, dict):
        for key, value in params.items():
            data += key + str(value)
    data += body + random_str
    vars.put("data", data)
    appsecret = "xxxxxxx".encode("utf-8")  # 秘鑰
    data = data.encode("utf-8")
    signature = base64.b64encode(hmac.new(appsecret, data, digestmod=hashlib.sha256).digest())  # 加密數據
    return bytes.decode(signature, encoding="utf8")

nonce = ranstr(10) # 10位隨機字符串

vars.put("nonce", nonce) # header中需要傳入的加密字段值
vars.put("sign", hmac_sign(parsms, body, nonce)) # header中需要傳入的加密字段值

  接口請求參數使用:

   header加密參數使用:

  通過查看結果樹可以發現,參數加密情況: 

 


免責聲明!

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



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