first commit
This commit is contained in:
110
README.md
Normal file
110
README.md
Normal 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 请求/响应
|
||||
- 提供弹窗界面查看记录
|
||||
- 支持导出功能
|
||||
|
||||
Reference in New Issue
Block a user