一个用于保存和复现Web应用Bug的Chrome浏览器插件。
这是一个Chrome扩展插件,帮助开发者和测试人员快速保存当前页面的完整状态信息,包括网址、用户会话数据、控制台输出、网络请求、页面截图等,并支持导出为文件以及导入还原现场,便于Bug的复现和调试。
- 自动获取当前页面URL、标题、完整hash
- 保存用户会话数据(Cookies、LocalStorage、SessionStorage)
- 捕获控制台输出内容(包括错误、警告、日志)
- 记录页面基本信息(时间戳、用户代理、视口信息)
- 捕获页面网络请求(支持失败/全部请求,含请求体/响应体)
- 可选页面截图
- 将保存的Bug快照导出为JSON文件
- 支持批量导出所有Bug记录
- 文件命名规则:swiftbug-report-{domain}-{date}-{time}.json
- 其中 {date} 为年月日(如 20250703),{time} 为时分秒(如 153012),例如:swiftbug-report-example.com-20250703-153012.json
- 支持导入之前导出的Bug快照文件
- 自动还原页面会话数据(Cookies、LocalStorage、SessionStorage)
- 重定向到Bug发生的原始页面
- 重新注入存储数据并自动刷新页面
- 支持内容脚本一键导入页面上的swiftbug-report链接
- 简洁的弹出窗口界面,支持查看、导出、删除、还原、导入
- Bug记录列表管理,显示域名、时间、标题等
- 支持批量导出、清空所有数据
- 设置页面可自定义采集项、数量等
- Manifest文件 - 插件配置和权限声明
- Content Script - 页面内容获取和数据注入
- Background Script - 后台数据处理和存储
- Popup页面 - 用户交互界面
- Options页面 - 插件设置页面
{
"id": "唯一标识符",
"timestamp": "保存时间",
"url": "页面URL",
"title": "页面标题",
"userAgent": "浏览器信息",
"cookies": [/* Cookie数组 */],
"localStorage": {/* 本地存储数据 */},
"sessionStorage": {/* 会话存储数据 */},
"consoleLog": [/* 控制台输出记录 */],
"networkRequests": [/* 网络请求记录 */],
"screenshot": "页面截图Base64(可选)",
"viewport": {/* 视口信息 */},
"description": "Bug描述(可选)"
}activeTab- 访问当前活动标签页storage- 本地数据存储cookies- 读取和设置Cookiesdownloads- 文件下载功能tabs- 标签页管理scripting- 脚本注入webRequest- 网络请求捕获
- 在发生Bug的页面上点击插件图标
- 在弹出窗口中点击"保存Bug快照"
- 可选:添加Bug描述信息
- 系统自动收集页面状态信息并保存
- 打开插件弹出窗口
- 查看已保存的Bug记录列表
- 选择要导出的记录或点击设置页批量导出
- 点击"导出"按钮下载JSON文件
- 点击插件的"导入Bug"功能或页面上的swiftbug-report链接
- 选择之前导出的JSON文件或一键导入
- 系统自动跳转到Bug页面
- 还原所有会话数据和存储信息,自动刷新页面
- 开发者可以重现Bug场景
- 创建插件基础结构
- 实现数据收集功能
- 创建简单的Popup界面
- 实现本地存储功能
- 实现数据导出为JSON文件
- 实现JSON文件导入功能
- 实现数据还原到浏览器
- 优化用户界面设计
- 添加Bug记录管理功能
- 实现批量操作(已支持批量导出,批量删除/还原待完善)
- 添加Bug描述功能(标签功能待实现)
- 实现数据搜索和过滤
- 添加设置页面
- 性能优化和更完善的错误处理
- 开发语言: JavaScript/TypeScript
- UI框架: HTML5 + CSS3 + Vanilla JavaScript
- 构建工具: Webpack或Vite
- 测试框架: Jest
- 代码规范: ESLint + Prettier
src/
├── manifest.json # 插件配置文件
├── popup/ # 弹出窗口
│ ├── popup.html
│ ├── popup.js
│ └── popup.css
├── content/ # 内容脚本
│ ├── content.js
│ ├── consoleInterceptor.js
│ └── networkInterceptor.js
├── background/ # 后台脚本
│ └── background.js
├── options/ # 设置页面
│ ├── options.html
│ ├── options.js
│ └── options.css
├── icons/ # 插件图标
└── utils/ # 工具函数
└── utils.js
如果你在内容脚本中劫持了 console.log 等方法,导致 DevTools 控制台输出的代码来源总是显示为拦截脚本(如 consoleInterceptor.js),可以在 DevTools 设置中将该脚本加入“ignore list”列表(Settings → Ignore List → Custom exclude rules),这样调试时控制台会自动跳过该脚本,显示原始业务代码的调用位置,配置如下 regex 规则。
/consoleInterceptor\.js$
/networkInterceptor\.js$
- 隐私保护: 确保敏感数据(如密码、token)不会被意外保存
- 数据安全: 导出的文件可能包含敏感信息,需要提醒用户注意保护
- 兼容性: 确保插件在不同版本的Chrome浏览器中正常工作
- 性能: 避免过度收集数据影响页面性能
- 用户体验: 提供清晰的操作指引和错误提示