Postman インターセプターでブラウザートラフィックから API コレクションを作る

この記事は [Postman Advent Calendar 2023](https://qiita.com/advent-calendar/2023/postman) のシリーズ 2、11日目の記事です。

Web API を介してフロントエンドアプリと通信するサーバーを運用していて、その API の仕様が明らかではないけれども、デバッグを行う必要がある状況だったとすると、あなたはどうしますか？ あるいは、同じように Web API の詳細仕様が得られない外部システムにアクセスする、フロントエンドアプリを開発しなければいけない状況になったら、どうでしょうか？

こんな時、ブラウザーの DevTools（開発者ツール）を使って、その API に対するトラフィックを覗き見て、ヘッダーやリクエストパラメーター、レスポンスを確認するということがよく行われます。しかし、こんなリバースエンジニアリングが必要な状況で、とても役に立つのが **Postman インターセプター**です。

https://learning.postman.com/docs/sending-requests/capturing-request-data/interceptor/

Postman インターセプターは、Postman デスクトップアプリと連携して機能するブラウザー拡張機能です。Postman インターセプターを使うと、ブラウザーのネットワークトラフィックからリクエストと Cookie を直接キャプチャして、Postman コレクションを生成することができます。

# Postman インターセプターのインストール

Postman インターセプターは、現在よく使われている次のブラウザーに対応しています。各リンクをクリックすると、それぞれのブラウザーの拡張機能をインストールできます。

- [Google Chrome](https://go.pstmn.io/interceptor-chrome)
- [Apple Safari](https://go.pstmn.io/interceptor-safari)
- [Mozilla Firefox](https://go.pstmn.io/interceptor-firefox)
- [Microsoft Edge](https://go.pstmn.io/interceptor-edge)

古いバージョンの Postman や Linux 版では、上記に加えて[インターセプターブリッジ](https://learning.postman.com/docs/sending-requests/capturing-request-data/interceptor/#installing-interceptor-bridge)のインストールが必要です。

拡張機能のインストールが完了すると、ブラウザーのツールバーに Postman アイコンが表示されます。アイコンをクリックすると、Postman インターセプターの設定画面が表示されます。

<img width="517" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/4f7e9f93-8c5c-729d-0a35-5ad889419e0f.png">

# トラフィックのキャプチャ

拡張機能の設定画面に緑色のランプと「Ready to capture」の文字が表示されていれば、キャプチャの準備ができています。ここで「Start Capture」ボタンを押すと、ブラウザーの全トラフィックが Postman インターセプターによってキャプチャされ、Postman デスクトップアプリの中で記録されます。

<img width="488" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/24494868-b99f-2f4a-63d3-34521390ddce.png">

オプションとして、プルダウンメニューからキャプチャする HTTP メソッドタイプを限定したり、キャプチャするドメインを正規表現でフィルタリングすることもできます。

<img width="149" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/ca8698f2-606f-7069-f262-92ca3a45f95e.png">

<img width="263" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/68b6768c-7d87-e347-369e-d70461599b12.png">

キャプチャを終了するには「Stop Capture」ボタンをクリックします。そうするとセッションが終了して、自動的に Postman デスクトップアプリの画面に誘導が行われます。

# 結果を Postman デスクトップアプリで表示

さて、ここからが強力です。「Interceptor debug session」と名付けられたタブの中に、キャプチャされたすべてのリクエストの情報が含まれています。このタブは、画面左サイドバーの「履歴」から呼び出すこともできます。

<img width="1195" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/2fc43f32-d24a-be54-046d-ec80f745f278.png">

「概要」タブでは、キャプチャしたリクエストを「メソッド」「ドメイン」「コンテンツタイプ」ごとに集計した概要をグラフで表示することができます。

<img width="804" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/590af088-c6c0-3772-0541-9a00b7f944fc.png">

「リクエスト」タブでは、リクエストを様々なフィルタを適用して絞り込めるほか、各リクエストをクリックすると、ヘッダーやパラメーター、ボディの詳細が表示されます。

<img width="1150" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/d0c69a14-ee4f-b63b-3983-d242a9f5cfcc.png">

さらに、リクエストにチェックボタンを入れて画面右上の「リクエストを保存」ボタンをクリックすると、選択したリクエストをコレクションとして保存できます。ダイアログが開きますので、既存のコレクションに保存するか、新しいコレクションとして保存するかを選べます。

<img width="1149" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/c39c919e-a1ab-35d0-255b-37e08ce2b3c1.png">

一旦コレクションとして保存してしまえば、あとはリクエスト送信を再現するもよし、パラメーターを変えてレスポンスをチェックするのもよしです。

<img width="1230" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32610/a0fdeeb8-2373-b4e7-f991-88e558c18565.png">

さあ、今日から Postman インターセプターを使いこなして、効率よくデバッグしていきましょう。