猫でもわかるWebプログラミング

試行錯誤しながらエンジニア(プログラマー)として働く猫のブログ。技術的な話や、働き方の話、読書録とか、試行錯誤している日常の話。

iPhoneの通信をネットワークタブで見たいので Mitimproxy を使う

iPhoneの通信を見たい

ブラウザの開発者ツールに「ネットワーク」タブがあると思います。デバッグ時に使っている人も多いでしょう。

https://mitmproxy.org/
https://mitmproxy.org/ にあるネットワークタブの図

これと同じものを 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 の証明書を信頼させるように、トグルをオンにします。

f:id:yoshiki_utakata:20200311110806p:plain

iPhone で PC を経由してインターネットに接続するように設定する

  • 設定 > Wi-Fi > 接続しているWi-Fiの横にある (i) のマークをタップします
  • 「プロキシを構成」をタップ
    • 「手動」を選択
    • 「サーバ」はPCのIPアドレスを入力
    • 「ポート」は Mitmproxy が起動している

f:id:yoshiki_utakata:20200311111313p:plain

これで設定は完了です。

通信を見てみる

ここまで設定すれば、iPhoneがしている通信は見られるようになっているはずです。

Mitmproxy の操作は難しいことはなにもないので、いろいろ見てみてください。

デバッグが終了したら、「プロキシ構成」の設定は「オフ」に戻しておいてください。

参考