Androidエミュの通信をホストのmitmproxyに通す
Android開発において、エミュレータ上のアプリで叩いているAPIを確認したかったのでやってみました。
mitmproxyとは
mitmproxyはインタラクティブに動作するman-in-the-middle(中間者)proxyです。これを使うことでコンソール上からproxyを経由したhttp/https通信を確認できます。
元々はwiresharkを使用する予定だったのですが、これではhttpsの中身を読むのに骨が折れそうだったので、より簡単にそれができる本ソフトを用いました。
手順
mitmproxyを導入する
sudo pip install mitmproxy
mitmproxyを起動する
- 以下は8080番ポートで起動するコマンドです。
mitmproxy -p 8080
Androidエミュレータを起動する
- OSのバージョンは5.1で動作を確認できました。
- Pは既存のネットワーク設定の変更ができず、Proxyの設定ができませんでした。
- ネットワーク設定を追加する形でなら出来るかも知れませんが検証していません。
Android上でproxyの設定を行う
- 5.1ならSettings >> Wireless&Networks,More >> Cellular networks >> Access Point Namesから現在使用されている設定をタップし、ProxyのIPアドレスとPortを設定する形で行なえます。
- IPは”10.0.2.2”としてください。これがAndroidエミュレータから見たホストマシンのIPアドレスとなります。
- 5.1ならSettings >> Wireless&Networks,More >> Cellular networks >> Access Point Namesから現在使用されている設定をタップし、ProxyのIPアドレスとPortを設定する形で行なえます。
ブラウザからmitm.itにアクセス
- うまくいかない場合はネットワーク設定が適用されていない可能性があるので、一度機内モードにして戻してみてください。
ダウンロードリンクをタップして証明書のインストール
- 青いAndroidアイコンの部分をタップします
証明書のインストールが完了するとホストマシンのコンソール上に起動したmitmproxy上にhttp/https通信のログが流れるようになっています。以上で完了となります。
参考
Android Developers - Set Up Android Emulator Networking
mitmproxy docs