geeknik/curlsmith
GitHub: geeknik/curlsmith
一款 Firefox 浏览器扩展,本地捕获 API 请求并生成格式化的 cURL 命令,默认脱敏敏感字段,适合安全测试与 API 调试。
Stars: 1 | Forks: 0
# Curlsmith
[](https://github.com/geeknik/curlsmith/actions/workflows/ci.yml)
[](https://www.mozilla.org/firefox/)

[](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开发调试, 前端工具, 威胁情报, 开发者工具, 报文分析, 敏感信息提取, 数据可视化, 数据导出, 数据脱敏, 暗色界面, 本地存储, 浏览器扩展, 渗透测试辅助工具, 网络安全工具, 网络数据采集, 网络请求捕获, 自定义脚本, 请求重放