<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      jmeter JSR223 preprocessor javascript 接口信息加密

      在進行接口測試或壓測時,有時候需要對接口內容進行加密處理,否則服務器會直接拒絕請求。以下通過jmeter引入cryptoJS包的方式來實現接口參數信息的加密。

      先下載javascript cryptoJS 包,將文件拷貝到jmeterbin目錄中。

       jmeter 前置處理器中添加JSR223 preProcessor,如:jmeter-> pre processor -> JSR223 preprocessor,選擇語言:javascript。

       通過load(uri);加載cryptoJS的文件,當前初始路徑為jmeterbin目錄。

      定義引入的cryptoJS 變量。需要注意的是雖然JSR 223執行javascript語言,但是也不是全支持javascript語言。如定義變量關鍵字不支持:constlet之類的。因此定義變量盡可能用var 關鍵字。

      定義好cryptoJS變量后,可根據實際接口的加密方式,進行相關腳本的設計。

      以下是jmeter javascripthmac256加密代碼示例及說明僅供參考:

      load("./crypto-js/crypto-js.js");
      
      // 定義引入的cryptoJS變量
      var CryptoJS = CryptoJS;
      var timestamp=getTimestamp();
      var randomNum = getRandomInt(1,10);
      var nonce = getMD5();
      log.info(timestamp);
      log.info(randomNum);
      
      // 生成時間戳且截取保留10位長度
      function getTimestamp(){
          var timestamp = (Date.now()/1000).toString().substring(0,10);
          return timestamp;
          }
      
      //生成15位0-9的隨機數
      function getRandomInt(min,max){
          min = Math.ceil(min);
          max = Math.floor(max);
          nodeNum = "";
          for(var i=1;i<=15;i++){
              nodeNum+=Math.floor(Math.random()*(max-min+1))+min;
              }
          return nodeNum;
          }
      //通過md5加密時間戳和隨機數
      function getMD5(){
          message = timestamp+getRandomInt
          md5Hash=CryptoJS.MD5(message).toString();
          return md5Hash;
          }
      
      //Hmac256的加密方法
      function cryptoHmac(data,key){
          return CryptoJS.HmacSHA256(data,key).toString();
          }
      
      var method = sampler.getMethod();  //獲取當前的請求方法
      var path = sampler.getPath();          //獲取當前請求的path路徑信息
      var find_char1 = path.indexOf("?");  //確認path路徑中是否存在參數
      var find_char2 = path.indexOf("="); // 確認path路徑中是否存在參數
      var body_obj = sampler.getArguments();  //獲取當前請求參數的對象值
      var params_num = body_obj.getArgumentCount();  // 獲取當前請求的參數數量
      var body_params = "";
      
      log.info(params_num);
      //通過請求方法和path路徑找到參數值
      if(method.toUpperCase() == "GET" && find_char1>0 && find_char2>0){
          body_params = path.substr(find_char1+1);
      }else if(method.toUpperCase() == "POST" && params_num ==1){
          log.info("debug");
          body_params = body_obj.getArgument(0).getValue();
          
      }else if(method.toUpperCase() == "POST" && params_num>1){
          body_params = ""
          for(var i=0;i<params_num;i++){
              body_params+=body_obj.getArgument();
              }
      }else{
          log.info("無有效參數!");    
          }
      
      
      var secretKey = nonce+"//"+"jkdfsnkkkalslbcmsaad";
      //var body_params = body_value.getArgument(0).getValue();
      var hmac_value = cryptoHmac(body_params,secretKey);  //獲取加密后的內容
      log.info(hmac_value)
      var sample_header_obj = sampler.getHeaderManager();
      log.info(sample_header_obj);
      log.info(sample_header_obj.size());
      
      //將加密相關的信息添加到當前的請求頭中
      sample_header_obj.add(new org.apache.jmeter.protocol.http.control.Header("Sec-Fetch-timestamp",timestamp));
      sample_header_obj.add(new org.apache.jmeter.protocol.http.control.Header("Sec-Fetch-nonce",nonce));
      sample_header_obj.add(new org.apache.jmeter.protocol.http.control.Header("auth",hmac_value));
      sample_header_obj.add(new org.apache.jmeter.protocol.http.control.Header("Sec-Fetch-Mode","sk"));
      
      //將body的參數內容替換為加密后的內容
      if(method.toUpperCase() == "POST" && params_num ==1){
          log.info("dfsfdsfdsfds");
          var new_body_params = cryptoHmac(body_params,secretKey);
          body_obj.getArgument(0).setValue(new_body_params);    
      }

       

      實際運行結果:

       在運行結果數中的參數信息:

       在運行結果數中的請求頭信息

       

      posted @ 2024-08-03 15:39  西夏一品唐  閱讀(860)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩一欧美内射在线观看| 真人抽搐一进一出视频| 亚洲中文一区二区av| 99精品国产丝袜在线拍国语| 激情综合五月| 国产精品无码一区二区在线| 国产自拍在线一区二区三区| 麻阳| 好吊视频在线一区二区三区 | av无码一区二区大桥久未| 国产毛a片啊久久久久久保和丸| 中文文精品字幕一区二区| 国产精品视频中文字幕| 国产欧美日韩亚洲一区二区三区 | 伊人成伊人成综合网222| 国产av丝袜旗袍无码网站| 8av国产精品爽爽ⅴa在线观看| 自拍偷在线精品自拍偷99| 午夜精品区| 激情综合网激情五月伊人| 鄂州市| 色窝窝免费播放视频在线| 亚洲精品成人福利网站| 无码免费大香伊蕉在人线国产| 久久精品国产亚洲av麻| 中文字幕人成无码免费视频| 精品一区二区三区在线观看l| 无码福利一区二区三区| 成人精品大片—懂色av| 中文字幕国产精品自拍| 国产美女被遭强高潮免费一视频| 欧美熟妇乱子伦XX视频| 欧美成人看片黄A免费看| 丰满的人妻hd高清日本| 免费人妻无码不卡中文18禁| 天天躁夜夜躁天干天干2020| 欧美精品人人做人人爱视频| 国产gaysexchina男外卖 | XXXXXHD亚洲日本HD| 国产成人无码AV片在线观看不卡| 国产一区二区精品自拍|