postman 携带时间戳及md5加密预处理测试

本文介绍如何在Postman中通过内置功能及预处理脚本实现时间戳生成和MD5加密,并将结果作为全局变量使用。适用于接口测试中需要时间戳校验和签名加密的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 适用情况

在很多接口进行测试的时候,都会需要携带时间戳进行校验,或者存在需要sign进行md5加密处理

二. 携带时间戳

1. Postman 自带时间戳

全局参数:{{$timestamp}}
时间戳长度:13
优缺点:使用方便但是不能进行参数处理

使用示例

postman自带时间戳

2. 使用预处理函数进行全局变量声明

预处理:Pre-request Script
时间戳长度:*可以自己处理位数
优缺点:可以根据需求进行参数处理

预处理js代码

//获取时间戳,转换为字符串并截取为十位
time = new Date().getTime().toString().slice(0,10);
//设置为postman全局变量
postman.setGlobalVariable("time",time);

使用示例

设置预处理函数,添加全局变量
在这里插入图片描述
调用
在这里插入图片描述

三. md5 加密预处理

说明:逻辑很简单,同样也是使用前置预处理完成md5加密后,存为全局变量,在需要使用的地方进行调用

预处理js代码

//拼接你所需要加密的字符串
var str = "key"+key+"value"+value+"timestamp"+time;
//32位小写
var strmd5= CryptoJS.MD5(str).toString();
postman.setGlobalVariable("strmd5",strmd5);
//32位大写
var strMD5= CryptoJS.MD5(str).toString().toUpperCase();
postman.setGlobalVariable("strMD5",strMD5);

使用示例

设置预处理函数,添加全局变量
添加全局变量
在需要处调用
调用

四. 总结

预处理测试是postman的使用过程中很重要的两个部分,值得我们扩展学习,等后面有新发现在进行补充。

相关文章

链接: postman测试带token验证的接口,解决token为空问题

### 如何在Postman中配置签名验证 #### 设置和配置验签方法及参数 在Postman中配置签名验证涉及多个方面,包括但不限于准备必要的密钥、构建签名逻辑以及发送带有适当头部信息的请求。 对于接口调用而言,通常会涉及到`APP_ID`、`APP_SECRET`等关键要素[^3]。这些元素用于生成唯一的签名(Sign),该签名随后被附加到HTTP请求头内以便服务器端能够识别并确认客户端身份的真实性。具体来说: - **应用标识符(AppId)** 和 **应用程序秘密码(AppSecret)**: 这些是由API提供商分配给开发者的凭证,用来区分不同的开发者账户及其关联的应用程序实例。 - **时间戳(Timestamp)** : 表示当前时刻的一个数值型表示形式,一般采用Unix纪元秒级精度的时间格式。它有助于防止重放攻击,并确保每次发出的新鲜度。 - **随机数串(Nonce)** :这是一个一次性使用的字符串序列,旨在增加额外的安全层次,使得即使相同的输入也能产生不同输出从而难以预测。 - **版本号(Version)**:指明所遵循的具体协议或规范的标准版次,默认情况下设为`1.0`. 基于上述组件,可以通过如下方式创建MD5哈希摘要作为最终提交至服务端校验的有效载荷的一部分: ```python import hashlib import time from random import Random def create_sign(app_id, app_secret, timestamp=None, nonce=None, version="1.0"): if not timestamp: timestamp = str(int(time.time())) if not nonce: r = Random() nonce = "".join([str(r.randint(0,9)) for _ in range(8)]) string_to_hash = f"{timestamp}{app_id}{app_secret}{nonce}{version}" md5 = hashlib.md5(string_to_hash.encode('utf-8')).hexdigest().upper() return { "appId": app_id, "timestamp": timestamp, "nonce": nonce, "sign": md5, "version": version } ``` 此函数接收必要参数并通过连接它们形成待散列的数据流;接着利用Python内置库计算出对应的十六进制大写编码后的消息摘要值即为我们所需的`sign`. 最后,在实际发起网络通信之前,应当把以上所得各项属性填充进入Pre-request Script区域内的环境变量里去,像这样: ```javascript pm.environment.set("appId", pm.variables.get("your_app_id")); pm.environment.set("timestamp", new Date().getTime()/1000 | 0); pm.environment.set("nonce", Math.random().toString(36).substr(2, 8)); const signData = `${pm.environment.get("timestamp")}${pm.environment.get("appId")}{{your_app_secret}}${pm.environment.get("nonce")}1.0`; pm.environment.set("sign", CryptoJS.MD5(signData).toString(CryptoJS.enc.Hex).toUpperCase()); ``` 注意这里的JavaScript代码片段依赖于CryptoJS库来执行加密操作,请提前安装好相应插件以支持这部分功能[^4]. 一旦完成了预处理脚本编写工作,则可在后续定义GET/POST等类型的API调用时直接引用已设定好的全局变量名即可完成整个流程闭环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值