挂着代理时图标可能依旧挂感叹号的原因
现象描述
很多用户遇到过这种情况:代理挂着、YouTube 能看、浏览器刷视频也正常,但信号图标下方依然挂着感叹号或叉——CaptiveMgr 也治不好。
根本原因:探测请求不经过代理
Android 的 Captive Portal 检测发生在系统网络栈层面,它使用的是系统默认的路由,不走应用代理(HTTP 代理也不走),也不走 VPN 接口(含大多数 VPN 类代理)。
原因是设计上的:
- 如果探测走 VPN,VPN 本身断了怎么办?系统就完全不知道网络状态了
- Captive Portal 检测的目标是判断「这个 WiFi 本身能不能正常出网」,而不是判断「走某个通道能不能上网」
所以系统硬编码了探测请求必须经过原始路由,绕过所有应用层代理和 VPN。
这不是 bug
这是 Android 的设计决策。原生系统一直这样,类原生 ROM(LineageOS、Pixel Experience 等)也没改这个行为。它确保了探测结果反映的是真实的物理网络状态。
怎么解决
三种思路:
思路一:换一个大陆可达的服务器(推荐)
就算探测不走代理,它直接发往国内服务器,在大陆物理网络里本来就能通。这就是 CaptiveMgr 推荐小米、华为等国内服务器的根本原因——不依赖代理也能通。
思路二:代理工具开 NAT 模式
少数代理工具(如部分 SSR 客户端)支持 NAT 模式——它利用 iptables 把所有流量(包括系统探测)都劫持到代理。这样探测请求也会走代理通道。
但注意:
- NAT 模式需要 root 权限(因为改 iptables)
- 不是所有代理工具都支持
- 开启后真正断网时图标也不会挂了(因为所有流量都劫持到代理,代理还活着图标就干净)——你反而可能不知道真的断网了
思路三:接受这个现象
如果你常年挂着代理、代理本身也稳定,那图标挂不挂感叹号其实不影响你用网。只是强迫症看着不舒服。
CaptiveMgr 能帮上什么
CaptiveMgr 的测速工具也不走代理(跟系统探测一样)。所以用测速工具测出来的结果反映的是:不挂代理时这条服务器能不能从你手机直连。如果测速显示「小米服务器返回 204」,那应用之后系统探测也应该能通——这时候图标就干净了。