first commit

This commit is contained in:
2026-01-29 12:03:28 +08:00
commit 3ecfab1212
18 changed files with 34678 additions and 0 deletions

110
README.md Normal file
View File

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