开了 AdAway 广告还在 —— 按顺序排查这 5 个环节
症状
AdAway 主界面显示"已启用"、hosts 文件里几万条规则正常,但广告照样加载。
排查顺序(按概率从高到低)
环节 1:Private DNS 还开着(Android 9+)
这是概率最高的原因。
检查:设置 → 网络与互联网 → 高级 → 私人 DNS。如果显示"自动"或主机名,关掉。
详见 Private DNS 冲突。
环节 2:Chrome 的数据节省 / 代理
Chrome 有个"减少数据使用量"(Data Saver)功能,会把所有 HTTP 请求先发到 Google 的代理服务器,绕过了系统 hosts 文件。
检查:Chrome 菜单 → 设置 → 连接 → 节省流量(Data Saver)。确保开关关掉。
不只是 Chrome——任何带代理功能的浏览器(比如某些 UC、QQ 浏览器、Opera Mini 的 Turbo 模式)都要关掉内置代理。
环节 3:移动网络 APN 设置里有代理
某些运营商或厂商会在移动网络的 APN 设置里植入 HTTP 代理。代理服务器会"看不到"客户端请求的 hosts 结果——它自己去访问目标域名,然后把结果返回给手机。
检查:
- 设置 → 网络和互联网 → 移动网络 → 接入点名称(APN)
- 点当前使用的 APN
- 找 "代理(Proxy)" 和 "端口(Port)" 字段
- 如果这两个字段有值,清空它们(留空)
- 保存
移动网络里有代理时 AdAway 拦不住。这是 FAQ 里明确提到的一个问题。
环节 4:自定义 ROM 内置了 AdBlock
某些定制 ROM(LineageOS、部分 MIUI 版本、One UI 某些版本)内置了广告拦截功能。这些内置拦截和 AdAway 的 hosts 拦截可能冲突,或者内置拦截失效后会恢复广告。
检查:
- ROM 设置里搜 "广告拦截"、"隐私保护"、"Privacy Guard" 等关键词
- 如果有内置拦截且启用了,关掉它——让 AdAway 自己来
- 检查
/system/etc/下有没有多个 hosts 文件(某些 ROM 有自己的 hosts 管理)
环节 5:VPN 模式被其他 APP 抢占
Android 只允许一个活跃 VPN。如果你同时开了 AdAway VPN、AdGuard、其他 VPN APP、甚至某些银行 APP 的安全 VPN,AdAway 的 VPN 会被挤掉。
检查:设置 → 网络和互联网 → VPN。当前激活的 VPN 应该只有 AdAway。
一个不漏的完整检查清单
| # | 检查项 | 怎么查 | 预期结果 |
|---|---|---|---|
| 1 | Private DNS | 设置 → 私人 DNS | 关 |
| 2 | Chrome Data Saver | Chrome → 设置 → 节省流量 | 关 |
| 3 | APN 代理 | 设置 → 移动网络 → APN → Proxy/Port | 留空 |
| 4 | ROM 内置拦截 | ROM 设置搜"广告拦截" | 关 |
| 5 | 其他 VPN | 设置 → VPN | 只有 AdAway 激活 |
| 6 | AdAway 是否真正启用 | 主界面大按钮 | 绿色 / 已启用 |
| 7 | hosts 源是否已下载 | Hosts Sources | 至少一个源 Downloaded |
| 8 | 是否需要重启 | 应用 hosts 后 | 重启设备(root 模式) |
一个不常见但能绕过 hosts 的技术:IP 直连
某些 APP 直接用 IP 地址而不是域名。比如游戏的广告服务器硬编码 1.2.3.4 这个 IP,不走 DNS。hosts 文件对这种情况无能为力——hosts 管的是"域名 → IP"的映射,对方根本没用域名。
这种情况 AdAway 拦不住(谁都拦不住纯 IP)。换 AdGuard 的 HTTPS 拦截可能帮上忙。
怎么快速定位
用 DNS 日志:
- 关掉 AdAway → 开 DNS 日志 → 打开有广告的 APP → 看它请求了什么域名
- 如果请求的域名 hosts 源都没覆盖 → 加进 Blocklist
- 如果 DNS 日志里什么都没有 → 域名被 Private DNS 加密了 / APP 用了 IP 直连 / VPN 模式被挤了
