この記事はSpeee Advent Calendar 2日目の記事です。
前日の記事はこちら Ruby力を高めるためには標準メソッドを学べ(Enumerable編)
実機のiPhoneで動いているアプリの通信をキャプチャする方法。
自分でアプリを作るときに、他社のアプリがどんな通信をしてるのか参考にするときに使うやり方です。
iPhoneでのやり方ですが、Androidでもプロキシの設定できれば見れるはず。
Charles導入
ここから。
フリートライアル版だと起動時に10秒待たされます。
初回はパスワード入力が必要だった気がする。
Access Control Settings
Wifi経由でアクセスできるようにする。
Proxy > Access Control Settings...
0.0.0.0/0
これでとりあえず全開に。
あとMacのローカルIPをifconfig
とかで確認しておく。
iPhone側の設定
Wifi設定開く。
MacのIPとポート8888を指定。
これでSafariで適当なページ開くとCharlesにベロベロ出てくるはず。
SSL関連の設定
今のままだとクリアテキストな通信しか中身を覗けないので、https通信の中身も見れるように設定する。
iPhoneのSafariで http://charlesproxy.com/getssl にアクセスする。
設定アプリにリダイレクトされるので、プロファイルをインストールする。
Charles側のProxy > SSL Proxy Settings...
で*:*
を追加する。
https通信の中も見れるようになる。
試しに
AmazonアプリのAPIはこうなってんだなーみたいな。
2017/07/03 追記
どこかのiOSバージョン以降、デフォルトでサードパーティの証明書を信頼しないようになっているようです。(プロファイルをインストールしたあと、手動で信頼設定をする必要がある)
設定アプリから、一般
> 情報
> 証明書信頼設定
でCharlesの証明書をONにする必要があるらしいです。
さいごに
フリートライアル版は連続して30分間しか使えない。一度終了してもう一回起動すればまた30分使える。便利だと思ったらライセンス買おう。
Charlesが閉じたあとはiPhoneのプロキシ設定をオフにしないとそのWifiでネット繋がらなくなるので注意。
Charlesが起動してる間はiCalの同期が失敗しまくったりAppleMusicが調子悪かったりするけどCharles閉じれば直るから無視してオッケー。
明日も僕が書くんでよろしく〜