Androidエミュレータから送受信されるネットワークトラフィックを監視するにはどうすればよいですか?
Androidエミュレーターからネットワークトラフィックを直接キャプチャするには2つの方法があります。
エミュレータで ARM互換のtcpdumpバイナリ をコピーして実行し、SDカードに出力を書き込みます(例:tcpdump -s0 -w /sdcard/emulator.cap
)。
emulator -tcpdump emulator.cap -avd my_avd
を実行して、エミュレーターのすべてのトラフィックをPC上のローカルファイルに書き込みます
どちらの場合でも、通常どおりtcpdumpまたはWiresharkでpcapファイルを分析できます。
OS Xの場合、 Charles を使用できます。シンプルで使いやすいです。
詳細については、 Android Emulator and Charles Proxy ブログ投稿をご覧ください。
Android Studioの現在のリリースでは、-tcpdump
引数が正しく適用されませんでした。関連するパラメーターを次のようにqemuに渡すことで、ダンプをキャプチャできました。
tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
はい、wiresharkは動作します。
同じsrc IPから送信されるため、エミュレータトラフィックのみを除外する簡単な方法はないと思います。
おそらく最良の方法は、非常にむき出しのVMware環境をセットアップし、そこでのみエミュレーターを実行することです。少なくともそのような方法では、バックグラウンドトラフィックが多くなりすぎません。
Wiresharkを直接使用してAndroidエミュレータトラフィックをキャプチャすることが可能になりました。 extcapと呼ばれるプラグインandroiddumpがあります。エミュレータで実行されるシステムイメージでtcpdump
実行可能ファイル(ほとんどの現在のイメージにあり、API 24およびAPI 27イメージでテスト済み)およびadbd
ホストでrootとして実行する必要があります(実行するだけです) adb root
)。 Wiresharkで使用可能なインターフェースのリスト(Qtバージョンのみ、非推奨のGTK +にはありません)またはtshark -D
で表示されるリストには、BluetoothをスニッフィングできるいくつかのAndroidインターフェースが必要です。 Logcat、またはWifiトラフィック、例:
Android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86 emulator-5554)
http://docs.mitmproxy.org/en/stable/install.html を使用できます
セットアップが簡単で、追加の調整は必要ありません。
さまざまなツールを試してみましたが、本当に便利で簡単だとわかりました。
Android Studioからネットワークトラフィックを監視できます。 Android Monitorに移動し、[ネットワーク]タブを開きます。
http://developer.Android.com/tools/debugging/ddms.html
UPDATE:⚠️Android Device MonitorはAndroid Studio 3.1で廃止されました。詳細は https://developer.Android.com/studio/profile/monitor をご覧ください
-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
コマンドでエミュレーターを起動できます。 HTTPアナライザーを使用しましたが、他のすべてで機能するはずです。詳細はこちらをご覧ください: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html