3.1 KiB
3.1 KiB
XHR 请求解密浏览器插件
这是一个用于解密项目中加密的 XHR 请求/响应的浏览器插件。
功能特性
- ✅ 自动拦截所有 XHR 请求
- ✅ 自动解密加密的请求数据和响应数据
- ✅ 在控制台输出解密后的数据
- ✅ 在插件弹窗中查看所有解密记录
- ✅ 支持导出解密记录为 JSON
- ✅ 支持复制单个请求/响应数据
安装方法
Chrome / Edge / Brave
-
打开浏览器,访问扩展管理页面:
- Chrome:
chrome://extensions/ - Edge:
edge://extensions/ - Brave:
brave://extensions/
- Chrome:
-
开启"开发者模式"(右上角开关)
-
点击"加载已解压的扩展程序"
-
选择
browser-extension文件夹 -
插件安装完成!
使用方法
-
安装插件后,访问目标网站
-
插件会自动拦截并解密所有 XHR 请求
-
在浏览器控制台可以看到解密后的数据输出:
🔓 XHR 解密 [POST] /api/example 🔑 密钥: 1234567890123456 📤 请求: { ... } 📥 响应: { ... } -
点击插件图标,打开弹窗查看所有解密记录
-
在弹窗中可以:
- 查看所有请求的详细信息
- 复制单个请求/响应数据
- 清空所有记录
- 导出为 JSON 文件
工作原理
-
拦截 XHR 请求:通过重写
XMLHttpRequest的原型方法来拦截所有请求 -
获取密钥:
- 优先从页面的
map对象获取(如果项目暴露了工具) - 或者从请求头计算:
(timestamp + TraceId).slice(0, 16)
- 优先从页面的
-
解密数据:
- 请求数据格式:
{ data: "base64String" } - 响应数据格式:
"encryptedString" - 使用 AES-ECB 模式,Pkcs7 填充
- 请求数据格式:
-
存储记录:解密后的数据存储在插件的 storage 中
注意事项
-
依赖页面环境:插件会尝试从页面获取解密函数,确保页面已加载完成
-
跳过特定接口:某些接口不需要解密(如
v1/picture/upload),会自动跳过 -
性能影响:只保留最近 100 条记录在内存中,避免影响性能
-
安全提醒:此插件仅用于开发和调试,请勿在生产环境中暴露敏感信息
文件结构
browser-extension/
├── manifest.json # 插件配置
├── content-script.js # 内容脚本(拦截 XHR)
├── popup.html # 弹窗界面
├── popup.js # 弹窗逻辑
├── background.js # 后台服务
├── icon16.png # 图标 16x16
├── icon48.png # 图标 48x48
├── icon128.png # 图标 128x128
└── README.md # 说明文档
开发建议
如果需要从页面获取解密函数,可以考虑:
-
修改项目代码(不推荐):在
request.ts中暴露工具到window -
注入脚本:插件可以注入脚本到页面,尝试访问模块系统
-
独立实现:在插件中直接实现 AES 解密(需要引入 CryptoJS)
更新日志
v1.0.0
- 初始版本
- 支持拦截和解密 XHR 请求/响应
- 提供弹窗界面查看记录
- 支持导出功能