このプロジェクトについて
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/`ディレクトリを参照してください。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.