日本語版
最新ニュース
科学&テクノロジー

alufers/mitmproxy2swagger: トラフィックのキャプチャによる REST API の自動リバース エンジニアリング

ビデオ.mp4 自動変換するツール ミットプロキシ にキャプチャします OpenAPI 3.0 仕様。つまり、アプリを実行してトラフィックをキャプチャするだけで、REST API を自動的にリバース エンジニアリングできるということです。 🆕 新しい! ブラウザ DevTools からエクスポートされた HAR の処理のサポートが追加されました。見る 使用法 - HAS 詳細については。 まず、python3 と pip3 が必要になります。 $ pip install mitmproxy2swagger # ... or ... $ pip3 install mitmproxy2swagger #…

alufers/mitmproxy2swagger: トラフィックのキャプチャによる REST API の自動リバース エンジニアリング

1735810602
2025-01-02 08:08:00


Arch Linux リポジトリ


ビデオ.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 トラフィックを検査して仕様を作成するには、次のことを行う必要があります。

  1. mitmproxy ツールを使用してトラフィックをキャプチャします。個人的には、mitmproxy に組み込まれた Web インターフェイスである mitmweb を使用することをお勧めします。

    $ mitmweb
    Web server listening at http://127.0.0.1:8081/
    Proxy server listening at http://*:9999
    ...

    重要

    mitm プロキシによって公開されるプロキシを使用するようにクライアントを設定するには、 mitmproxy のドキュメント 詳細については。

  2. トラフィックをフロー ファイルに保存します。

    mitmweb では、[ファイル]メニューを使用して[保存]を選択することでこれを行うことができます。

    の場所を示すスクリーンショット

  3. 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

  4. 最初のパスを実行すると、スキーマ ファイルに次のようなセクションが作成されるはずです。

    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: 生成したいパスのプレフィックスを指定します。パスに表示されるパラメータを調整することもできます。

  5. 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 リクエストとレスポンスにヘッダー データを追加します。このオプションを使用する場合は、機密データ (トークン、パスワード、個人情報など) がスキーマに追加される可能性があるため注意してください。

  1. ブラウザ DevTools からトラフィックをキャプチャしてエクスポートします。

    ブラウザの DevTools で、[ネットワーク]タブに移動し、[HAR のエクスポート]ボタンをクリックします。

    エクスポート har ボタンの位置を示すスクリーンショット

  2. mitmproxy ダンプの場合と同じ方法を続行します。 mitmproxy2swagger HAR ファイルを自動的に検出して処理します。

を参照してください。 。そこには生成されたスキーマと、生成されたドキュメントを含む HTML ファイルが表示されます (経由) redoc-cli)。

生成されたhtmlファイルを確認する ここ

開発と貢献

このプロジェクトでは以下を使用します。

依存関係をインストールするには:

リンターを実行します。

pre-commit run --all-files

プリコミットフックをインストールします。

テストを実行します。

カバレッジを指定してテストを実行します。

poetry run pytest --cov=mitmproxy2swagger

#alufersmitmproxy2swagger #トラフィックのキャプチャによる #REST #API #の自動リバース #エンジニアリング

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。