配置强制门户行为
captive_portal_detection_enabled
(<= Android 7.1.1)
captive_portal_mode
(> = Android 7.1.2)
设置强制门户URL
captive_portal_server
(<= Android 6.0.1)
- 拥有
generate_204
页面的服务器,用于内部制作用于强制门户检测的URL(new URL("http", mServer, "/generate_204");
–在Android 7.0中已作废,请参见下文)
captive_portal_use_https
(> = Android 7.0)
0
:请勿使用HTTPS进行网络验证
1
:使用HTTPS(默认)
captive_portal_http_url
(> = Android 7.0)
- 用于HTTP强制门户检测的URL-与
captive_portal_use_https
(设置为0
)配对使用
- > = Android 7.1.1:操作系统不再
generate_204
自动附加到URL,为输入URL提供了一定的灵活性
captive_portal_https_url
(> = Android 7.0)
- 用于HTTPS强制门户检测的URL-与
captive_portal_use_https
(设置为1
)配对使用
- > = Android 7.1.1:操作系统不再
generate_204
自动附加到URL
使用URL的要求
来自服务器的HTTP 204响应代码(“无内容”)用于验证,不需要额外的内容:以默认检测URL为例,curl clients3.google.com/generate_204
返回为空,并通过添加--write-out %{http_code}
return 检查HTTP响应204
。
中国大陆可用的强制门户网站服务器URL的一小部分(亲自测试)
https://captive.v2ex.co/generate_204(由v2ex.com托管)
https://connect.rom.miui.com/generate_204(由小米托管,默认情况下在MIUI上使用)
https://noisyfox.cn/generate_204(由noisyfox.cn托管)
https://www.google.cn/generate_204和https://developers.google.cn/generate_204(由Google托管)
https://www.qualcomm.cn/generate_204(由高通公司托管)
进一步说明
源还提到参数captive_portal_user_agent
,captive_portal_fallback_url
和captive_portal_other_fallback_urls
:
captive_portal_fallback_url
(> = Android 7.1.1)显然应该包含一个URL,而
captive_portal_other_fallback_urls
包含多个其他URL(用逗号分隔的列表,因此URL可能不包含任何逗号)。
但是我亲自在Android 8.0.0上进行了测试,两个后备参数都不起作用。假设它们是没有实现的声明。
中国Android的强制门户设置的一些示例显示了上述设置的使用:
亚行外壳设置将全局captive_portal_http_url http://www.google.cn/generate_204
亚行外壳设置将全局captive_portal_https_url https://www.google.cn/generate_204
亚行外壳设置将全局captive_portal_fallback_url http://www.google.cn/generate_204
亚行外壳设置将全局captive_portal_other_fallback_urls http://www.qualcomm.cn/generate_204
知道了,“锡纸”甚至可以设置自己的验证服务。使用Apache:
RewriteEngine开
RewriteCond%{REQUEST_URI} / generate_204 $
RewriteRule $ / [R = 204,L]
或使用Nginx:
位置/ generate_204 {返回204; }
参考文献
1,2(中国),3(中国)
new URL("http", mServer, "/generate_204");
(与mServer
通过初始化captive_portal_server
如果设置) -所以这应该只是在那里(这是最有可能的失败对我的原因之一服务器名称(或IP)在MM设备上)。不知道它什么时候改变了-但是可能是您用N写的。对于204,我已经发现了这一点 -看来我正确地假设:只是204代码,没有内容。