Mac から iPhone の HTTPS トラフィックを調べる
このガイドは、Chute をインストールしたスマートフォンから始めて、そのスマートフォンの復号済みリクエストをリクエストとレスポンスのボディ付きで Mac のウィンドウに表示し、フィルターと書き出しができる状態にするまでを扱います。それぞれ参照ページを持つもの — CA、ホストリスト、記録、制御チャネル、Dashboard — を実際に行う順につなぎ、各ステップで先に進む前に何が見えているべきかを示します。
必要なもの:
- スマートフォン上の Chute iOS(ライセンス付き)。iPhone では HTTPS 復号とボディの取得はライセンスが必要な機能です。ライセンスが無くても以下はすべて接続まではできますが、HTTPS の行は不透明のまま、データのタブは空のままです。ライセンスと有効化を参照してください。
- Mac 上の Chute Dashboard — 無料でライセンス不要。
- USB ケーブル(推奨: ネットワークに何も開かず、モバイル回線でも動きます)、またはスマートフォンと Mac が 同じ Wi-Fi にあること。
Mac に何もインストールしたくない場合、Web コンソールがブラウザーで同じ接続、ボディ、書き換えを表示し、スマートフォン側に必要なのは
external-http-controllerだけです。以下のステップ 1–3 はそのまま当てはまり、ステップ 4 以降は代わりに Web コンソールを開くに従ってください。
1. CA をインストールして信頼する
スマートフォンの設定エディターで: MITM → CAを設定 → 新しいCA証明書を生成、次に CA証明書をシステムにインストール、そして 設定 → 一般 → 情報 → 証明書信頼設定 で信頼します。誰もが見落とすステップを含む完全な手順は HTTPS 復号のページにあります。
確認: 証明書ページが 信頼済みCA証明書 と表示されます。未信頼 と出るなら、証明書信頼設定の信頼スイッチがまだオフです — それがオンになるまで、この先は何も動きません。
2. 復号するホストを指定する
Chute は指定したホストだけを復号します。エディターの MitM セクション(CAを設定 があるところ)で、見たいホストを追加します。* ではなく狭く始めてください — デバッグしているアプリの API ホストなど。復号するホストごとにスマートフォンの CPU を消費しますし、証明書をピン留めしているアプリは復号すると壊れます。*.apple.com は最初から除外するのが最善です。
[MITM]
enable = true
hostname = api.example.com, *.example.net, -*.apple.com
文法 — ポート、- による除外、/path の限定 — は HTTPS 復号のページにあります。あとで Dashboard の MitM ルール パネルから効果を見ながらホストを追加・削除し、効いたものを設定に書き写すこともできます。
3. 復号と記録をオンにする
スマートフォンの コントロールパネル で、2 つのスイッチ:
- MitM — ステップ 2 のホストに対する復号をオンにします。
- データダンプ — リクエストとレスポンスのボディを記録します(
replica設定)。これが無いと、Dashboard はすべての接続をルールとポリシー付きで表示しますが、データはありません。
どちらもあとで Dashboard のツールバーから切り替えられるので、今忘れても問題ありません。設定に書かれていない限り([General] の replica = true、[MITM] の enable = true)、どちらも再起動をまたいで保持されません。
4. Dashboard の接続を許可する
設定エディターで: 外部コントローラー → 外部コントローラーアクセス。
- Chuteダッシュボード/Chute CLIの接続を許可 をオンにします。
- ポート(空いているポートなら何でも。特に無ければ
6170)と、自分で決めた パスワード を入力します。 - Wi-Fiからのアクセスを許可: USB なら オフ のままにします。Wi-Fi 経由で接続するときだけオンにしてください — そのネットワーク上でパスワードを知っている全員にリスナーを開くことになります。
- 保存して、トンネルを開始(または再起動)します。
確認: コントロールパネルに 外部アクセスポート: 6170(あなたのポート)が表示されます。この行が無ければ、トンネルは保存した設定で動いていません — 再起動してください。
5. Dashboard を接続する
スマートフォンをケーブルで Mac につなぎ、スマートフォン側で聞かれたらこのコンピュータを 信頼 します。Chute Dashboard を開き、Chute 新規ダッシュボード ウィンドウの USB セクションで、ステップ 4 の ポート と パスワード を入力して接続します。
代わりに Wi-Fi なら: リモート セクションで、ホスト にスマートフォンのアドレス(設定 → Wi-Fi → ⓘ の IP アドレス)、同じポートとパスワードを入力します。
確認: 接続名をタイトルにした Dashboard ウィンドウが開き、スマートフォンが接続を作るにつれて アクティブ のリストが埋まっていきます。空ならスマートフォンを数秒使ってください。ここで起こりうる問題は 2 つで、どちらもはっきりしたメッセージがあります: パスワードが一致しません、そしてウィンドウがまったく開かない — スマートフォンに到達できない(アドレスが違う、Wi-Fi アクセスがオフ、トンネルが動いていない)。詳細は Dashboard のページにあります。
6. ツールバーのスイッチを確認する
アクティブのリストの上部に、ステップ 3 の 2 つのスイッチが Dashboard から見た形で並びます:
- トラフィックを記録 は トラフィック記録を無効化 と表示されているはずです — 記録はオンです。まだ トラフィックを記録 のままならクリックしてください。
- MitM を有効化(N ルール) は MitM を無効化(N ルール) と表示されているはずです — 復号はオンで、
Nはステップ 2 のホスト数です。Nが0なら、ホストリストがスマートフォンに届いていません: ステップ 2 を確認してトンネルを再起動してください。
7. 再現して、リクエストを見つける
トラフィックを見たいアプリで操作をします。次にリストを絞ります: ツールバーの フィルター でフィルターバーを開き、ホスト/URL でフィルター… にホストを入力するか、MitM のみ にチェックを入れて復号された行だけを残します。
確認: 対象ホストの行の フラグ 列に M があり、メソッド が CONNECT ではなく本物(GET、POST)で、ステータス も入っています。1 つ開くと、リクエストヘッダー タブにヘッダー、クエリパラメータ、Cookie があり、レスポンスデータ にボディが表示されます — JSON なら JSON ツリー、画像なら画像として。
対象ホストの行が CONNECT で M が無ければ、その接続は復号されていません。可能性の高い順に: ホストがリストに無い(またはパターンが一致しない — api.example.com は www.example.com を含みません)、MitM がオフ、CA はインストールされたが信頼されていない(アプリ自身が証明書エラーを出しているはずです)、アプリが証明書をピン留めしている(そのホストを除外し、中が見えないことを受け入れる)、アプリが QUIC 上の HTTP/3 を話している — これは復号できないので、block-quic で TCP に戻します。
行に M はあるのにデータのタブが データなし なら: その接続が動いたとき記録がオフだった(オンにしてもう一度再現する)、スマートフォン側の [Replica] でホストが除外されている、またはボディが 2 MiB を超えていてスマートフォンが引き渡しを拒否している、のいずれかです。
8. 見つけたものを残す
行を右クリック: 選択項目を HAR として書き出す… でブラウザーの開発者ツール、Charles、Proxyman で開けるファイルに、curl コマンドをコピー で Mac のターミナルからリクエストを 1 つ再送、選択項目を CSV として書き出す… で表計算ソフト向けに。データのタブの中の bin として書き出す はボディ 1 つを取得されたまま保存します。
9. 何かを変えてみる(任意)
MitM ビューのパネルは動作中のカーネルを編集します。手早い実験を 2 つ:
- ヘッダー書き換え → 対象ホストにルールを追加: リクエスト、追加、
X-Debug=1。再現すると、新しい行にHとRが付き、詳細ウィンドウの 適用されたルール にあなたのルールが引用されます。 - Map Local → あるエンドポイントにファイルで応答する。スマートフォンではファイルパスは スマートフォン が読めるものでなければならないので、このパネルの ファイルパス(Mac 上のパス)は使えません。代わりにルールの
base64=形式を、スマートフォン自身のエディターか Web コンソールから使ってください — MitM ツールの注意を参照。Mock で応答した行にはKが付きます。
ここで追加したルールはトンネルが再起動すると消えます。効いたものは設定に書き込んでください — 参照ページ: URL書き換え、ヘッダー書き換え、ボディ書き換え、モックレスポンス。
終わったら
- データダンプ をオフにするか、
replica = falseにします: 記録がオンの間、ボディはスマートフォンに溜まり続けます。 - Wi-Fiからのアクセスを許可 をオンにしたなら、オフに戻します。
- また行うなら CA はインストールしたままで構いません。そうでなければ 設定 → 一般 → VPNとデバイス管理 で削除します。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。