MitMProxyキャプチャをOpenAPI 3.0仕様に自動的に変換するためのツール。これは、アプリを実行してトラフィックをキャプチャするだけで、APIを自動的にエンジニアリングすることができることを意味します。
?新しい!
ブラウザDevToolsからエクスポートされたHARの処理のサポートを追加しました。詳細については、使用法を参照してください。
まず、Python3とPIP3が必要になります。
$ pip install mitmproxy2swagger
# ... or ...
$ pip3 install mitmproxy2swagger
# ... or ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger .次に、以下の例に従って、リポジトリをクローンし、 mitmproxy2swaggerを実行します。
HTTPトラフィックを検査して仕様を作成するには、次のことが必要です。
MITMProxyツールを使用してトラフィックをキャプチャします。私は個人的にMitMWebを使用することをお勧めします。MitMWebは、MitMProxyに組み込まれたWebインターフェイスです。
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...重要
MITMプロキシによって公開されたプロキシを使用するようにクライアントを構成するには、詳細についてはMITMProxyドキュメントを参照してください。
トラフィックをフローファイルに保存します。
MITMWEBでは、「ファイル」メニューを使用して「保存」を選択してこれを行うことができます。

mitmproxy2swaggerの最初のパスを実行します:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >既存のスキーマを使用できることに注意してください。この場合、既存のスキーマは新しいデータとともに拡張されます。また、異なるフローキャプチャで数回実行することもできます。キャプチャされたデータは安全にマージされます。
<api_prefix>は、エンジニアリングを逆にするAPIのベースURLです。 mitmproxyで行われているリクエストを観察することで、それを取得する必要があります。
たとえば、アプリがこのようなリクエストを行った場合:
https://api.example.com/v1/login
https://api.example.com/v1/users/2
https://api.example.com/v1/users/2/profileおそらくプレフィックスはhttps://api.example.com/v1です。
最初のパスを実行すると、次のようなスキーマファイルにセクションが作成されるはずです。
x-path-templates :
# Remove the ignore: prefix to generate an endpoint with its URL
# Lines that are closer to the top take precedence, the matching is greedy
- ignore:/addresses
- ignore:/basket
- ignore:/basket/add
- ignore:/basket/checkouts
- ignore:/basket/coupons/attach/{id}
- ignore:/basket/coupons/attach/104754テキストエディターを使用してスキーマファイルを編集し、生成したいパスからのignore:を削除する必要があります。パスに表示されるパラメーターを調整することもできます。
mitmproxy2swaggerの2番目のパスを実行します:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]コマンドをもう一度実行します(同じスキーマファイルを使用)。編集された行をピックアップし、エンドポイントの説明を生成します。
mitmproxy2swaggerは既存のエンドポイントの説明を上書きしないことに注意してください。上書きしたい場合は、2番目のパスを実行する前に削除できます。
パッシング--examplesは、リクエストと応答に例データを追加します。このオプションを使用する場合は、機密データ(トークン、パスワード、個人情報など)をスキーマに追加する可能性があるため、注意してください。パス--headersは、リクエストと応答にヘッダーデータを追加します。このオプションを使用する場合は、機密データ(トークン、パスワード、個人情報など)をスキーマに追加する可能性があるため、注意してください。
ブラウザDevToolsからトラフィックをキャプチャしてエクスポートします。
ブラウザDevToolsでは、[ネットワーク]タブに移動し、[HARのエクスポート]ボタンをクリックします。

mitmproxyダンプで行うのと同じように続けます。 mitmproxy2swagger 、HARファイルを自動的に検出して処理します。
例を参照してください。そこに生成されたスキーマと、生成されたドキュメントを備えたHTMLファイルがあります(Redoc-Cli経由)。
ここで生成されたHTMLファイルを参照してください。
このプロジェクトは次のとおりです。
依存関係をインストールするには:
poetry installラン・リンジター:
pre-commit run --all-files事前コミットフックをインストールします:
pre-commit installテストの実行:
poetry run pytestカバレッジでテストを実行します:
poetry run pytest --cov=mitmproxy2swaggermit