为什么不推荐用修改 hosts 的方式清除感叹号
hosts 方案是什么
有人会在 /system/etc/hosts 文件里加一行,把 Google 默认探测服务器的域名硬写到一个国内可达 IP:
180.101.50.181 connectivitycheck.gstatic.com
这样系统探测请求虽然还在发往 Google 域名,但 DNS 被劫持到国内服务器上了。
为什么 CaptiveMgr 不选这条路
IP 经常变、维护成本高
DNS 服务器的 IP 地址不是固定的。今天设的 IP 可能下个月就失效了,又得重新找、重新改。而用 settings global 写 URL 的方式,只要服务器 URL 没变(厂商一般不会随便改自家验证地址),就一直生效。
干扰谷歌服务 DNS 智能解析
Google 的服务依赖 DNS 智能解析——同一个域名,从不同地区访问会解析到最近的服务器。你硬写一个 IP,等于把 Google 的所有服务(Play 商店、Gmail、地图等)都强制路由到那一台固定 IP。轻则速度变慢,重则直接连不上。
代理环境下更糟糕
用了代理之后,你的代理工具(VPN / 代理 / 加速器)会接管 DNS 解析。hosts 硬写的 IP 优先级更高,会绕过代理的 DNS 路由。结果就是:本该走代理的请求也被硬塞到那个固定 IP,代理等于白开。
需要 root(还得改 /system)
改 hosts 不仅要 root,还得把 /system 分区挂成可读写——比 CaptiveMgr root 授权一步到位要重得多。
正确的姿势对比
| hosts 方案 | CaptiveMgr 方案 | |
|---|---|---|
| 维护成本 | IP 变了要重改 | URL 稳定,一次设置长期用 |
| 影响范围 | 劫持域名 → 所有走这个域名的请求都被强制路由 | 只改 Captive Portal 参数 → 影响范围限定 |
| 代理兼容 | 干扰代理 DNS 路由 | 完全不涉及 DNS 层 |
| 需要 root | 是,还要改 /system | root 或 Shizuku 二选一 |
结论
改 settings global(也就是 CaptiveMgr 做的事)是目前最干净的方案。它不动 DNS 层、不碰 hosts 文件、干扰范围最小、恢复也最简单(地址栏留空即可)。