Android模拟器:如何监控网络流量?

时间:2010-03-16 11:40:04

标签: android networking emulation traffic sniffer

如何监控从我的Android模拟器发送和接收的网络流量?

11 个答案:

答案 0 :(得分:96)

有两种方法可以从Android模拟器中直接直接捕获网络流量:

  1. 复制并在模拟器上运行ARM-compatible tcpdump binary,然后将输出写入SD卡(例如tcpdump -s0 -w /sdcard/emulator.cap)。

  2. 运行emulator -tcpdump emulator.cap -avd my_avd将所有模拟器的流量写入PC上的本地文件

  3. 在这两种情况下,您都可以正常使用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)

你可以使用 http://docs.mitmproxy.org/en/stable/install.html

易于设置,不需要任何额外的调整。

我经历了各种工具,但发现它非常好而且容易。

答案 10 :(得分:2)

我建议您使用Wireshark

步骤:

  1. 安装Wireshark。
  2. 选择用于呼叫的网络连接(例如,如果使用的话,请选择Wifi)
  3. 会有很多请求和响应,请关闭额外的应用程序。
  4. 通常情况下,请求是绿色的,一旦发现请求,请复制目标地址并在顶部使用过滤器, 通过输入目标地址来键入ip.dst==52.187.182.185

您可以利用here中提到的其他过滤技术来获取特定流量。