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

mli*_*oom 118 networking android traffic emulation sniffer

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

Chr*_*Orr 96

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

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

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

在这两种情况下,您都可以正常使用tcpdump或Wireshark分析pcap文件.

  • 如果你正在使用第二个解决方案并且你得到了`QEMU2中不支持-tcpdump标志并且将被忽略.警告,请将** - engine classic**添加到你的命令中:`emulator -tcpdump emulator .cap -avd my_avd -engine classic`.这将强制使用已弃用的模拟器引擎,但应该可以解决问题. (2认同)

Wal*_*tsu 20

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

  • https 流量怎么样 (3认同)

Tom*_*sel 10

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

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


Tad*_*Tad 6

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

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
Run Code Online (Sandbox Code Playgroud)


Rit*_*eak 6

我建议你使用Wireshark

脚步:

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

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


小智 5

是的,wireshark会工作.

我认为没有任何简单的方法来过滤掉模拟器流量,因为它来自相同的src IP.

也许最好的方法是建立一个非常简单的VMware环境并且只在那里运行模拟器,至少那样不会有太多的后台流量.


Pro*_*rty 5

现在可以直接使用 Wireshark 来捕获 Android 模拟器流量。有一个名为androiddumpextcap插件使它成为可能。您需要在模拟器上运行的系统映像中有一个可执行文件(大多数当前映像都有它,使用 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)


小智 5

虽然 Android Studio 的 App Inspection 的网络检查器菜单有助于跟踪网络请求,但我注意到它并不能跟踪所有请求。这是文档

据我所知,跟踪 Android 模拟器网络请求的最简单方法是HTTP Toolkit。它的设置速度非常快,并且有一个漂亮的 UI(类似于 Chrome 开发工具的“网络”选项卡)来跟踪请求。

只需安装它,单击“通过 ADB 的 Android 设备”选项,并接受模拟器中显示的提示(文档)。

HTTP 工具包用户界面