寫接口腳本的時候,很多接口涉及到簽名,今天介紹下用JMeter編寫簽名腳本的方法。
舉個例子,開啟紅包接口,請求方式為post
POST /v1/api/red/open
json請求參數
{
"red_id":1,
"timestamp":"1667033841",
}
算法:
1、將請求參數按照鍵名進行升序排序,需要帶上時間戳
2、拼接秘鑰,將秘鑰拼接在參數后面
3、將拼接后的結果取md5值
4、取hash值
JMeter腳本的結構如下,用戶自定義變量key(找開發同學要),隨機變量紅包獲取紅包id,Bean Shell PreProcessor獲取當前時間戳。
結構分析:
1、用戶自定義變量key(找開發同學要)
2、隨機變量紅包獲取紅包id,是1到100的數字
3、獲取當前時間戳Bean Shell PreProcessor
代碼:
import java.util.Map;
import java.lang.String;
timestamp = System.currentTimeMillis()/1000;
vars.put("timestamp",timestamp.toString());
4、HTTP請求,開啟紅包
sign的計算方法:
先將請求參數按照鍵名進行升序排序,需要帶上時間戳,也就是red_id=KaTeX parse error: Expected 'EOF', got '&' at position 9: {red_id}&?timestamp={timestamp},再拼接key,red_id=KaTeX parse error: Expected 'EOF', got '&' at position 9: {red_id}&?timestamp={timestamp}${key},取MD5值,可在函數助手中生成。
再取hash值,需要注意是哪種算法,有的是SHA-1,有的是SHA-256
調試小技巧:
如果頁面功能已經完成了,可以在頁面上先抓包,將腳本的所有變量例如red_id,timestamp都換成與抓包一樣的值,通過自己的腳本算出sign值,看是否與頁面一致,如果一致則正確。
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?