移动网络下广告不拦 —— APN 代理、Google Data Saver、运营商绕过 DNS
症状
Wi-Fi 下一切正常,切到 4G/5G 移动数据后广告突然全冒出来。回 Wi-Fi 又正常。
核心原因
移动网络有两套 DNS 通道:运营商 APN(主) 和 系统 DNS。hosts 文件只拦系统 DNS 的请求——如果流量走的是运营商 APN 的代理通道,AdAway 拦不住。
排查顺序
环节 1:APN 代理字段被填了
最高概率。 很多运营商或 ROM 厂商会在移动网络 APN 设置里植入 HTTP 代理:
- 设置 → 网络和互联网 → 移动网络
- 点当前使用的 SIM 卡 → 接入点名称(APN)
- 点那个蓝色小圆点标记的"当前使用"APN
- 找到 代理(Proxy) 和 端口(Port) 两个字段
- 如果这两个字段有任何值,清空它们(留空)
- 保存
代理服务器会"绕过"客户端的 hosts 文件检查——它自己直接请求目标域名,然后把结果返回给你的手机。hosts 拦不住。
环节 2:Chrome 数据节省(移动数据自动开)
Chrome 的"节省流量"功能在移动数据下默认开启:
- 设置 → 连接 → 节省流量(Data Saver)→ 关掉
- 某些中文浏览器也有类似代理功能(比如 QQ 浏览器的"极速模式"、UC 的"云加速"),全部关掉
关掉后 Chrome 直接请求,hosts 拦截才生效。
环节 3:运营商 HTTP 代理
某些运营商(比如部分韩国运营商、东南亚运营商)会强制所有 HTTP 流量经过代理。你在 APN 设置里已经看到代理字段了——清空它(上面环节 1 已覆盖)。
环节 4:VPN 模式在移动网络切换时状态丢失
如果你用的是 VPN 模式(非 root):
- Android 在从 Wi-Fi 切移动数据时可能暂时断开 VPN 重连
- AdAway v6 改进了 VPN 模式的网络变化处理,但老版本可能有 bug
验证:在移动数据下打开设置 → 网络和互联网 → VPN,确认 AdAway VPN 还处于连接状态。
一个简单的验证方法
- Wi-Fi 下测:AdAway 启用 → 开浏览器 → 访问被拦域名
doubleclick.net→ 应该连不上 - 切移动数据(AdAway 保持启用)
- 同样开浏览器访问
doubleclick.net→ 如果这时能访问 → 确认移动网络下 DNS 解析被绕过了 - 去 APN 设置清空代理字段 → 再试 → 应该恢复拦截
为什么 Wi-Fi 下没事而移动网络有事
- Wi-Fi 通常直接走路由器 DNS,hosts 文件能正确拦截
- 移动网络的 APN 设置可能被运营商/厂商植入代理,或者有其他 DNS 绕过机制
- 某些 5G 网络的 IP 地址分配变化更快,可能影响 VPN 模式稳定性
修复后
- 清空 APN 代理字段后记得保存(某些 ROM 需要点右上角菜单才能保存)
- 如果清空后系统又自动填上了 → 去 ROM 的移动网络设置里看有没有"启用代理"开关,关掉它
- 某些运营商可能要求代理才能正常上网(极少数),这种情况下需要咨询运营商
小结
Wi-Fi 正常 + 移动数据不正常 = APN 设置里有代理字段被运营商或厂商填了。
清掉代理和端口,保存,重开移动数据。广告应该回来的同时被 AdAway 拦住。