如何监控从我的 android 模拟器发送和接收的网络流量?
11 回答
有两种方法可以直接从 Android 模拟器捕获网络流量:
在模拟器上复制并运行与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 和 Charles Proxy博客文章。
是的,wireshark 会工作。
我认为没有任何简单的方法可以单独过滤掉模拟器流量,因为它来自同一个 src IP。
也许最好的方法是建立一个非常裸露的 VMware 环境,只在其中运行模拟器,至少这样不会有太多的后台流量。
当前版本的 Android Studio 未正确应用该-tcpdump
参数。我仍然能够通过将相关参数传递给 qemu 来捕获转储,如下所示:
tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
现在可以直接使用 Wireshark 来捕获 Android 模拟器流量。有一个名为androiddump的extcap插件使它成为可能。您需要在模拟器上运行系统映像中的可执行文件(大多数当前映像都有它,使用 API 24 和 API 27 映像进行测试)并在主机上以 root 身份运行(只需运行)。在 Wireshark 中的可用接口列表(仅限 Qt 版本,已弃用的 GTK+ 没有)或显示的列表中应该有几个 Android 接口允许嗅探蓝牙、Logcat 或 Wifi 流量,例如:tcpdump
adbd
adb root
tshark -D
android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86 emulator-5554)
您可以从 Android Studio 监控网络流量。转到 Android 监视器并打开网络选项卡。
http://developer.android.com/tools/debugging/ddms.html
更新: ⚠️ Android 设备监视器在 Android Studio 3.1 中已弃用。在https://developer.android.com/studio/profile/monitor中查看更多信息
您可以使用命令启动模拟器-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
。我使用了 HTTP Analyzer,但它应该适用于其他任何东西。更多细节可以在这里找到:
http ://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html