Androidエミュレーター:ネットワークトラフィックを監視する方法


回答:


104

Androidエミュレータからネットワークトラフィックを直接キャプチャするには、2つの方法があります。

  1. エミュレータでARM互換のtcpdumpバイナリをコピーして実行し、出力をSDカードに書き込みます(例:)tcpdump -s0 -w /sdcard/emulator.cap

  2. 実行emulator -tcpdump emulator.cap -avd my_avdして、エミュレータのすべてのトラフィックをPCのローカルファイルに書き込みます

どちらの場合も、通常どおりtcpdumpまたはWiresharkを使用してpcapファイルを分析できます。


リアルタイム/オンラインではないのですか?つまり、パケットは最後にしか分析できないのですか?
fikr4n 2016

最初のケースでは、ファイルに書き込むのではなく、デバイスのstdoutを介して分析できます。2番目のケースでは、書き込まれたファイルをストリーミングまたはテールできる場合があります。または、エミュレータではなくホストマシンでネットワークトラフィックをキャプチャすることもできます。
Christopher Orr 2016

私が使用しているエミュレータにはすでにtcpdumpがインストールされており、コマンド#1はインストールしなくても機能します。「adb -e shell tcpdump -s0 -w /sdcard/emulator.cap」を使用して実行することもできます。
Les

2
2番目のソリューションを使用していてThe -tcpdump flag is not supported in QEMU2 yet and will be ignored.警告が表示される場合は、コマンドに-engine classicを次のように追加しますemulator -tcpdump emulator.cap -avd my_avd -engine classic。これにより、非推奨のエミュレータエンジンが強制的に使用されますが、問題が修正されるまで機能します。
lagoman 2017年

どこにavdありますか?
user3806649

20

また、httpプロキシを使用して、エミュレータからのhttp要求を監視することもできます。-http-proxy新しいエミュレータを開始するときにフラグを渡して、Androidトラフィックを監視するプロキシ(例:burp)を設定できます。使用例./emulator -http-proxy localhost:8080 -avd android2.2。私の例ではBurpを使用しており、ポート8080をリッスンしていることに注意してください。詳細については、こちらをご覧ください


2
httpsトラフィックはどうですか
pee2pee 2016

10

OS XではCharlesを使用できます。シンプルで使いやすいです。

詳細については、Android EmulatorとCharles Proxyのブログ投稿をご覧ください。


1
Charles以前は知りません。しかし、私が見る限り、これはHTTP固有のものです。しかし、OPの問題はそうではありません。
Siu Ching Pong -Asuka Kenji- 2017年

チャールズはまた、Linuxのために存在し、私はそれが私のUbuntu 18.04にインストールされている
Marecky

6

Android Studioの現在のリリースでは、-tcpdump引数が正しく適用されませんでした。次のように関連パラメーターをqemuに渡すことで、ダンプをキャプチャすることができました。

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd

5

はい、wiresharkは機能します。

同じsrc IPから送信されているため、エミュレータートラフィックのみをフィルターで除外する簡単な方法はないと思います。

おそらく、最善の方法は、非常にむき出しのVMware環境をセットアップし、そこでのみエミュレータを実行することです。少なくとも、そうすれば、バックグラウンドトラフィックが多すぎないようになります。


良い提案ですが、エミュレータをVM上で実行するのは難しいです。これを機能させましたか?
MikeSchem 2016

どのような問題に遭遇しましたか?自分でやったことはありませんが、何か問題があるとは思えません。
Bitdivision

私の場合、送信されたリクエストは緑色で、他のブラウザをシャットダウンするだけで、甘い緑色の行を見つけることができました。リクエストを見つけたら、宛先アドレスをコピーします。uは、ip.dst == "uがコピーしたIPアドレス"を入力して、関連するリクエストのみを表示することにより、フィルターでそれを使用できます。
Ritveak

4

Fiddlerを使用して、httpトラフィックを監視できます。

http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/

ここで Fiddler2を使用することもできます


2
別のリンクはこちら。プロキシサーバーは10.0.2.2、AndroidエミュレーターのホストマシンのIPアドレスである必要があります。それが何であるかを知る必要はありません。
Mendhak 2014年

4

Wiresharkを直接使用してAndroidエミュレータートラフィックをキャプチャできるようになりました。extcapがありますそれを可能にするandroiddumpと呼ばれるプラグインます。あなたは持っている必要がありtcpdump、システムイメージエミュレータ上で実行されている(最新の画像がそれを持って、API 24およびAPI 27枚の画像でテスト済み)とで実行可能ファイルをadbdホスト(単に実行にrootとして実行されていますadb root)。Wiresharkで使用可能なインターフェースのリスト(Qtバージョンのみ、非推奨のGTK +にはありません)または次のように表示されるリストtshark -D Bluetooth、Logcat、またはWifiトラフィックを傍受できるAndroidインターフェースがいくつかあるはずです。

android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86 emulator-5554)



2

http://docs.mitmproxy.org/en/stable/install.htmlを使用できます

セットアップが簡単で、追加の微調整は必要ありません。

私はさまざまなツールを試してみましたが、それは本当によくて簡単であることがわかりました。


mitmproxy以前は知りません。しかし、私が見る限り、これはHTTP固有のものです。しかし、OPの問題はそうではありません。
Siu Ching Pong -Asuka Kenji- 2017年

1
新しいAndroid Studio 3.0はプロファイラーを提供し、それを使用できます。mitmの場合は、http、httpsなど、あらゆる種類のプロトコルを提供します。プロキシを正しく設定するだけで済みます。
Dhiraj Himani 2017

私が開発していないアプリからパケットをキャプチャすることはできますか?そして、Nox App Playerなどのサードパーティのエミュレータでは?ありがとう!
Siu Ching Pong -Asuka Kenji- 2017年

1
はい。mitm自体によって提供されるエミュレータ/デバイスにmitm証明書がインストールされている必要があります。これを使用して、進行中の要求と対応する応答を監視できます。
Dhiraj Himani 2017

2

Android Studioからネットワークトラフィックを監視できます。Androidモニターに移動し、[ネットワーク]タブを開きます。

http://developer.android.com/tools/debugging/ddms.html

更新: ⚠️AndroidデバイスモニターはAndroid Studio 3.1で廃止されました。詳しくはhttps://developer.android.com/studio/profile/monitorをご覧ください


5
リンクの画像に示すように、Android Studio 1.5(Windows)の詳細なネットワーク使用状況タブをどこから開くかを教えてもらえますか?グラフは表示されますが詳細は表示されません。
Shreyans jain 2016

このオプションは洞察が限られていることに注意してください。Androidがこのリクエストについて何も教えてくれなかったため、リクエストが拒否された理由を知りたいという問題を解決できませんでした。ここではフィドラーがより適しています。
Highriser 2018

2

Wiresharkを使用することをお勧めします。

手順:

  1. Wiresharkをインストールします。
  2. 通話に使用しているネットワーク接続を選択します(たとえば、使用している場合はWifiを選択します)
  3. 多くの要求と応答があり、余分なアプリケーションを閉じます。
  4. 通常、リクエストは緑色で表示されます。リクエストを見つけたら、宛先アドレスをコピーし、宛先アドレスを入力ip.dst==52.187.182.185して入力することにより、上部のフィルターを使用します。

ここで説明した他のフィルタリング手法を利用して、特定のトラフィックを取得できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.