NetGuard 中文文档 下载 App

应用明明被禁止联网,为什么看起来还在联网

NetGuard 的拦截机制是绝对的

NetGuard 对被禁止的应用没有任何例外——所有出站流量都会被拦截。如果一个应用被你设置为禁止 Wi-Fi 和移动数据,它就真的完全无法通过网络通信。

"明明被禁止了还在联网"的感觉,几乎都是以下五种情况造成的假象。

假象一:看到的是本地缓存内容

很多应用会预先把图片、视频、文本内容缓存在本地。即使你禁止了它的联网请求,应用仍然可以显示之前缓存好的内容——看起来像是"还在联网",其实只是显示旧数据。

验证方法:

假象二:真正发起联网的是 Play Services,不是应用本身

这是最常见的原因。Android 上绝大多数第三方应用不自己处理推送、广告和后台同步——它们把这些请求委托给 Google Play Services(com.google.android.gms)。

所以场景是:

解决

如果想彻底不让应用收到推送,必须同时禁止 Play Services。但禁止 Play Services 会导致几乎所有应用的推送全部停摆——见 Play Services 相关页面。

假象三:DNS 流量始终允许

NetGuard 的设计决定了所有 DNS 查询都会被允许——即使域名在 Hosts 里被标记为拦截。原因是 NetGuard 需要先让 DNS 查询完成、拿到"域名 → IP"映射,才能在 IP 层做拦截。

这意味着:

DNS 本身不消耗太多流量,也不泄露太多信息(只有域名,没有内容),允许 DNS 查询是 NetGuard 工作机制的必需环节。

假象四:流量过滤模式的 DNS 泄漏(已修复)

在较新的 Android 版本上,不启用流量过滤时,被禁止应用的 DNS 查询会被正确拦截。但某些旧版 Android(6.0 以前)有 bug,不启用流量过滤时 DNS 查询会泄漏。

解决:

假象五:被禁止的应用发送的"空连接请求"

某些被禁止的应用会持续尝试访问网络——发送连接请求 SYN 包。这些请求会被 NetGuard 的 sinkhole 直接丢弃(被 Android 计入"出站流量"),所以你在:

这些不是应用"偷偷联网成功",而是它一直在失败地尝试,尝试的请求包被 NetGuard 丢弃了。

如何真正确认拦截生效

方法一:流量日志

Pro 版:主菜单 → 显示日志 → 搜索目标应用的图标。如果所有条目都是红色禁止,说明拦截生效。

免费版:在应用详情面板里看「访问日志」区域 → 有记录(说明之前联网过)但当前是否还能联网需要看刷新情况。

方法二:实时测试

  1. 禁止目标应用的 Wi-Fi 和移动数据
  2. 强制停止目标应用(设置 → 应用 → 强制停止)
  3. 重新打开目标应用
  4. 尝试触发联网(刷新页面、加载下一页等)
  5. 如果看到加载失败、无网络、或一直转圈 → 拦截生效 ✅

方法三:关闭 Wi-Fi 和移动数据

如果应用在关闭 Wi-Fi 和移动数据后仍然能显示新内容,那就是 NetGuard 没生效——或者你看到的是完全本地生成的内容(不需要联网的)。

被禁止的应用真的有绕过方式吗

理论上没有。NetGuard 是通过 Android VpnService 在 OS 层做拦截,比任何应用层的"绕过"都更底层。即使应用内有 VPN 客户端、代理服务器、Tor 客户端——它们的流量也会先经过 NetGuard 的规则引擎。

真正的"绕过"只在以下场景发生:

为什么 NetGuard 不拦截自己

NetGuard 自身的联网请求不在自己的规则引擎管理范围内。原因:

  1. 如果 NetGuard 能拦截自己,它就无法把其他应用的流量转发到互联网
  2. 某些老版本上实现过自拦截,但每个连接都要调用 VpnService.protect() 导致电池消耗翻倍和部分机型崩溃

所以不要在流量日志里惊讶 NetGuard 自己也有联网记录——那是正常的、必需的。