无需手动解析 DevTools,将任何网站转换为现成的 API 客户端
任何曾经从封闭服务中提取数据的人都熟悉这个流程。你打开开发者工具中的 Network(网络)标签,找到需要的请求,点击"Copy as cURL"(复制为 cURL),然后拿到 Postman 或用 requests 写一个封装。如果有十几个端点,这项工作就变成了枯燥的机械劳动。
reverse-api-engineer 项目可以自动化整个流程。你只需告诉工具你需要什么数据,它就会拦截网络流量,并输出一个现成的类型化 SDK,使用你选择的编程语言。
底层工作原理
该项目的核心思路是拦截 HAR 文件(HTTP Archive)并将其交给语言模型处理。
工作流程如下:
- 通过 Playwright 控制或 Chrome DevTools MCP 启动浏览器。
- 会话执行必要的步骤:你可以自己点击页面,也可以将导航任务委托给自主代理。
- 所有浏览器网络流量都以 HAR 格式整齐保存。
- 神经网络读取请求日志,过滤静态内容,找到相关的端点和载荷,并生成现成的客户端代码。
自主代理操作模式
该工具不通过容易因前端更新而失效的选择器解析 DOM 树,而是直接与服务内部 API 交互。如果网站通过 JSON 加载数据,你就会得到干净的处理该 JSON 的代码。
工作模式
在控制台界面中,按 Shift+Tab 切换模式。提供四种主要场景:
- agent — 自主代理自行打开浏览器,找到需要的按钮,浏览页面,并根据你的文本任务收集网络日志。
- manual — 浏览器为你打开。你自己处理身份验证、应用需要的筛选器、完成任何验证码操作,完成后关闭窗口。
- engineer — 基于之前保存的抓包重新运行代码生成,无需重新打开浏览器。
- collector — 直接收集结构化数据(JSON 或 CSV 格式),无需编写客户端代码。
手动模式下的自主浏览器控制
对于代理模式,该工具可以通过 Chrome MCP 连接到你的日常 Google Chrome。当网站需要复杂身份验证或存储会话 Cookie 时,这很有帮助,因为将这些转移到新浏览器会花费太多时间。
安装与快速入门
该项目使用 Python 编写,通过 PyPI 分发。最快的安装方式是使用 uv 或常规 pip:
uv tool install reverse-api-engineer
如果你计划使用 Playwright 本地控制的手动模式,最好立即安装浏览器依赖:
uv tool install "reverse-api-engineer[manual]"
playwright install chromium
安装后,启动 CLI 并传入任务:
reverse-api-engineer
> fetch all apple jobs from their careers page
浏览器将打开,执行操作,并将结果放入单独的文件夹:
./scripts/apple_jobs_api/
├── api_client.py
├── example_usage.py
└── README.md
里面包含一个现成的类,包含方法、参数类型、正确的请求头和使用示例。
选择模型和语言
该工具不依赖单一 LLM 提供商。设置存储在 ~/.reverse-api/config.json 文件中,你可以通过 /settings 命令直接在终端中修改。
支持以下技术栈:
- Claude(默认使用 Sonnet 4.6 或 Opus 4.6);
- OpenCode,内置对免费模型的支持;
- Ollama,适合喜欢在本地硬件上运行模型的用户;
- Cursor 和 GitHub Copilot。
至于输出代码,生成器不仅能生成 Python。配置中可设置 TypeScript、JavaScript、Go、Java、C#、PHP、Ruby 或纯 C(代码生成支持 libcurl)。
自动化与脚本
由于支持 JSON 输出和 --no-interactive 标志,该工具可以嵌入到流水线中:
reverse-api-engineer agent \
--prompt "capture the public jobs api" \
--url https://example.com/jobs \
--json | jq .
该命令将返回一个结构化对象,包含执行状态、HAR 文件路径、生成的脚本和令牌使用统计。
局限性与注意事项
在急于将所有内容自动化之前,有几个实际考虑需要记住。
Cloudflare Turnstile 或 Akamai 等激进的反爬虫保护可能会阻止代理模式。在这种情况下,手动模式(manual)或通过 chrome-mcp 连接实时 Chrome 配置文件会有所帮助。
生成的代码在本地执行。在使用生产账号运行脚本之前,务必验证神经网络在 api_client.py 中编写的内容。
会话令牌和请求头会随时间过期。如果服务使用临时请求签名,你需要定期通过重新运行来更新生成的脚本。
适用人群
如果你经常需要从没有公开 API 的 Web 服务中提取数据、快速编写集成或构建数据集,这个项目可以节省大量时间。无需在 Network 标签中繁琐查找,几分钟内就能获得现成的 SDK。非常值得一试,尤其是当你已经有 Claude 或本地 Ollama 实例的访问权限时。
相关项目