Charlesというソフトを利用すると比較的簡単にiPhoneアプリケーションの通信をキャプチャすることができました。自作アプリはもちろん、AppStoreで公開されているアプリケーションでも通信内容をキャプチャすることができます。また、SSL通信のキャプチャにも対応しているので、利用しているアプリが怪しい情報を送信していないか確認するのにも役立ちそうです。
Charles - Web Debugging Proxy Application
個人ライセンスが$50の有料ソフトですが、トライアルバージョンを無料で利用できます。
以下、iPhoneのSSL通信をキャプチャするまでの設定手順です。
iPhoneのプロキシにCharlesを設定する
まずはiPhoneのプロキシとしてCharlesを設定します。あらかじめ同一ネットワーク内でCharlesを起動させておきます。
- iPhoneで 設定 > Wi-FI を表示
- 現在接続しているWi-Fiネットワークのボタンをタップ
- 画面下段のHTTPプロキシを「手動」に変更
- プロキシの設定を追加
- サーバー・・・Charlesを動作させているPCまたはMacのIPアドレス
- ポート・・・CharlesのProxy Settingsで指定したポート番号(デフォルトは8888)
- 認証・・・オフ
HTTP通信であればこれだけでキャプチャできます。今回はSSL通信もキャプチャしたいので以下の設定も行います。
iPhoneにプロファイルをインストールする
Charlesが配布しているiPhone用のプロファイルをインストールします。このプロファイルをインストールするとSSL通信用の証明書がインストールされるようです。
- iPhoneのSafariでhttp://charlesproxy.com/charles.crtを開く
- 設定画面に移り、確認ダイアログが表示されるのでインストール
CharlesでSSL通信のキャプチャを有効にする
CharlesではSSL通信のキャプチャが無効になっているので有効にします。
- Charlesで Proxy > Proxy Settingsを開く
- SSLタブを選択して、設定を変更
- Enable SSL Proxying・・・チェックをつけます
- Locations・・・Addから * を追加します。
Locationsはワイルドカードで指定できます。とりあえずSSL通信は全部キャプチャしたいので「*」を設定しました。
キャプチャを開始する
Charlesのツールバーからレコードボタンを押すとキャプチャが開始されます。iPhoneのSafariでサイトを表示したり、通信を行うアプリを起動して確認してみてください。
例えば、iPhoneでTwitterを起動した場合はこのようになります。Twitter APIへの接続はHTTPSで行われていますが、それらも全てキャプチャされているのが分かります。
これらのiPhoneの設定等についてはCharlesのサポートページに記載されています。iOSシミュレーターの設定方法などもありますので、そちらもご覧下さい。
http://www.charlesproxy.com/support/