Postman预处理自动生成签名参数

发表于:2023-3-31 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:三人成虎    来源:博客园

  很多接口会有签名参数,为了防止被恶意篡改参数,所以对所有参数用一定规则排列后+盐再MD5加密。
  有些开发可能配置了在测试环境暂时屏蔽签名,或者用一个通用签名。但其实完全可以在不破坏系统完整性的前提下,又能很轻松的让postman根据规则自动生成签名参数来进行测试。
  这2条语句可以分别获得body参数和url中的query参数。
  let queryParam = pm.request.url.query.members;
  let param = request.data;
  let key = "xxxxxxxxxxxx"; //签名Key
  try {
    let json = JSON.parse(param); //序列化JSON BODY
    param = json;
    }catch(err){
    //BODY不是JSON格式
    }
  //Get & 合并GET和POST参数
  for (let i in queryParam){
      param[queryParam[i].key] = queryParam[i].value;
  }
  //Post
  //取key
  var keys = [];
  for (let k in param){
      if (k == 'sign'){
          continue;
      }
      keys.push(k);
      
  }
  //排序
  keys.sort();
  //取value
  var kv = [];
  for (let k of keys){
      kv.push(k + '=' + encodeURIComponent(param[k])) //urlencode编码
      
  }
  //拼接
  var sign = kv.join('&');
  sign = sign + key;
  console.log(sign);
  sign = CryptoJS.MD5(sign).toString();
  console.log(sign);
  //设置环境变量
  postman.setEnvironmentVariable("sign", sign);
  PS: 不同公司、不同接口规则不同,例如不需要urlencode、不需要排序的请自行修改脚本再用{{sign}}从环境变量中取出sign值。
  成功请求
  这段脚本兼容GET参数、以及表单形式的BODY和JSON形式的BODY。
  保持登录状态
  通过设置环境变量,我们可以把登录接口返回的认证信息存起来,之后其他接口可以直接从环境变量中获取。达到保持登录状态的效果。
  先在登录接口的Tests中获取token参数并放到环境变量中。
  //设置token
  var responeData = JSON.parse(responseBody); //把响应结果转为JSON对象
  pm.environment.set("token", responeData.data.token); //从响应结果JSON对象中获取到token参数,并放到环境变量
  console.log("token: " + responeData.data.b_token); 
  然后在业务接口的头信息中,用{{token}}方式从环境变量中获取token实际值。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号