如何监控从我的Android模拟器发送和接收的网络流量?
答案 0 :(得分:96)
有两种方法可以从Android模拟器中直接直接捕获网络流量:
复制并在模拟器上运行ARM-compatible tcpdump binary,然后将输出写入SD卡(例如tcpdump -s0 -w /sdcard/emulator.cap
)。
运行emulator -tcpdump emulator.cap -avd my_avd
将所有模拟器的流量写入PC上的本地文件
在这两种情况下,您都可以正常使用tcpdump或Wireshark分析pcap文件。
答案 1 :(得分:20)
也可以使用http代理来监控来自模拟器的http请求。您可以在启动新模拟器时传递-http-proxy
标志以设置代理(示例burp)以监控Android流量。用法示例./emulator -http-proxy localhost:8080 -avd android2.2
。请注意,在我的示例中,我使用的是Burp,它是侦听端口8080.可以找到更多信息here。
答案 2 :(得分:9)
对于OS X,您可以使用Charles,它简单易用。
有关详细信息,请查看Android Emulator and Charles Proxy博文。
答案 3 :(得分:6)
Android Studio的当前版本未正确应用-tcpdump
参数。我仍然能够通过将相关参数传递给qemu来捕获转储,如下所示:
tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
答案 4 :(得分:5)
是的,wireshark会起作用。
我认为没有任何简单的方法来过滤掉模拟器流量,因为它来自相同的src IP。
也许最好的方法是建立一个非常裸的VMware环境并且只在那里运行模拟器,至少那样不会有太多的后台流量。
答案 5 :(得分:4)
答案 6 :(得分:3)
现在可以直接使用Wireshark来捕获Android模拟器流量。有一个名为 extcap 的 androiddump 插件可以实现。您需要在模拟器上运行的系统映像中具有tcpdump
可执行文件(大多数当前映像具有它,使用API 24和API 27映像进行测试)并且adbd
在主机上以root身份运行(只需运行adb root
)。在Wireshark的可用接口列表中(仅限Qt版本,不推荐使用的GTK +没有它)或带有tshark -D
的列表应该有几个Android界面允许嗅探蓝牙,Logcat或Wifi交通,例如:
android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86模拟器-5554)
答案 7 :(得分:2)
您可以使用命令-avd Adfmf -http-proxy http://SYSTEM_IP:PORT
启动模拟器。
我使用HTTP Analyzer,但它应该适用于其他任何事情。更多详情可在这找到:
http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html
答案 8 :(得分:2)
您可以监控来自Android Studio的网络流量。 转到Android监视器并打开“网络”选项卡。
http://developer.android.com/tools/debugging/ddms.html
更新:⚠️AndroidDevice Monitor在Android Studio 3.1中已被弃用。请参阅https://developer.android.com/studio/profile/monitor
中的详情答案 9 :(得分:2)
答案 10 :(得分:2)