Capture All 是 Chrome Manifest V3 扩展,将浏览器活动转换为本地结构化证据,在同一时间线中采集用户行为、页面导航、网络请求、控制台输出、运行时异常、Storage 变更和 Cookie 变更。
可通过 popup、主面板和 DevTools 面板进行可视化检查。需要深入分析时,可将带鉴权的本地 Bridge 连接到 Claude Code 等 MCP 客户端,由 AI Agent 控制采集、查询单条数据或导出结果。
Warning
Capture All 申请高影响浏览器权限,可能采集页面敏感内容。仅在有权检查的浏览器、Profile 和网站中使用。首次采集前阅读权限、隐私与安全。
| 数据组 | 示例 |
|---|---|
| 用户行为 | 点击、滚动、键盘快捷键或按键、输入变化、视口变化 |
| 页面导航 | 页面加载、URL 变化、标签页激活、可见性变化 |
| 网络 | 请求和响应元信息、耗时、Header、已配置的 body |
| 控制台 | console.log、console.warn、console.error 等输出 |
| 错误异常 | 未捕获异常、未处理的 Promise rejection |
| Storage | localStorage、sessionStorage 变更 |
| Cookie | Cookie 创建、更新和删除 |
- 在统一时间线中关联 7 组浏览器数据。
- 通过 popup、主面板、请求检视器和 DevTools 面板检查采集。
- 导出 JSON、JSONL、HTML 或 HAR 文件。
- 通过 MCP 控制采集,并按分页和时间范围查询数据。
- 采集数据默认保存在本地 IndexedDB;只有主动导出或通过 MCP 查询时才会离开扩展存储。
- 本地 Bridge 零配置自动生成 Token,扩展与 MCP 客户端自动对齐。
- 支持敏感 URL 参数和 Header 脱敏,并始终执行大小限制。
Chrome 页面和 iframe
│
▼
Capture All 扩展
├─ Content Script 用户行为、导航、Storage
├─ Service Worker 网络、Cookie、采集生命周期
├─ Chrome DevTools Protocol 控制台、异常、已配置的 body
├─ IndexedDB 本地采集数据
└─ Popup / 主面板 / DevTools 面板
│ 通过 127.0.0.1 鉴权轮询
▼
本地 Bridge
│
▼
MCP Server ──► Claude Code 或其他 MCP 客户端
Bridge 仅绑定 127.0.0.1。默认零配置:扩展凭 chrome-extension origin 自动 enroll,Bridge 自生成 MCP Token 并持久化,MCP 客户端按 env > 持久化文件自动读取,三者自动对齐。
Capture All 仍处于早期阶段,尚未发布到 Chrome Web Store 或 npm。当前安装方式为从源码构建并加载已解压的扩展程序,暂不提供兼容性保证或支持 SLA。
| 实时采集 | 采集完成 |
|---|---|
![]() |
![]() |
| 时间线总览 | 请求检查器 |
|---|---|
![]() |
![]() |
| 隐私设置 | 导出任务 |
|---|---|
![]() |
![]() |
| 浏览器 | 支持状态 | 说明 |
|---|---|---|
| Chrome | 完全支持 | Manifest V3,Chrome ≥ 88 |
| Edge | 完全支持 | 基于 Chromium,与 Chrome 一致 |
| Firefox | 不支持 | Firefox 的 DevTools Protocol、Service Worker 扩展模型与 CDP 体系不兼容,需要独立实现 |
- 支持 Manifest V3 的 Chrome 或 Chromium 浏览器
- Node.js
^20.19.0或>=22.12.0 - npm
git clone https://github.com/TuTouPower/capture_all.git
cd capture_all
npm ci
npm run build然后:
- 打开
chrome://extensions。 - 开启“开发者模式”。
- 点击“加载已解压的扩展程序”。
- 选择仓库中的
artifacts/dist。 - 如需快速打开 popup,可将 Capture All 固定到工具栏。
重新构建后,如果 manifest 或 Service Worker 变化未自动生效,在 chrome://extensions 中重新加载扩展。
- 打开 Capture All popup。
- 检查采集选项,尤其是输入值、请求 body 和响应 body。
- 开始采集。
- 复现需要调查的浏览器行为。
- 停止采集。
- 从 popup 或主面板打开本次采集,检查时间线和详情。
- 需要可移植证据时导出文件。
单次采集上限为 500 MB、24 小时;单条 body 上限为 100 MB。
Capture All 默认零配置:扩展装上自动连 Bridge,Bridge 自动生成 MCP Token,MCP 客户端自动读取,用户无需手动管理任何 Token 或配对码。
npm run build # 构建扩展、Bridge、MCP 产物
cp .mcp.json.example .mcp.json # 复制本机 MCP 配置(已被 .gitignore 忽略)完成后的流程:
- Bridge 自动启动:进入本项目目录的 Claude Code 会话时,SessionStart hook 自动拉起本地 Bridge(端口 17831,仅绑 127.0.0.1)。Bridge 首次启动自动生成随机 MCP Token,持久化到
$XDG_RUNTIME_DIR/capture-all/bridge_token(mode 0600)。 - 扩展自动登记:在 Chrome 加载
artifacts/dist/,扩展 popup 默认启用 Agent Bridge。扩展后台轮询127.0.0.1:17831,首次连接凭 chrome-extension origin 直通 enroll,无需 Token / 配对码。Bridge 按到达顺序给每个浏览器自动编号(1 号、2 号、3 号…),用户可在扩展设置里改成自定义备注。 - MCP 客户端自动读 Token:MCP Server 启动时按
env > Bridge 持久化文件的优先级解析 Token,与 Bridge 自动对齐。
get_status → start_recording → 复现问题 → stop_recording
→ list_captures → get_timeline / list_records / export_capture
多浏览器时通过 target_label(如"1 号"、"2 号"或自定义备注)或 target_instance_id 指定目标,单实例无需指定。
- 手动启动 Bridge:
node artifacts/bridge/bridge.mjs --port 17831(--port必须显式指定;不设CAPTURE_ALL_BRIDGE_TOKEN时自动生成并持久化)。 - 想固定 Token(如跨机部署):
CAPTURE_ALL_BRIDGE_TOKEN='<openssl rand -hex 32 生成的值>' node artifacts/bridge/bridge.mjs --port 17831,然后在扩展设置和.mcp.json的env.CAPTURE_ALL_BRIDGE_TOKEN使用同一值。 - 跨机 / 高安全场景的可选 pairing:
POST /pair/open(需 MCP Token)打开配对窗口,扩展 enroll 时携带pairing_code走人工确认路径。默认 loopback 内不要求。
.mcp.json 已被 Git 忽略,只能保存在本机。禁止把真实 Token 写入源码、文档、Issue 或采集导出文件。完整工具、参数、限制和故障排查见 MCP 使用指南。
npm run dev # 启动 Vite 开发模式
npm test # 运行单元和集成测试
npm run test:watch # 以 watch 模式运行 Vitest
npm run build # 构建扩展、Bridge 和 MCP 产物
npm run test:e2e # 运行基础 headless Playwright 测试
npm run test:e2e:all # 运行全部 Playwright 项目
npm run scan:tracked-tree # 扫描待提交文件中的 Secret 和私有路径
npm run bridge # 从 TypeScript 源码启动 Bridge
npm run mcp # 从 TypeScript 源码启动 MCP Server构建输出:
| 产物 | 路径 |
|---|---|
| Chrome 扩展 | artifacts/dist |
| 商店压缩包 | artifacts/extension.zip |
| Bridge | artifacts/bridge/bridge.mjs |
| MCP Server | artifacts/mcp/mcp.mjs |
| 权限 | 用途 |
|---|---|
storage |
将用户配置存入 chrome.storage.local |
webRequest |
观察请求和响应元信息 |
debugger |
通过 Chrome DevTools Protocol 采集控制台、运行时异常和已配置的 body |
tabs |
查询标签页并协调 Content Script 采集 |
alarms |
维持 MV3 Service Worker 中的采集生命周期任务 |
downloads |
保存本地导出文件 |
cookies |
采集 Cookie 变更 |
<all_urls> |
在各来源页面运行声明式 Content Script 并观察授权页面 |
采集数据保存在扩展本地 IndexedDB 数据库 capture_all_db,设置保存在 chrome.storage.local。Capture All 不包含遥测、分析、广告 SDK 或远程应用服务器。
重要边界:
- 输入值、请求 body、响应 body 采集默认开启。不需要这些数据时,应在首次采集前关闭。
<all_urls>和all_frames: true允许 Content Script 在顶层页面及嵌入式第三方 iframe 中运行。- 脱敏只能降低暴露风险,无法保证清除所有凭据或个人信息。
- MCP 查询可能将选中的采集数据发送给所连接的 AI Provider 或客户端环境。
- 导出文件是独立副本,需要单独保护和删除。
- MCP 不提供删除采集或清空数据库命令。
通过主面板删除采集。移除扩展或清除扩展站点数据会删除本地扩展存储。完整数据规则见 PRIVACY.md;报告漏洞前阅读 SECURITY.md。禁止在 GitHub Issue 中公开敏感证据。
- 当前采集模型需要高影响浏览器权限。
- Bridge 普通 JSON body 上限为 1 MiB,扩展结果回传上限为 64 MiB。
- 大采集应使用分页
list_records或扩展本地导出,不应依赖 MCP 全量数据请求。 - 脱敏不会扫描任意响应 body 文本中的所有潜在 Secret。
- 尚无 Chrome Web Store 包、npm 发布、兼容性保证或支持 SLA。
修改前阅读 CONTRIBUTING.md。公开 Issue 和 PR 禁止包含未脱敏采集、Token、请求 body、私有 URL 或个人浏览器数据。参与项目须遵守 CODE_OF_CONDUCT.md,项目变化记录在 CHANGELOG.md。
项目使用 Apache-2.0 License。





