postman加密请求接口

本文介绍如何通过修改Postman插件实现接口请求参数的加密发送及响应解密,包括两个核心函数:reqSend()用于加密请求参数,getRes()则负责解密服务器返回的数据。

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

原因

从谷歌上面下载的postman(老版本的) 请求都是明文的 ,有时候调试接口需要经过加密再请求这时候postman就支持不了。

修改postman插件

    /**
     * 请求加密接口返回加密后的字符串
     * @param reqbody
     * @param statechange
     */
    function reqSend(reqbody, statechange) {

        var xhr_m = new XMLHttpRequest();
        xhr_m.open("POST", "xxxxxxxxxxxxxxxxxx", true); //Open the XHR request. Will be sent later
        xhr_m.onreadystatechange = statechange;
        xhr_m.responseType = "text";
        var headers = pm.request.getXhrHeaders(headers);
        for (var i = 0; i < headers.length; i++) {
            xhr_m.setRequestHeader(headers[i].name, headers[i].value);
        }
        xhr_m.send(reqbody);
    }

    /**
     * 请求加密接口返回加密后的字符串 跟上面的一样没什么区别,headers可以注释掉
     * @param reqbody
     * @param statechange
     */
    function getRes(reqbody, statechange) {
        var xhr_m = new XMLHttpRequest();
        xhr_m.open("POST", "xxxxxxxxxxxxxx", true); //Open the XHR request. Will be sent later
        xhr_m.onreadystatechange = statechange;
        xhr_m.responseType = "text";
        // var headers = pm.request.getXhrHeaders(headers);
        // for (var i = 0; i < headers.length; i++) {
        //     xhr_m.setRequestHeader(headers[i].name, headers[i].value);
        // }
        xhr_m.send(reqbody);
    }

上面的保存一个单独的js文件,这里我保存为mine.js

找到index.html 引入js文件

修改requester.js 揭开对应的注释

这么做的目的就是将本来要直接请求的参数经过接口先加密下再请求

reqSend() 方法是加密请求的参数

getRes() 方法是解密从服务器端返回的参数然后返回到页面上

具体加密解密的方法过程是放在服务器端,这里只是调用接口

下载链接

http://pan.baidu.com/s/1dEBJUMX

h572

### 如何在 Postman 中测试加密接口Postman 中测试加密接口通常涉及以下几个方面:数据加密、发送请求以及验证响应。以下是具体实现方法: #### 数据加密 为了确保传输的数据安全,许多 API 接口会要求客户端对接口参数进行加密处理后再发送给服务器。常见的加密算法有 RSA 和 AES。 - **RSA 加密**: 使用公钥对敏感数据(如密码或其他重要字段)进行加密Postman 可以借助外部脚本或者预请求脚本来完成这一操作。例如,在 Pre-request Script 部分编写 JavaScript 脚本调用 `crypto` 库来执行加密逻辑[^1]。 ```javascript const crypto = require('crypto'); function rsaEncrypt(data, publicKey) { const buffer = Buffer.from(data); const encrypted = crypto.publicEncrypt(publicKey, buffer); return encrypted.toString('base64'); } pm.variables.set("encryptedData", rsaEncrypt(pm.variables.get("plainText"), pm.environment.get("publicKey"))); ``` - **AES 加密**: 对于对称加密算法 AES,同样可以在 Pre-request Script 中定义函数并应用它。下面是一个简单的例子展示如何利用 CryptoJS 实现 AES 加密[^1]: ```javascript var CryptoJS = require("crypto-js"); let cipherText = CryptoJS.AES.encrypt(pm.variables.get("plainText"), pm.environment.get("aesSecret")).toString(); pm.variables.set("cipherText", cipherText); ``` #### 发送已加密请求 一旦完成了必要的加密工作,则需把这些经过保护后的值放入 HTTP 请求体里提交出去。可以通过设置 Body 参数的方式做到这一点;如果采用的是 form-data 或者 x-www-form-urlencoded 类型的话,请记得把对应的键名映射至相应的加密后的内容上去[^3]。 ```json { "username": "{{userName}}", "passwordEncrypted": "{{encryptedData}}" } ``` 这里假设 `"{{encryptedData}}"` 是之前通过 pre-request script 设置好的环境变量名称。 #### 响应校验 接收到来自服务端返回的结果之后,可能还需要对其进行进一步解析甚至再次解码才能得到最终想要的信息。这一步骤取决于具体的业务需求以及双方约定好得协议标准[^2]。 --- ### 示例代码片段 以下是一段综合性的演示样例,展示了整个流程中的关键部分: ```javascript // Pre-request Script Example (Using RSA Encryption) const crypto = require('crypto'); function rsaEncrypt(plaintext, publicKey) { const buffer = Buffer.from(plaintext); const encrypted = crypto.publicEncrypt({ key: publicKey, padding: crypto.constants.RSA_PKCS1_OAEP_PADDING, oaepHash: 'sha256' }, buffer); return encrypted.toString('base64'); } let plainTextValue = pm.variables.get("plainText"); // Assume this is set elsewhere. pm.variables.set("rsa_encrypted_value", rsaEncrypt(plainTextValue, pm.environment.get("publicKey"))); // Request Body JSON Structure with Encrypted Field Included pm.request.body.update({ mode: 'raw', raw: JSON.stringify({ username: pm.variables.get("username"), password: pm.variables.get("rsa_encrypted_value") }) }); ``` --- ### 注意事项 当涉及到复杂的认证机制时,除了基本的身份验证之外还可能存在额外的安全措施比如时间戳签名等等都需要考虑进去以便顺利完成整个交互过程[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值