Charlesの概要
Charlesは、PC上で動作するWebプロキシ(HTTP Proxy / HTTP Monitor)で、WebブラウザまたはアプリケーションをCharlesを介してインターネットにアクセスするように設定すれば、送受信されるデータを表示することができます。
送受信データは、リクエスト、レスポンス、HTTPヘッダー(クッキーやキャッシュ情報を含む)などが対象となります。
Charlesを使う背景
API開発をする際、通信の中身を確認したいことはよくあります。
例えばAPIの不具合確認などで、状況を再現して、APIのレスポンスの確認をしたい。といった場合、Charlesを使って実機で状況を再現して送受信される通信の中身を確認すると、手軽に確認作業が行えて便利です。
インストール
公式サイトからインストールしてください。
https://www.charlesproxy.com/latest-release/download.do
備考
Charlesはシェアウェアで、試用版を30日間無料で使用できます。
無料期間経過後は、試用版として、継続使用30分間の制限付きで使用することができます。30分経過後にアプリケーションが終了しますが、引き続き使用したい場合、Charlesを再起動すれば使用できます。
有料版は5,000円/1ライセンスほどで購入できます。
ですが、自分は試用版で十分使用できているため、有料版は購入しておりません。
https://www.charlesproxy.com/buy/
Charles側の設定
ポート番号の設定(初回設定時のみ必要)
Charlesを起動したら、ツールバーから Proxy > Proxy Settings... を開いて、使用するポート番号等の設定を行います。
デフォルトのポート番号が8888となっていますが、既に使用されているポート番号の場合、よしなに変更して設定してください。
自分は7777にしています。
プロキシに必要なPCのローカルIPアドレスを取得
Charlesのツールバーから Help > Local IP Address を開いてローカルIPアドレスを取得します。
SSLプロキシ設定(初回設定時のみ必要)
Charlesのツールバーから Proxy > SSL Proxying Settings... を開いてEnable SSL Proxingのチェックボックスを有効にします。
SSL証明書の設定(初回設定時のみ必要)
Charlesのルート証明書は、信頼できるルート証明書のリストに含まれていないため、その証明書を受信するとアプリケーションに警告が表示されます。
Charlesのルート証明書を信頼することで証明書の警告が表示されないようになります。
手順の説明は公式サイトに預けます。
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
通信を確認したい端末側の設定
今回の場合iOS端末の通信の中身を確認したかったため設定の説明はiOSの前提とします。
設定 > Wi-Fi を開いて、接続しているWi-FiのHTTPプロキシのプロキシを構成を「手動」にします。
Charles側の設定で設定、取得したポート番号、ローカルIPアドレスを入力してください。
これでiOSの通信を確認することができます。
注意事項
最後に注意事項ですが、利用規約でリバースエンジニアリングを禁止する旨を明記しているアプリケーションに対しては、解析を行わないようにしてください。
自サービスの開発に役立てる目的で使うことを推奨します。