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

3.1 KiB
Raw Blame History

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