接口调试新姿势
H5 接口参数加密?DevPeek 一键解密调试
H5 页面请求后端 API 时,参数做了 AES 加密——{"userId":"123","keyword":"看不到我"} 变成了 { "data": "6be9792e5ed250fc..." }。联调的时候,你在 DevPeek 抓包列表里看到的永远是一串 hex,完全不知道发出去的是什么。

DevPeek 目前也没法直接看懂它:

这是很多内嵌 H5 的常见做法:请求体整体对称加密,后端收到后解密。出于安全考量这么做无可厚非,但联调时看不到明文参数,Mock 规则没法写、断点不知道改什么、问题排查全靠猜。
本文用 DevPeek 的参数转换功能演示如何让加密参数自动解密显示——只需配好规则,后续请求「密文进、明文出」。
适用读者
- H5 联调时经常遇到接口参数加密的开发者
- 正在用 / 想用 DevPeek 查看加密 API 请求的工程师
- 不想在联调时反复找后端要解密程序或手动复制粘贴解码
容易卡住的地方
- AES 参数不对齐:密钥编码、IV 编码、输入编码的默认值和实际对不上,解密失败
- Auth Tag 位置搞错:GCM 的认证标签可能追加在密文末尾,也可能独立传递
- 只配了解密没配加密:改完参数想重发时,DevPeek 不知道如何重新加密
下面以 AES-256-GCM 加密为例(固定 IV、Tag 追加到密文末尾、hex 编码),演示完整的配置流程。
步骤一:配置加解密规则
在请求上右键 → 参数转换:

在弹出的「参数转换规则」窗口中,先配置一条加解密规则(Conversion Rule),告诉 DevPeek 用什么算法、什么密钥来解密。
进入 加解密规则 Tab → 添加 → 内置转换 → 选择 AES-GCM:

填入以下参数(这是最容易填错的地方,逐项核对):
| 字段 | 值 | 说明 |
|---|---|---|
| 算法 | aes-gcm |
|
| 密钥 (Key) | 342e668900166e5f6731f7a172f52862e3a43da54611519dec5246dadb6e7429 |
SHA-256 派生的 256-bit 密钥 |
| 密钥编码 | Hex ⚠️ | 密钥是 hex 字符串,不是 UTF-8 文本 |
| IV / Nonce | a1b2c3d4e5f6a7b8c9d0e1f2 |
固定 12 字节 IV |
| IV / Nonce 编码 | Hex ⚠️ | 同上 |
| 密文输入编码 | Hex ⚠️ | Demo 输出的是 hex,不是 base64(DevPeek 默认是 base64) |
| 输出编码 | UTF-8 | 解密后的明文编码 |
| Auth Tag 长度 | 16 | GCM 默认 16 字节 |
为什么这三个编码容易踩坑?DevPeek 的内置 AES-GCM 默认
keyEncoding: utf8、ivEncoding: utf8、inputEncoding: base64,但我们的 Demo 用的是 hex。如果忘记改成 Hex,DevPeek 会用完全不同的字节去解密,结果必然是「解密失败」。遇到解密失败,先检查这三个编码。
保存后,这条规则出现在加解密规则列表里。
完成标准: 加解密规则创建成功,列表显示一条 AES-GCM 规则。
步骤二:配置参数转换规则
回到参数转换规则窗口,添加一条新规则。这里要告诉 DevPeek:哪个请求的 哪个字段需要用上一步的规则来解密。
匹配条件
勾选匹配条件后,右侧会实时预览当前选中请求的特征:

| 字段 | 值 |
|---|---|
| URL 匹配 | /api/query |
| 请求方法 | POST |
| 作用域 | 此处可以先选「手动」,确保只对当前请求生效 |
转换目标
Body › JSON › data——告诉 DevPeek 要去解密 Body 中 data 字段的值。
引用规则
选择第一步创建的 AES-GCM 加解密规则。此时右侧会立即预览解密结果:

如果一切正确,你会看到 data 字段的密文被解码为 {"userId":"123","keyword":"看不到我"} 这样的明文。
保存规则。回到请求列表,重新看刚才的请求:

data 字段旁边多了解密后的明文,一目了然。
完成标准: 请求详情中 data 字段显示解密后的明文参数。
进阶:开启双向转换
配好解密后,你还可以开启「双向转换」,这样在调试窗口修改明文参数后,DevPeek 会自动重新加密再发送。
在参数转换规则中打开「双向转换」开关:

开启前,密文可编辑、明文只读显示——你可以手工修改密文再重发,但需要自己构造合法的加密数据。
开启后,密文变为只读,明文变为可编辑,改完点「发送」DevPeek 会自动重新加密:

这样一来,调试时改参数就不需要自己操心加密过程了。

原理:DevPeek 参数转换的工作方式
参数转换本质上是一个匹配 → 提取 → 解密 → 展示的管道:
请求到达 DevPeek
│
▼ 匹配 paramTransformRules
│ URL: /api/query, Method: POST
│
▼ 提取目标字段值
│ body:json:data → "6be9792e5e..."
│
▼ 引用 conversionRule 执行解密
│ AES-256-GCM(key+IV, authTagPlacement=append)
│
▼ 结果挂在 record.paramTransformDerived 上
│ 原始请求 body 不变,旁边附加解密后明文
│
▼ 展示:请求详情、Mock 匹配、调试重放
注意 DevPeek 不会修改原始请求——密文还是密文,解密后的明文单独存放在 paramTransformDerived 字段中,供界面展示和后续匹配使用。这保证了即使解密失败,原始数据也不会被破坏。
内置转换支持 AES-CBC、AES-ECB、AES-GCM、DES-CBC、3DES-CBC、RSA、Base64 等常见算法。如果这些不够用,还可以用脚本转换(Script Conversion)——在沙箱中自定义 JS 解密逻辑,脚本内可访问完整的请求上下文。沙箱内置了 util.crypto、util.encode、util.compress、util.json 等工具链,还提供了 axios、URL、URLSearchParams 等 API,你可以直接发起 HTTP 调用获取密钥或远程解密,灵活应对动态 IV、动态密钥等复杂场景。
下一步
本文演示了固定 IV、Tag 追加的 AES-GCM 场景。实际项目中加密方案千差万别,如果你的接口参数加密方式不同(比如动态 IV 需要从请求体中提取、密钥需要远程获取),可以看看脚本转换功能——沙箱内置 axios、util.crypto 等 API,可以发起 HTTP 调用获取密钥,或远程解密后返回结果,灵活性更大。
想详细了解参数转换的配置项和所有内置算法,见参数转换文档。
若你也在联调里一遍遍手工解码请求参数,欢迎下载 DevPeek 试用按本文步骤配好第一条解密规则,或到 GitHub Discussions 聊聊你的加密方案。