Upgrade to Pro — share decks privately, control downloads, hide ads and more …

APIデバッグとリバースエンジニアリング

 APIデバッグとリバースエンジニアリング

APIのレスポンスを確認するためのツールというイメージが強いPostmanですが、実はAPIのデバッグやリバースエンジニアリングに利用できる豊富な機能を備えています。PostmanのUI上で表示できるAPIリクエストに関する様々な情報やPostmanコンソールの見方から、ローカルマシン上の通信をキャプチャできるPostmanプロキシ、ブラウザの通信をキャプチャできるインターセプターの活用方法をご紹介します。PHP Conference 2024での発表資料です。

草薙昭彦

December 22, 2024
Tweet

More Decks by 草薙昭彦

Other Decks in Technology

Transcript

  1. Postman を使った API リクエストのデバッグ概要 • API リクエストが期待通りに動作しない場合、様々な原因が考えられる • Postman で利用できる主な機能

    ◦ Postman ワークベンチ画面でリクエストを精査 ◦ Postman コンソールの利用 ◦ HTTP バージョンの指定 ◦ AI アシスタント Postbot による支援 • よくある問題とその原因 @postman_japan
  2. Postman ワークベンチでチェックすべき情報 • リクエストヘッダー ◦ ヘッダーに過不足がないか ◦ 必要な認可情報が指定されているか • リクエストボディ

    ◦ Content-Type が正しく設定されてい るか • Cookie ◦ 必要な情報が入っているか @postman_japan • レスポンスメタデータ ◦ ステータスコード、ネットワーク設定、 証明書設定を確認 ◦ レスポンス時間の内訳やデータサイ ズを確認 • レスポンスヘッダー ◦ 問題に関する情報が添えられていな いか ◦ サーバーから送られる Cookie 情報
  3. よくある問題 : SSL 証明書 • HTTPS 接続を使用すると問題が発生する場合 • 設定の「SSL証明書の検証」をオフにすることができる •

    サーバーがクライアント側 SSL 接続(クライアント認証)を行っている可能性もある。コン ソールを使用して、正しい SSL 証明書がサーバーに送信されているか確認 @postman_japan
  4. よくある問題 : Laravel 例外発生時に HTML が返る • Accept リクエストヘッダーが指定されてない、もしくは Accept:

    */* の場合、ステータ スコード 200 で HTML コンテンツが返る仕様 ◦ Laravel ドキュメント Writing The Validation Logic • リクエストヘッダーに Accept: application/json を指定 @postman_japan
  5. HTTP トラフィックのキャプチャ • HTTP トラフィックのキャプチャは、API の開発とテストにとって重要 ◦ 実際に通信で流れるデータを確認して、動作を解析したい ◦ クライアントやサーバーの実装が不明で、通信から

    API 仕様を推測したい • Postman を使うと、クライアントアプリと API 間でやり取りされるリクエストを検査し、 コレク ションに保存できる ◦ 保存されたリクエストを使用して、 API の動作を理解したり、デバッグを支援したりするこ とができる • Postman で HTTP/HTTPS のトラフィックをキャプチャする 2 つの方法 ◦ Postman プロキシ ◦ Postman インターセプター @postman_japan
  6. Postman プロキシとインターセプター @postman_japan Web API ブラウザー Postman デスクトップアプリ Postman インターセプター

    ブラウザー拡張機能 Web アプリ ネイティブアプリ モバイルアプリ 組み込みデバイス Postman プロキシ ポート 5559(デフォルト)
  7. Postman プロキシとインターセプター @postman_japan Web API ブラウザー Postman デスクトップアプリ Postman インターセプター

    ブラウザー拡張機能 Web アプリ ネイティブアプリ モバイルアプリ 組み込みデバイス Postman プロキシ ポート 5559(デフォルト)
  8. Postman インターセプター • ブラウザ拡張機能を活用してクライアントと API 間のトラフィック(Cookie を含む)をキャプチャして 送信されたリクエスト内容の精査・デバッグができる • キャプチャしたリクエストを

    Postman コレクションとして保存ができる インターセプター対応ブラウザ • Chrome • Safari • Edge • Firefox @postman_japan キャプチャ対象ドメイン指定 キャプチャしたリクエスト情報を元にデバッグ