ApiCatcher が Android で利用可能になりました

ApiCatcher が Android で利用可能になりました

ApiCatcher for Android が Google Play で公開されました。これで ApiCatcher は iOS、Android、macOS、Windows の4プラットフォームすべてに対応しました。

ApiCatcher for Android | HTTP Capture

仕組み

iOS版は Network Extension を使い、システムのネットワーク層でトラフィックを傍受します。アプリ内でワンタップでキャプチャを開始でき、プロキシ設定は不要です。Android版も同じ設計思想ですが、基盤となる仕組みは Android の VpnService API です。

キャプチャ開始後、ApiCatcher は VpnService を作成し、TUN 仮想ネットワークインターフェース経由ですべての IP パケットを取得します。Rust 製の tun2proxy ライブラリが TCP パケットを解析し、HTTP/HTTPS 接続をローカルの 127.0.0.1:8888 へ透過的に転送します。Netty ベースの MITM プロキシが HTTP トラフィックをそのまま記録し、HTTPS は CONNECT トンネルと動的に発行する証明書で復号します。アプリ側はプロキシの存在を感知せず、Wi-Fi やモバイルデータのプロキシ設定を変更する必要もありません。

主な機能

Android版は iOS版とコア機能が揃っており、単なるパケットキャプチャツールではありません。

HTTPS と WebSocket(WS/WSS)のキャプチャは標準機能です。WebSocket フレームはチャット形式のメッセージ一覧で表示されるため、送受信内容をひとつずつ確認しやすくなっています。Host の許可/拒否リストで関心のないリクエストを除外でき、他社アプリのトラフィックが混ざるのを防げます。

API デバッグでは、リライトルールでモックレスポンス、リクエスト/レスポンスの書き換え、正規表現による置換、リダイレクト、ドロップ、遅延レスポンスなどに対応しています。ルールでは表現しきれない複雑な処理はスクリプトで実装できます。単一リクエストの即時リプレイに加え、複数リクエストを依存関係に沿って順番に実行するコンポジットリプレイも編集でき、ステップ間のパラメータ注入にも対応しています。

キャプチャ中に HTTP リクエストから API ドキュメントを自動生成し、同一エンドポイントを複数回キャプチャするとレスポンスフィールドを自動的にマージします。Postman や Apifox へのエクスポート時には、キャプチャ履歴をテストケースとして一緒に出力できます。HAR ファイルのエクスポートや、画像・動画・音声のメディア抽出にも対応しています。

DNS マッピング、API スキャン、Protobuf デコード、スケジュールリプレイも利用できます。

UI は iOS版と同じ設計で、使い慣れた操作感を保っています。JSON や XML のシンタックスハイライトに対応し、複数のテーマから選べます。コードエディタも同じテーマを使用します。JSON の検索、パスの折りたたみ、JSON 比較機能も備えています。バイナリコンテンツは16進数ビューで確認でき、画像(SVG 含む)のレンダリング、動画・音声の再生もアプリ内で行えます。

はじめに

Android で HTTPS をキャプチャするには、CA 証明書のインストールと信頼設定が必要です。iOS とは異なり、Android 7 以降は CA 証明書をユーザー証明書ストアにしかインストールできず、システム証明書ストアには入れられません。そのため、自分のアプリの HTTPS トラフィックをキャプチャするには、プロジェクトコードでユーザー証明書を信頼する設定が必要です。

CA 証明書のインストール手順、HTTPS キャプチャの制限、開発者向けの設定方法については ApiCatcher for Android ページをご覧ください。

ApiCatcher for Android は Android 11(API 30)以降に対応しています。