DevToolsを手動で解析せずに、WebサイトをそのままAPIクライアントに変える
クローズドサービスのデータを抽出したことがある人なら 누구나、このルーティンを知っている。DevToolsでNetworkタブを開き、必要なリクエストを見つけ、「Copy as cURL」をクリックし、それをPostmanに持っていくか、requestsでラッパーを書く。 десяток endpointsにもなると、タスクは面倒な機械的な作業に変わる。
reverse-api-engineerプロジェクトは、このチェーン全体を自動化する。必要なデータをツールに伝えるだけで、ネットワークトラフィックを傍受し、選択したプログラミング言語で型付きSDKを即座に生成する。
内部での動作仕組み
このプロジェクトのアイデアは、HARファイル(HTTP Archive)を傍受して言語モデルに供給することを中心にしている。
ワークフローは以下の通り:
- Playwrightで制御されたブラウザ、またはChrome DevTools MCP経由の実際のChromeが起動する。
- セッションで必要なステップを実行する:自分でページをクリックしてもいいし、自律型エージェントにナビゲーションを委任することもできる。
- すべてのブラウザネットワークトラフィックがHAR形式で整然と保存される。
- ニューラルネットワークがリクエストログを読み取り、静的コンテンツを除外し、関連するエンドポイントとペイロードを見つけ、 готовую型クライアントを生成する。
自律型エージェント動作モード
DOMツリーをセレクタで解析する代わりに、フロントエンドの更新で壊れてしまうそのような手法ではなく、ツールはサービスの内部APIを直接操作する。サイトがJSONでデータを読み込む場合、そのJSONを 操作するためのクリーンなコードが手に入る。
動作モード
コンソールインターフェースでは、Shift+Tabを押してモードを切り替える。4つの主要なシナリオが利用可能:
- 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モード(manual)またはChrome MCP経由で действующийChromeプロファイルに接続する(chrome-mcp)ことが役立つ。
生成されたコードはローカルで実行される。プロダクションアカウントでスクリプトを実行する前に、ニューラルネットワークがapi_client.pyに書いたものを常に確認すること。
セッショントークンとヘッダーは時間とともに期限切れになる。サービスが一時的なリクエスト署名を使用している場合、生成されたスクリプトを再度実行して定期的に更新する必要がある。
誰が役立つか
パブリックAPIのないWebサービスからデータを頻繁に抽出する必要がある人、快速な統合を書く必要がある人、データセットを構築する必要がある人にとって、このプロジェクトは多くの時間を節約できる。Networkタブを掘り下げるルーティンの代わりに、数分で готовуюSDKが手に入る。ClaudeやローカルOllamaインスタンスにすでにアクセスがある場合は、特に試す価値がある。
関連プロジェクト