Wie überwache ich den von meinem Android-Emulator gesendeten und empfangenen Netzwerkverkehr?
127
Es gibt zwei Möglichkeiten, den Netzwerkverkehr direkt von einem Android-Emulator zu erfassen :
Kopieren Sie eine ARM-kompatible tcpdump-Binärdatei und führen Sie sie auf dem Emulator aus, wobei Sie möglicherweise (z tcpdump -s0 -w /sdcard/emulator.cap
. B. ) die Ausgabe auf die SD-Karte schreiben .
Führen Sie emulator -tcpdump emulator.cap -avd my_avd
diese Option aus , um den gesamten Datenverkehr des Emulators in eine lokale Datei auf Ihrem PC zu schreiben
In beiden Fällen können Sie die pcap-Datei dann wie gewohnt mit tcpdump oder Wireshark analysieren.
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
Warnung erhalten, fügen Sie Ihrem Befehl -engine classic wie folgt hinzu :emulator -tcpdump emulator.cap -avd my_avd -engine classic
. Dies erzwingt eine veraltete Emulator-Engine, sollte jedoch funktionieren, bis das Problem behoben ist.avd
befindet sich das?Es ist auch möglich, den http-Proxy zu verwenden, um http-Anforderungen vom Emulator zu überwachen. Sie können das
-http-proxy
Flag übergeben, wenn Sie einen neuen Emulator starten, um einen Proxy (Beispiel- Rülpsen ) zur Überwachung des Android-Verkehrs festzulegen . Anwendungsbeispiel./emulator -http-proxy localhost:8080 -avd android2.2
. Beachten Sie, dass ich in meinem Beispiel Burp verwende und Port 8080 überwacht. Weitere Informationen finden Sie hier .quelle
Für OS X können Sie Charles verwenden , es ist einfach und leicht zu bedienen.
Weitere Informationen finden Sie im Blogbeitrag von Android Emulator und Charles Proxy .
quelle
Charles
vorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.In einer aktuellen Version von Android Studio wurde das
-tcpdump
Argument nicht korrekt angewendet . Ich konnte immer noch einen Speicherauszug erfassen, indem ich den zugehörigen Parameter wie folgt an qemu übergab:quelle
Ja, Wireshark wird funktionieren.
Ich glaube nicht, dass es eine einfache Möglichkeit gibt, nur den Emulatorverkehr herauszufiltern, da er von derselben src-IP stammt.
Vielleicht wäre der beste Weg, eine sehr nackte VMware-Umgebung einzurichten und nur den Emulator dort auszuführen, zumindest auf diese Weise würde es nicht zu viel Hintergrundverkehr geben.
quelle
Sie können Fiddler verwenden , um den http-Verkehr zu überwachen:
http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/
Sie können Fiddler2 auch verwenden hier .
quelle
10.0.2.2
die IP-Adresse des Host-Computers in Android-Emulatoren sein sollte, ohne dass Sie herausfinden müssen, um was es sich handelt.Es ist jetzt möglich, Wireshark direkt zu verwenden, um den Android-Emulator-Verkehr zu erfassen. Es gibt ein Extcap- Plugin namens androiddump , das dies ermöglicht. Sie müssen eine
tcpdump
ausführbare Datei im System-Image haben, die auf dem Emulator ausgeführt wird (die meisten aktuellen Images haben sie, getestet mit API 24- und API 27-Images) undadbd
als Root auf dem Host ausgeführt werden (einfach ausführenadb root
). In der Liste der verfügbaren Schnittstellen in Wireshark (nur Qt-Version, die veraltete GTK + hat sie nicht) oder in der Liste mittshark -D
mehreren Schnittstellen sollten mehrere Android-Schnittstellen vorhanden sein, mit denen Bluetooth-, Logcat- oder Wifi-Verkehr abgehört werden kann, z.android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 Emulator-5554)
quelle
Sie können den Emulator mit dem Befehl starten
-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
. Ich habe HTTP Analyzer verwendet, aber es sollte für alles andere funktionieren. Weitere Details finden Sie hier: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.htmlquelle
Sie können http://docs.mitmproxy.org/en/stable/install.html verwenden
Es ist einfach einzurichten und erfordert keine zusätzlichen Anpassungen.
Ich habe verschiedene Tools durchgearbeitet, fand es aber sehr gut und einfach.
quelle
mitmproxy
vorher nicht. Aber soweit ich sehen kann, ist es HTTP-spezifisch. Aber die Frage des OP ist nicht.Sie können den Netzwerkverkehr von Android Studio aus überwachen. Gehen Sie zu Android Monitor und öffnen Sie die Registerkarte Netzwerk.
http://developer.android.com/tools/debugging/ddms.html
UPDATE: ⚠️ Android Device Monitor war in Android Studio 3.1 veraltet. Weitere Informationen finden Sie unter https://developer.android.com/studio/profile/monitor
quelle
Ich würde vorschlagen, dass Sie Wireshark verwenden .
Sie können andere hier erwähnte Filtertechniken verwenden , um bestimmten Datenverkehr zu erhalten.
quelle