Vega-Starboard/vega-endpoint-collector

GitHub: Vega-Starboard/vega-endpoint-collector

一款仅限本地的Firefox扩展,用于从当前浏览页面中安全地收集、脱敏并导出URL端点清单,辅助安全审查与资产盘点。

Stars: 0 | Forks: 0

# Vega Endpoint 收集器 [![Firefox WebExtension](https://img.shields.io/badge/Firefox-WebExtension-FF7139?style=for-the-badge&logo=firefoxbrowser&logoColor=white)](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions) [![Manifest V3](https://img.shields.io/badge/Manifest-V3-4f46e5?style=for-the-badge)](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json) [![隐私:仅本地](https://img.shields.io/badge/Privacy-Local_Only-16a34a?style=for-the-badge)](PRIVACY.md) [![无遥测](https://img.shields.io/badge/Telemetry-None-111827?style=for-the-badge)](PRIVACY.md) [![许可证:MIT](https://img.shields.io/badge/License-MIT-f59e0b?style=for-the-badge)](LICENSE) [![静态验证](https://img.shields.io/badge/Static_Verify-Passing-22c55e?style=for-the-badge)](scripts/verify_extension.py) [![GitHub 发布](https://img.shields.io/github/v/release/Vega-Starboard/vega-endpoint-collector?style=for-the-badge&logo=github)](https://github.com/Vega-Starboard/vega-endpoint-collector/releases) Vega Endpoint Collector 帮助安全测试人员、漏洞赏金猎人、开发者和防御者快速将当前打开的页面转换为一份紧凑的端点清单。它从可见的页面结构和浏览器资源计时元数据中收集 URL,对查询值进行脱敏处理,对端点进行去重,并导出一个本地 JSON 制品。 它有意不被设计为代理、爬虫、模糊器、扫描器、漏洞利用工具或请求重放器。 ## 状态 原型版本:`0.1.0` 首个发布版本是一个用于本地开发和审查的未打包 Firefox 扩展。GitHub 发布版本附带一个开发压缩包。它尚未在 Mozilla 附加组件商店上架。 ## 仅供合法使用 仅可在您拥有的系统、您管理的系统、明确的漏洞赏金范围、书面授权的客户范围或本地实验室目标上使用此工具。 此项目设计用于: - 经授权的应用程序安全测试 - 防御性端点清单编制 - 漏洞赏金笔记准备 - 本地实验室学习 - 发布前开发者自查 此项目不设计用于未授权侦察或自动化探测第三方系统。 ## 收集内容 收集仅在用户点击扩展弹出窗口中的 **收集当前标签页** 按钮后发生。 收集器记录: - 来自 `a[href]`、`area[href]` 和 `link[href]` 的链接 - 表单操作 URL、表单方法和表单字段名称 - 脚本、图片、框架、媒体、嵌入、对象和源 URL - `srcset` 图片候选源 - 内联 CSS `url(...)` 和 `@import` 引用 - 来自选定 `meta[content]` 值的元数据 URL - 浏览器暴露的 `PerformanceResourceTiming` 元数据 - 同源与跨源分类 - 查询参数名称(查询值已被脱敏) 最新的捕获结果存储在 Firefox 扩展存储中,因此关闭弹出窗口后重新打开不会丢失当前地图。 ## 不收集内容 - 不收集请求体。 - 不收集响应体。 - 不收集 Cookie 值。 - 不收集凭证值。 - 不收集浏览器历史记录。 - 不收集按键记录。 - 不收集 localStorage 或 sessionStorage 值。 - 不收集非活动标签页的数据。 - 不进行后台爬取。 - 不进行远程上传。 - 不进行遥测。 - 不修改请求。 ## 存在意义 大多数安全工作流程最终都需要一份干净的已观测路由、资产、表单和类似 API 的 URL 列表。浏览器开发者工具可以显示这些,但其输出分散在元素、网络、源代码和手动笔记中。 Vega Endpoint Collector 做出一个明确的承诺: 1. 向活动标签页询问哪些端点类 URL 是可见的。 2. 对有风险的 URL 值进行脱敏。 3. 对结果进行去重。 4. 保持本地化。 5. 为笔记和报告导出有用的制品。 ## 功能特性 - **点击即收集**:无持久内容脚本,无持续收集。 - **仅限活动标签页**:使用 `activeTab` 配合 `scripting` 权限,而非广泛的主机权限。 - **端点去重**:跨 DOM、表单、CSS 和计时来源对重复 URL 进行分组。 - **查询值脱敏**:保留查询键名,但用 `` 替换值。 - **来源分组**:标记同源和跨源端点。 - **本地持久化**:将最新的捕获结果保存在 `browser.storage.local` 中。 - **JSON 导出**:从弹出窗口下载结构化证据文件。 - **URL 复制**:将脱敏后的端点列表复制到剪贴板。 - **无依赖运行时**:纯 HTML、CSS 和 JavaScript。 ## 权限 该扩展遵循 Mozilla 的 WebExtension 权限模型,并保持权限集合最小化。 | 权限 | 用途 | 范围 | | --- | --- | --- | | `activeTab` | 在用户操作后授予对当前标签页的临时访问权限。 | 仅当前活动标签页。 | | `scripting` | 按需注入收集器脚本。 | 从弹出窗口一次性执行。 | | `storage` | 本地保存最新的捕获结果。 | 仅 Firefox 扩展存储。 | 有意不请求的权限: - `` - `cookies` - `downloads` - `history` - `tabs` - `webRequest` - `webRequestBlocking` 清单文件还声明 Firefox 的 `data_collection_permissions.required` 为 `["none"]`。该扩展不会将收集到的数据传输到本地浏览器之外。 ## 安装 ### 临时 Firefox 安装 1. 打开 Firefox。 2. 访问 `about:debugging`。 3. 选择 **此 Firefox**。 4. 选择 **加载临时附加组件**。 5. 从此文件夹中选择 `manifest.json`。 Firefox 会保留临时扩展,直到浏览器重启。 ### 使用 web-ext 进行开发 Mozilla 官方的 `web-ext` 工作流可以检查和运行该扩展: ``` cd vibes/apps/endpoint-collector npm run lint npm run start ``` 脚本使用 `npx --yes web-ext ...`,因此不需要提交依赖文件夹。 ## 使用方法 1. 导航到已授权的目标页面。 2. 点击 Vega Endpoint Collector 工具栏图标。 3. 点击 **收集当前标签页**。 4. 查看端点列表和来源标签。 5. 使用过滤框缩小列表范围。 6. 点击 **复制 URL** 以复制当前可见的端点,或点击 **导出 JSON** 以保存完整的捕获结果。 进行本地冒烟测试,可临时加载该扩展并从 Seedboard 收集端点: ``` http://127.0.0.1:8787/ ``` 冒烟测试仅限本地,收集流程在浏览器内完成。 ## 输出格式 示例导出: ``` { "version": 1, "collectedAt": "2026-05-08T20:30:00.000Z", "page": { "url": "https://example.test/app?view=", "origin": "https://example.test", "host": "example.test", "title": "Example App" }, "counts": { "endpoints": 3, "sameOrigin": 2, "crossOrigin": 1 }, "endpoints": [ { "url": "https://example.test/api/users?page=", "origin": "https://example.test", "host": "example.test", "path": "/api/users", "queryKeys": ["page"], "sameOrigin": true, "sources": ["performance"], "kinds": ["fetch"], "methods": [], "count": 1, "details": [ { "initiatorType": "fetch", "durationMs": 42, "transferSize": 2048, "nextHopProtocol": "h2" } ] } ], "warnings": [] } ``` ## 安全与隐私模型 Vega Endpoint Collector 围绕一个狭窄的收集面构建: - 用户操作是收集的触发条件。 - 活动标签页是访问的边界。 - URL 查询值在存储前被脱敏。 - 收集到的数据存储在 Firefox 扩展存储中,除非被导出。 - 运行时代码不包含 `fetch`、`XMLHttpRequest` 或 `sendBeacon` 调用。 - 运行时代码不访问 `document.cookie`。 - 运行时代码不读取目标页面的 Web 存储值。 完整政策请参见 [PRIVACY.md](PRIVACY.md) 和 [SECURITY.md](SECURITY.md)。 ## 验证 运行本地静态验证器: ``` cd vibes/apps/endpoint-collector npm run verify ``` 验证器检查: - 清单 JSON 有效性 - 预期的最小权限集 - 不存在被禁止的权限 - Firefox 无数据收集声明 - 引用的图标和弹出窗口文件 - 运行时脚本中无网络 API 调用 - 运行时脚本中无 Cookie 访问 - 无页面 Web 存储值读取 - README 中的安全/隐私标记 当 `web-ext` 可用时,也应运行: ``` npm run lint ``` Mozilla 建议在运行或提交扩展前使用 `web-ext lint`。 ## 项目布局 ``` . ├── manifest.json ├── src/ │ ├── collector.js │ ├── popup.css │ ├── popup.html │ └── popup.js ├── icons/ │ ├── endpoint-48.svg │ └── endpoint-96.svg ├── scripts/ │ └── verify_extension.py ├── PRIVACY.md ├── SECURITY.md ├── CONTRIBUTING.md ├── LICENSE └── package.json ``` ## 设计选择 ### 最小可行产品中不使用 webRequest `webRequest` 功能强大,但它会扩展权限范围,并可能使一个小型端点映射器趋向代理类行为。最小可行产品依赖于活动标签页 DOM 检查和浏览器 Performance API 元数据。 未来版本可能会在范围保护、脱敏模型和权限解释更完善后,添加可选的网络观察功能。 ### 不使用广泛的主机权限 Mozilla 将 `activeTab` 记录为一种让扩展在明确的用户交互后操作当前页面,而无需请求广泛主机访问权限的方式。这符合产品边界:仅在需要时收集。 ### 默认对 URL 进行脱敏 端点映射通常需要路径和参数名,而非实时的秘密值。查询值在显示、存储或导出前用 `` 替换。 ## 路线图 - CSV 导出。 - 用于报告笔记的 Markdown 导出。 - 可选的范围允许列表集成。 - 每个主机的捕获历史记录,支持手动删除。 - 权限模型审查后的头部信息集成。 - Chrome MV3 兼容性调整。 - AMO 包元数据和审查准备。 ## 参考的官方文档 - [MDN: 浏览器扩展](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions) - [MDN: manifest.json](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json) - [MDN: 权限与 activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) - [MDN: scripting API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting) - [MDN: storage API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) - [Firefox 扩展工作坊: web-ext](https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/) - [Firefox 扩展工作坊: 数据收集同意](https://extensionworkshop.com/documentation/develop/firefox-builtin-data-consent/) - [shields.io](https://shields.io/) 用于 README 徽章 ## 关键词 `firefox-extension`, `webextension`, `manifest-v3`, `endpoint-discovery`, `endpoint-mapping`, `security-testing`, `authorized-testing`, `bug-bounty`, `defensive-security`, `appsec`, `privacy-tool`, `local-only`, `no-telemetry`, `activeTab`, `scripting-api`, `performance-timing`, `recon-notes` ## GitHub 主题 建议的仓库主题: ``` firefox-extension webextension manifest-v3 security-testing endpoint-discovery bug-bounty defensive-security privacy-tool local-only no-telemetry appsec ``` ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:Bug Bounty工具, Firefox扩展, JSON导出, Manifest V3, WebExtension, Web安全, 原型工具, 去重, 多模态安全, 安全测试, 授权测试, 攻击性安全, 数据可视化, 无遥测, 本地存储, 本地工具, 本地开发, 查询值编辑, 浏览器元数据, 浏览器扩展, 端点收集, 端点清单, 自定义脚本, 蓝队分析, 逆向工具, 防御性安全