1735810602
2025-01-02 08:08:00
ビデオ.mp4
自動変換するツール ミットプロキシ にキャプチャします OpenAPI 3.0 仕様。つまり、アプリを実行してトラフィックをキャプチャするだけで、REST API を自動的にリバース エンジニアリングできるということです。
🆕 新しい!
ブラウザ DevTools からエクスポートされた HAR の処理のサポートが追加されました。見る 使用法 – HAS 詳細については。
まず、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 ツールを使用してトラフィックをキャプチャします。個人的には、mitmproxy に組み込まれた Web インターフェイスである mitmweb を使用することをお勧めします。
$ mitmweb Web server listening at http://127.0.0.1:8081/ Proxy server listening at http://*:9999 ...重要
mitm プロキシによって公開されるプロキシを使用するようにクライアントを設定するには、 mitmproxy のドキュメント 詳細については。
-
トラフィックをフロー ファイルに保存します。
mitmweb では、[ファイル]メニューを使用して[保存]を選択することでこれを行うことができます。
-
mitmproxy2swagger の最初のパスを実行します。
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 のベース 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 番目のパスを実行します。
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]コマンドを 2 回目に実行します (同じスキーマ ファイルを使用)。編集された行が選択され、エンドポイントの説明が生成されます。
mitmproxy2swagger は既存のエンドポイントの説明を上書きしないことに注意してください。上書きしたい場合は、2 番目のパスを実行する前に削除できます。
通過
--examplesサンプルデータをリクエストとレスポンスに追加します。このオプションを使用する場合は、機密データ (トークン、パスワード、個人情報など) がスキーマに追加される可能性があるため注意してください。通過--headersリクエストとレスポンスにヘッダー データを追加します。このオプションを使用する場合は、機密データ (トークン、パスワード、個人情報など) がスキーマに追加される可能性があるため注意してください。
-
ブラウザ DevTools からトラフィックをキャプチャしてエクスポートします。
ブラウザの DevTools で、[ネットワーク]タブに移動し、[HAR のエクスポート]ボタンをクリックします。
-
mitmproxy ダンプの場合と同じ方法を続行します。
mitmproxy2swaggerHAR ファイルを自動的に検出して処理します。
を参照してください。 例。そこには生成されたスキーマと、生成されたドキュメントを含む HTML ファイルが表示されます (経由) redoc-cli)。
生成されたhtmlファイルを確認する ここ。
このプロジェクトでは以下を使用します。
依存関係をインストールするには:
リンターを実行します。
pre-commit run --all-files
プリコミットフックをインストールします。
テストを実行します。
カバレッジを指定してテストを実行します。
poetry run pytest --cov=mitmproxy2swagger
と
#alufersmitmproxy2swagger #トラフィックのキャプチャによる #REST #API #の自動リバース #エンジニアリング

