geeknik/curlsmith

GitHub: geeknik/curlsmith

一款 Firefox 浏览器扩展,本地捕获 API 请求并生成格式化的 cURL 命令,默认脱敏敏感字段,适合安全测试与 API 调试。

Stars: 1 | Forks: 0

# Curlsmith [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6ad4e2a097154139.svg)](https://github.com/geeknik/curlsmith/actions/workflows/ci.yml) [![Firefox](https://img.shields.io/badge/Firefox-140%2B-FF7139?logo=firefox-browser&logoColor=white)](https://www.mozilla.org/firefox/) ![Manifest V3](https://img.shields.io/badge/Manifest-V3-2f4f4f) [![许可证](https://img.shields.io/github/license/geeknik/curlsmith)](LICENSE) Firefox 优先、本地优先的 API 捕获与格式化 cURL 生成工具。 Curlsmith 是一款用于受控本地测试的预发布软件。它会捕获您授权站点的请求和响应元数据,并将这些数据本地存储在浏览器配置文件中。捕获的内容可能包含凭据、cookies、令牌、私信、账户数据或专有 API 数据。 请勿捕获您未经授权检查的站点、账户或流量。 ## 目前可用的功能 - 运行时主机权限流程,支持关闭、当前标签页、当前站点和已批准站点的捕获范围。 - 被动请求捕获,包括方法、URL、请求头、请求体样本、响应状态、响应头、响应体样本、重定向、截断状态、二进制标记和哈希值。 - 基于 IndexedDB 的有限本地存储,具有保留设置:最大记录数、TTL、请求上限、响应上限和总负载上限。 - 默认对 authorization 请求头、cookies、CSRF/XSRF 令牌、API 密钥、查询密钥、JSON 主体密钥、表单密钥和类似令牌的文本进行脱敏处理。 - cURL 配置文件支持:美观格式、紧凑格式、全保真公开、here-doc JSON、body-file 重放、PowerShell 和 Fish。 - 从 JSON 和 NDJSON 响应中进行基本实体提取,涵盖用户、帖子、评论、消息、媒体和未知实体。 - 侧边栏检查、过滤、已脱敏 JSON 树渲染、cURL 复制、实体 JSONL/CSV 导出、清除全部数据以及清除当前站点数据。 - 选项页面控件,用于配置捕获、解析器、保留策略、存储上限和已批准的源。 - CI、Mozilla 附加组件检查、运行时依赖项审计、未签名 ZIP 打包和包排除检查。 ## 安全与隐私态势 - 设计上仅限本地:无遥测、分析、远程解析、云同步或隐藏的扩展出站请求。 - 运行时扩展代码无外部依赖。 - 捕获的内容以文本形式呈现,而非 HTML。 - 全保真 cURL 复制需要显式公开,并记录本地审计元数据且不包含密钥值。 - 打包内容排除了本地的规划、代理、测试和文档文件。 - 捕获的数据即使存储在本地也属于敏感信息;请在测试后清除,并保持较短的保留期限。 ## 本地 Firefox 检查 1. 在 `about:debugging#/runtime/this-firefox` 中将 `extension/` 作为临时附加组件加载。 2. 启动本地 fixture 服务器: npm run dev:server 3. 在 Firefox 中打开 `http://127.0.0.1:8787/`。 4. 打开 Curlsmith 弹出窗口并点击 **Allow site**。 5. 在 fixture 页面上点击 **Run API Fixtures**。 6. 打开 Curlsmith 侧边栏并检查捕获的请求。 预期行为: - 对 `/api/users`、`/api/posts`、`/graphql`、`/api/ndjson`、`/api/large`、`/api/binary` 和 `/api/redirect` 的请求会显示在侧边栏中。 - 脱敏后的 cURL 输出不会暴露 `Authorization`、cookies、CSRF 请求头、查询令牌或类似令牌的主体字段。 - 全保真 cURL 需要使用 **Reveal copy** 路径。 - 捕获的响应预览是有上限的,并且大型响应会被标记为截断。 - 可以从 cURL 配置文件选择器中使用 PowerShell、Fish、here-doc JSON 和 body-file cURL 配置文件。 - 提取的实体可以作为 JSONL 或 CSV 导出,且不包含原始捕获的对象。 fixture 服务器有意仅使用虚假的测试令牌。在针对真实流量进行测试之前,请使用它进行可重复的本地检查。 ## 项目检查 ``` npm ci npm run check npm run package:extension npm audit ``` `npm run check` 会运行单元测试、JavaScript 语法检查、Mozilla 附加组件检查以及运行时依赖项审计。 `npm run package:extension` 会将未签名的扩展 ZIP 写入 `web-ext-artifacts/`。 `npm audit` 会验证完整的 npm 依赖面。 `addons-linter` 被固定为开发依赖项,以便 CI 和本地检查使用相同的附加组件策略检查。 ## 公开发布前的已知不足 - AMO 签名和列表审查尚未完成。 - 用于权限授予和捕获断言的端到端浏览器自动化尚未集成到 CI 中。 - 扩展包未签名,仅用于本地测试。
标签:API安全, API抓包, cURL生成, DNS枚举, Firefox扩展, IndexedDB, JSON解析, JSON输出, Linux安全, Manifest V3, Web开发调试, 前端工具, 威胁情报, 开发者工具, 报文分析, 敏感信息提取, 数据可视化, 数据导出, 数据脱敏, 暗色界面, 本地存储, 浏览器扩展, 渗透测试辅助工具, 网络安全工具, 网络数据采集, 网络请求捕获, 自定义脚本, 请求重放