前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >postman系列(十):发送携带md5签名、随机数等参数的请求

postman系列(十):发送携带md5签名、随机数等参数的请求

作者头像
冰霜
发布2022-03-15 15:52:39
1.9K0
发布2022-03-15 15:52:39
举报
文章被收录于专栏:冰霜的软件测试技术分享

之前在借助百度翻译接口做翻译小工具的时候,需要把参数进行md5加密后再传输;

而在平时的接口测试工作中难免会遇到类似这种请求参数,比如md5加密、时间戳、随机数等等;

固然可以先计算出准确的参数,但这样的话修改成本就太大了,每次都得改,所以我们在发送请求前需要提前构造好参数供请求调用;

像随机数、md5数字签名这种通过python可以很便捷的实现

这里主要说一下如何在postman中实现自动生成md5等并调用,算是继续补充postman的使用技巧吧

继续拿百度通用翻译接口作为栗子: 接口文档如下

然后是一些说明

(1)签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式;

(2)为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个);

(3)签名生成方法如下:

1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥 的顺序拼接得到字符串1

2、对字符串1做md5,得到32位小写的sign

代码语言:javascript
复制
官方举例:将apple从英文翻译成中文:
请求参数:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密钥: 12345678
生成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整请求为:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

OK,下面进入正题,介绍如何在postman中生成随机数、md5签名,然后调用

1.首先要在Pre-request Script标签中编写脚本

因为要自动生成随机数、md5签名等传给接口,然后调用接口,即在请求前做好这些准备工作,所以要在Pre-request Script标签中编写脚本

2.编写思路

(1)把一些固定参数以及会被其他参数引用到的参数设置为环境变量,所以先在环境变量中添加appid和secretKey

(2)sign=appid+q+salt+密钥 的MD5值,

可以看到要翻译的字符串q也是生成sign的一部分,但是每次翻译的内容不同,意味着q是变化的,所以不能把它写死到postman的params中。

开始想把q直接设置成环境变量,然后在Pre-request Script中读取这个环境变量,结果发现在Pre-request Script中是无法通过{{}}引用环境变量的;

然后就换个思路,还是把q写到Pre-request Script中,先把它定义为一个字符串,然后再创建一个环境变量,把q的值传给这个环境变量,最后在params中引用这个环境变量就好了(要翻译不同内容时,自行修改q的内容)

下面是完整的脚本和注释

代码语言:javascript
复制
//定义要翻译的字符串
var query = "霸王别姬";  //每次翻译不同内容时,在这里修改
pm.environment.set("q", query);  //设置一个环境变量q,接收源字符串
 
//获取预先设置为环境变量的appid和secretKey
appid = pm.environment.get("appid");
secretKey = pm.environment.get("secretKey");
 
//定义一个随机数(32768, 65536)之间
var salt = parseInt(Math.random()*(32769)+32768,10);
//将随机数转换为字符串
var s = salt.toString();
console.log(salt);
//将生成的随机数设置为环境变量,方便传参
pm.environment.set("salt", salt);
 
//定义一个由appid、要翻译的字符串、随机数、密钥组合成一个字符串
var str = appid + query + salt + secretKey;
console.log(str);
 
//将str进行md5加密
var strmd5= CryptoJS.MD5(str).toString();
//let md5Str = CryptoJS.MD5(str).toString();
console.log(strmd5);
pm.environment.set("sign", strmd5);  //将加密后的签名设置为环境变量方便后续调用

postman的params中按照如下方式引用

调用成功的话就是下面这个样子

编后语

至此,postman系列基本上就结束了,内容大概涵盖了基本概念讲解,参数调用说明、断言和环境变量的使用、接口间传递数据、无界面运行脚本、集成到Jenkins、cookie的添加以及携带md5加密参数等;

希望这个系列对大家了解postman的使用技巧以及接口测试有帮助。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冰霜blog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档