150

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

4

11 回答 11

114

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

  1. 在模拟器上复制并运行与ARM 兼容的 tcpdump 二进制文件,可能会将输出写入 SD 卡(例如tcpdump -s0 -w /sdcard/emulator.cap)。

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

在这两种情况下,您都可以像往常一样使用 tcpdump 或 Wireshark 分析 pcap 文件。

于 2010-04-04T13:21:35.760 回答
22

也可以使用 http 代理来监控来自模拟器的 http 请求。-http-proxy您可以在启动新模拟器时传递标志来设置代理(例如burp)来监控 Android 流量。示例用法./emulator -http-proxy localhost:8080 -avd android2.2。请注意,在我的示例中,我使用的是 Burp,它正在侦听端口 8080。可以在此处找到更多信息。

于 2012-04-12T07:50:57.140 回答
12

对于 OS X,您可以使用Charles,它简单易用。

有关更多信息,请查看Android Emulator 和 Charles Proxy博客文章。

于 2013-06-26T05:36:35.297 回答
8

是的,wireshark 会工作。

我认为没有任何简单的方法可以单独过滤掉模拟器流量,因为它来自同一个 src IP。

也许最好的方法是建立一个非常裸露的 VMware 环境,只在其中运行模拟器,至少这样不会有太多的后台流量。

于 2010-04-04T13:17:10.520 回答
6

当前版本的 Android Studio 未正确应用该-tcpdump参数。我仍然能够通过将相关参数传递给 qemu 来捕获转储,如下所示:

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
于 2016-06-29T12:31:57.810 回答
5

现在可以直接使用 Wireshark 来捕获 Android 模拟器流量。有一个名为androiddump的extcap插件使它成为可能。您需要在模拟器上运行系统映像中的可执行文件(大多数当前映像都有它,使用 API 24 和 API 27 映像进行测试)并在主机上以 root 身份运行(只需运行)。在 Wireshark 中的可用接口列表(仅限 Qt 版本,已弃用的 GTK+ 没有)或显示的列表中应该有几个 Android 接口允许嗅探蓝牙、Logcat 或 Wifi 流量,例如:tcpdumpadbdadb roottshark -D

android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86 emulator-5554)

于 2018-02-13T15:17:24.483 回答
4

您可以使用Fiddler来监控 http 流量:

http://auir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/

您也可以在此处使用 Fiddler2 。

于 2011-10-20T01:54:47.493 回答
4

我建议你使用Wireshark

脚步:

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

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

于 2020-01-30T13:16:57.320 回答
4

您可以从 Android Studio 监控网络流量。转到 Android 监视器并打开网络选项卡。

http://developer.android.com/tools/debugging/ddms.html

更新: ⚠️ Android 设备监视器在 Android Studio 3.1 中已弃用。在https://developer.android.com/studio/profile/monitor中查看更多信息

于 2015-11-19T10:32:13.300 回答
2

您可以使用命令启动模拟器-avd Adfmf -http-proxy http://SYSTEM_IP:PORT。我使用了 HTTP Analyzer,但它应该适用于其他任何东西。更多细节可以在这里找到: http ://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html

于 2014-04-03T14:27:06.843 回答
2

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

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

我使用了各种工具,但发现它非常好用且简单。

于 2017-01-13T03:59:14.570 回答