このプロジェクトについて

mitmproxy2swaggerは、HTTPトラフィックキャプチャ(mitmproxyフローファイルまたはブラウザDevToolsのHARエクスポート)をOpenAPI 3.0(Swagger)仕様に変換するコマンドラインツールです。これにより、開発者はアプリケーションを実行してネットワークリクエストをログ記録するだけで、エンドポイントやパラメータを手動で調べることなく、REST APIを迅速にリバースエンジニアリングできます。 ## 主な機能 - **入力形式**: mitmproxyフローファイル(mitmweb/mitmproxy経由の`.mitm`)とHARファイル(自動検出)を受け入れます。 - **2パスワークフロー**: 最初のパスで、検出されたすべてのパスを含むテンプレートを生成します。ユーザーはテンプレートを編集して、含めるエンドポイントを選択し、パスパラメータを調整します(例: 動的IDを`{id}`プレースホルダーに置き換え)。2番目のパスで、複数のキャプチャセッションからのデータを組み合わせて詳細なリクエスト/レスポンススキーマを埋め込み、既存のコンテンツを上書きしません。 - **拡張可能なスキーマ**: 既存のスキーマファイルに新しいデータをマージでき、キャプチャ全体での段階的な改善が可能です。 - **オプションのデータ強化**: `--examples`および`--headers`フラグで、サンプルペイロードとヘッダー情報を含めます(機密データの可能性について警告あり)。 - **出力形式**: OpenAPI 3.0互換のYAMLファイルを生成し、Redocなどのドキュメントツールで使用できます。 ## 一般的な使用方法 1. HTTPトラフィックをキャプチャします(例: `mitmweb`を使用し、フローファイルを保存)。 2. `mitmproxy2swagger -i flow.mitm -o schema.yaml -p https://api.example.com/v1`を実行して初期テンプレートを作成します。 3. schema.yamlを編集し、目的のパスから`ignore:`プレフィックスを削除します。 4. コマンドを再実行して、完全なエンドポイント定義を生成します。 ## 技術詳細 - Pythonで記述され、pipまたはDockerでインストール可能です。 - PyPIおよびArch Linuxリポジトリで利用可能です。 - 開発にはuv、prek(リンティング)、pytest(テスト)を使用し、貢献を歓迎します。 - MITライセンスです。 ## 使用例 `https://api.example.com/v1/login`、`/users/2`、`/users/2/profile`へのリクエストを行うアプリがある場合、ツールは`https://api.example.com/v1`をプレフィックスとして提案し、`/users/{id}`や`/users/{id}/profile`のようなパステンプレートを定義するようユーザーをガイドします。 実用的なデモについては、生成されたスキーマとレンダリングされたHTMLドキュメント例を含む`example_outputs/`ディレクトリを参照してください。