このページを正しく表示するにはJavascriptを有効にしてください。
WiresharkでiPhone実機のHTTP通信を覗いてみる
ちょっと困ったことが起きたので、iPhone実機ではどんなHTTPの通信が走っているのか知りたくなりました。調べてみると結構簡単に出来そうだったので挑戦してみます。
## 手順概要
1. WiresharkをMacにインストールする
2. 実機をMacにつなぐ
3. 仮想ネットワークを作成
4. Wiresharkで解析
ステップとしてはこんな感じになります。
Wiresharkのインストールがちょっと面倒なのと、Wiresharkの使い方がわかりづらいという点を除けば結構簡単にできるので、覚えておくと便利そうです。
## 1. WiresharkをMacにインストールする
Wiresharkというパケット解析用のアプリケーションをMacにインストールします。これがなくても生のパケットは拾えるのですが、関連付けたり読み解いていくのを手動でやるのはつらいです。WiresharkはGUIでいろいろやってくれるので活用しましょう。
[https://www.wireshark.org/download.html](https://www.wireshark.org/download.html)
まずはここからアプリケーションをダウンロードしてインストールします。
インストール後、起動しようとするとX11をインストールしてくれ的なエラーが出てダウンロードページに飛ぶので、そこから「XQuartz」をダウンロード・インストールします。再ログインを促されるので一応MacOSを再起動します。
XQuartzをインストール後、再びWiresharkをランチャーから立ち上げると、「X11はどこだ」みたいなダイアログが出るので、ファイラーからX11の場所を指定してあげます。(分かりづらいですが、アプリケーションのユーティリティの中にあります。)
X11を指定後待ってても起動しないので、一度Wiresharkを終了します。そしてコマンドラインから
```
/Applications/Wireshark.app/Contents/MacOS/Wireshark
```
みたいな感じで起動してあげます。どうも初回はコマンドから起動してあげる必要があるみたいです。時間がかかりますがしばらくするとちゃんと起動すると思います。
## 2. 実機をMacにつなぐ
ライトニングケーブルで普通につなぎます。XcodeのDeviceなどから端末のIdentifierを記録しておいてください。16進数のちょっと長めの文字列です。
## 3. 仮想ネットワークを作成
Macに仮想ネットワークを構築して、端末の通信をMac経由で行うようにします。これによってパケットのキャプチャが可能になります。
なんか難しそうですがコマンド一発でできます。
```
rvictl -s {$端末のIdentifier}
```
こうすることでネットワークに rvi0 という仮想ネットワークが作成されます。
## 4. Wiresharkで解析
ここまでくれば用意しておいたWiresharkで解析するだけです。InterfaceListから rvi0 を選択すると、端末に流れるパケットを取り出すことが出来ます。上のFilterに ``` http ``` と入れてあげれば、HTTPの通信だけをフィルタリング可能です。
## 参考
[iPhone端末とかのパケットキャプチャ](http://qiita.com/ionis_h/items/661a9a9d41cb1574e357)