ls -al

仮想通貨やプログラミングに関する事などをつらつらと書き綴ります

Androidエミュの通信をホストのmitmproxyに通す

 Android開発において、エミュレータ上のアプリで叩いているAPIを確認したかったのでやってみました。


mitmproxyとは

 mitmproxyはインタラクティブに動作するman-in-the-middle(中間者)proxyです。これを使うことでコンソール上からproxyを経由したhttp/https通信を確認できます。
 元々はwiresharkを使用する予定だったのですが、これではhttpsの中身を読むのに骨が折れそうだったので、より簡単にそれができる本ソフトを用いました。


手順

  1. mitmproxyを導入する

    sudo pip install mitmproxy
  2. mitmproxyを起動する

    • 以下は8080番ポートで起動するコマンドです。
    mitmproxy -p 8080
  3. Androidエミュレータを起動する

    • OSのバージョンは5.1で動作を確認できました。
    • Pは既存のネットワーク設定の変更ができず、Proxyの設定ができませんでした。
      • ネットワーク設定を追加する形でなら出来るかも知れませんが検証していません。
  4. Android上でproxyの設定を行う

    • 5.1ならSettings >> Wireless&Networks,More >> Cellular networks >> Access Point Namesから現在使用されている設定をタップし、ProxyのIPアドレスとPortを設定する形で行なえます。
      • IPは”10.0.2.2”としてください。これがAndroidエミュレータから見たホストマシンのIPアドレスとなります。
  5. ブラウザからmitm.itにアクセス

    • うまくいかない場合はネットワーク設定が適用されていない可能性があるので、一度機内モードにして戻してみてください。
  6. ダウンロードリンクをタップして証明書のインストール

    • 青いAndroidアイコンの部分をタップします

証明書のインストールが完了するとホストマシンのコンソール上に起動したmitmproxy上にhttp/https通信のログが流れるようになっています。以上で完了となります。


参考

Android Developers - Set Up Android Emulator Networking
mitmproxy docs