Files
chromeEvent/README.md
2026-01-29 12:03:28 +08:00

111 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 请求/响应
- 提供弹窗界面查看记录
- 支持导出功能