如何监控从我的Android模拟器发送和接收的网络流量?
如何监控从我的Android模拟器发送和接收的网络流量?
Answers:
有两种方法可以直接从Android模拟器捕获网络流量:
复制并在仿真器上运行ARM兼容的tcpdump二进制文件,也许将输出写入SD卡(例如tcpdump -s0 -w /sdcard/emulator.cap
)。
运行emulator -tcpdump emulator.cap -avd my_avd
以将所有仿真器的流量写入PC上的本地文件
在这两种情况下,您都可以正常使用tcpdump或Wireshark分析pcap文件。
The -tcpdump flag is not supported in QEMU2 yet and will be ignored.
警告,请在命令中添加-engine classic,如下所示:emulator -tcpdump emulator.cap -avd my_avd -engine classic
。这将强制使用不建议使用的仿真器引擎,但应在解决问题之前起作用。
avd
?
是的,wireshark可以工作。
我认为没有任何简单的方法可以只过滤仿真器流量,因为它来自相同的src IP。
也许最好的方法是设置一个非常裸露的VMware环境,并仅在其中运行仿真器,至少这样,不会有太多的后台流量。
10.0.2.2
Android仿真器中主机的IP地址,而无需找出它是什么。
现在可以直接使用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)
您可以使用命令启动仿真器-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
。我使用了HTTP分析器,但它还可以用于其他任何方面。可以在此处找到更多详细信息:http :
//stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
mitmproxy
以前不知道 但据我所知,它是特定于HTTP的。但是,OP的问题不是。
您可以从Android Studio监控网络流量。转到Android监视器,然后打开“网络”标签。
http://developer.android.com/tools/debugging/ddms.html
更新: ⚠️Android设备监视器已在Android Studio 3.1中弃用。在https://developer.android.com/studio/profile/monitor中查看更多