iPhoneの通信を見たい
ブラウザの開発者ツールに「ネットワーク」タブがあると思います。デバッグ時に使っている人も多いでしょう。
これと同じものを iPhone アプリでも見たいです。
Mitimproxy
Mitmproxy は iPhone でも同様にネットワークタブを見るのに使えるツールです。(Androidでも、他のデバイスでも、同様の設定を行えば通信を見ることができます。)
ぼほネットワークタブと同じものが見られます。CLIのツールですが、ほぼGUIと同じ感覚で使えるので、不便はありません。
設定も簡単です。
Mitmproxy 公式サイトはこちら。
環境など
- 筆者の環境は macOS 10.14 / iPhone 11 Pro です
- Winows でも、 macOS の他のバージョンでも動くと思います
- Python 3
- iPhone と PC が同じネットワークに接続されていることが条件です
Mitmproxy の仕組み
通常、
- iPhone -> インターネット上の各サーバー
と通信しているところを
- iPhone -> 自分のPC(Mitmproxyが動作している)-> インターネット上の各サーバー
と自分のPCを挟むことで、iPhone の通信を見ることができます。
Mitmproxy の導入手順
Mitmproxy のインストール
Macであればpython3が入っているので、pip3でインストールします。
pip3 install mitmproxy
Mitmproxy の起動
-p
でポート番号を指定できます。今回は8080で起動していますが、使っていないポートであればなんでもいいです。
mitmproxy -p 8080
PC のローカルIPを調べる
Macの場合は ifconfig
でPCのローカルIPを調べます。いくつかIPが出てくる場合がありますが、たいてい 192.168
から始まるのがローカルIPアドレスのはず。
$ ifconfig ... en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 8c:85:90:9b:57:7a inet 192.168.11.5 netmask 0xffffff00 broadcast 192.168.11.255 media: autoselect status: active
僕の場合は 192.168.11.5
でした。
iOSに証明書をインストールする
Mitmproxy が発行した証明書を iPhone にインストールする必要があります。
HTTPSの通信は暗号化されていて、通常は通信の中身が見られないんですが、Mitmproxyの証明書をiPhoneにインストールすることで、通信の中身が見られるようになります。
PCで Mitmproxy を起動すると、 ~/.mitmproxy/mitmroxy-ca.pem
というファイルが生成されているはずなので、これを iPhone に Airdrop なり、メールなりで送りつけ、iPhone 側で証明書をインストールします。
証明書をダウンロードすると「設定から証明書をインストールしてください」的なことを言われるので、言われたとおり「設定」を開いて証明書をインストールします。
証明書インストール後、
- 設定 > 一般 > 情報 > 証明書信頼設定
で、 mitmproxy の証明書を信頼させるように、トグルをオンにします。
iPhone で PC を経由してインターネットに接続するように設定する
- 設定 > Wi-Fi > 接続しているWi-Fiの横にある (i) のマークをタップします
- 「プロキシを構成」をタップ
- 「手動」を選択
- 「サーバ」はPCのIPアドレスを入力
- 「ポート」は Mitmproxy が起動している
これで設定は完了です。
通信を見てみる
ここまで設定すれば、iPhoneがしている通信は見られるようになっているはずです。
Mitmproxy の操作は難しいことはなにもないので、いろいろ見てみてください。
デバッグが終了したら、「プロキシ構成」の設定は「オフ」に戻しておいてください。