iPhone
iOS
アプリ
SpeeeDay 2

Charlesで他社アプリの通信を覗く

More than 1 year has passed since last update.

この記事はSpeee Advent Calendar 2日目の記事です。

前日の記事はこちら Ruby力を高めるためには標準メソッドを学べ(Enumerable編)

実機のiPhoneで動いているアプリの通信をキャプチャする方法。

自分でアプリを作るときに、他社のアプリがどんな通信をしてるのか参考にするときに使うやり方です。

iPhoneでのやり方ですが、Androidでもプロキシの設定できれば見れるはず。


Charles導入

ここから。

フリートライアル版だと起動時に10秒待たされます。

初回はパスワード入力が必要だった気がする。


Access Control Settings

Wifi経由でアクセスできるようにする。

Proxy > Access Control Settings...

スクリーンショット 2015-12-02 1.14.55.png

0.0.0.0/0

これでとりあえず全開に。

あとMacのローカルIPをifconfigとかで確認しておく。


iPhone側の設定

Wifi設定開く。

20151202015143.jpg

MacのIPとポート8888を指定。

20151202015158.jpg

これでSafariで適当なページ開くとCharlesにベロベロ出てくるはず。

スクリーンショット 2015-12-02 1.29.36.png


SSL関連の設定

今のままだとクリアテキストな通信しか中身を覗けないので、https通信の中身も見れるように設定する。

iPhoneのSafariで http://charlesproxy.com/getssl にアクセスする。

設定アプリにリダイレクトされるので、プロファイルをインストールする。

20151202015213.jpg

Charles側のProxy > SSL Proxy Settings...*:*を追加する。

スクリーンショット 2015-12-02 1.38.35.png

https通信の中も見れるようになる。


試しに

AmazonアプリのAPIはこうなってんだなーみたいな。

スクリーンショット 2015-12-02 1.45.40.png


2017/07/03 追記

どこかのiOSバージョン以降、デフォルトでサードパーティの証明書を信頼しないようになっているようです。(プロファイルをインストールしたあと、手動で信頼設定をする必要がある)

Unable to use SSL Proxy in Charles 4.0.2 on a remote device with iOS 10.3 beta 2 version. Any workaround available?

設定アプリから、一般 > 情報 > 証明書信頼設定 でCharlesの証明書をONにする必要があるらしいです。


さいごに

フリートライアル版は連続して30分間しか使えない。一度終了してもう一回起動すればまた30分使える。便利だと思ったらライセンス買おう。

Charlesが閉じたあとはiPhoneのプロキシ設定をオフにしないとそのWifiでネット繋がらなくなるので注意。

Charlesが起動してる間はiCalの同期が失敗しまくったりAppleMusicが調子悪かったりするけどCharles閉じれば直るから無視してオッケー。

明日も僕が書くんでよろしく〜