校园网和酒店 WiFi 等强制门户网络的处理
什么是强制门户网络
连 WiFi 后自动弹出一个登录页或验证页的网络:
- 校园网:输入学号密码认证
- 酒店 WiFi:填手机号 + 验证码
- 企业访客 WiFi:登记姓名 + 邮箱
- 公共 WiFi(商场/咖啡厅):同意使用条款
这类网络的技术实现是:HTTP 请求被劫持,返回 302 重定向到登录页。Captive Portal 检测机制就是为识别这种场景设计的。
CaptiveMgr 设置对强制门户的影响
保持检测开启 + 换国内服务器 → 正常
换国内服务器之后,探测请求能正常返回 204,系统判定「有网」。这没问题——因为强制门户网络会同时劫持所有 HTTP 请求,包括你设的国内服务器地址。这时候:
- 探测请求发到
connect.rom.miui.com/generate_204 - 校园网劫持了这个请求,返回 302 到登录页
- 系统收到 302(不是 204),判定「这是强制门户」
- 触发强制门户流程,弹登录页
所以保持检测开启、换服务器方案对强制门户网络是友好的——该弹的登录页照样弹。
关闭检测 → 手动触发
关掉检测之后,系统不再跑探测,自然也不会识别强制门户。连上校园网/酒店 WiFi 后:
- 图标干净(因为你关掉了检测)
- 但浏览器里所有 HTTP 请求都被劫持到登录页
- 你需要自己打开一个 HTTP 网站来触发登录页
推荐用这个 URL:http://connect.rom.miui.com/generate_204——它本来就是一个探测地址,强制门户网络会劫持它并返回登录页。
关闭检测用户的日常操作
每次连新的公共 WiFi,都要手动触发一次登录页。习惯了也不麻烦,但偶尔会忘——以为连上了就能上网,结果所有 HTTP 请求都被拦截,表现为「部分网站打不开」。
建议
- 经常出入公共网络 → 保持检测开启,换国内服务器
- 常年在固定网络(家里 + 公司,都不是强制门户)→ 关检测省事
特殊情况:强制门户网络不让用探测域名
极个别强制门户网络做了域名白名单,只有他们允许的 HTTP 请求能通。这种场景下连国内服务器 URL 也会被劫持——但这不影响 CaptiveMgr 的行为,因为系统仍然能收到非 204 的响应并触发登录页。真正的问题是登录完成后能不能让探测请求正确返回 204——取决于强制门户的认证逻辑,不是 CaptiveMgr 能解决的。