以编程方式捕获网络流量(无根)

Capture network traffic programmatically (no root)

我正在尝试查找可以让我以编程方式捕获来自 wifi 或移动网络的设备的所有网络数据包流量的资源或库。我相信没有必要成为 root 才能处于这种混杂模式,因为 play 商店中的 shark for root would request because there is this app 可以捕获所有网络流量(甚至使用 MITM 解密 SSL)而无需成为 root。我根本不知道该怎么做。

我的问题是:这个应用程序是如何实现这种捕获的?他们使用了什么API?

感谢您的帮助。

在没有 root 的 Android 中嗅探数据包的实际方法是环回 VPNService。创建一个 VPNService 应用程序并激活它,将强制设备中的所有流量通过您新创建的虚拟接口,该接口由用户空间应用程序管理,您将通过从虚拟接口读取来接收 IP 数据包。

您可以从 Google here

查看一个简单的代码示例

您可以查看完整的工作示例项目here