Configuración del comportamiento del portal cautivo
captive_portal_detection_enabled
(<= Android 7.1.1)
- funciona como se describe en el cuerpo de la pregunta
captive_portal_mode
(>= Android 7.1.2)
- funciona como se describe en el cuerpo de la pregunta
Configuración de la(s) URL(s) del portal cautivo
captive_portal_server
(<= Android 6.0.1)
- El servidor que tiene un
generate_204
que se utiliza para elaborar internamente una URL para la detección del portal cautivo ( new URL("http", mServer, "/generate_204");
- obsoleto a partir de Android 7.0, véase más abajo)
captive_portal_use_https
(>= Android 7.0)
0
: No utilice HTTPS para la validación de la red
1
: Usar HTTPS (por defecto)
captive_portal_http_url
(>= Android 7.0)
- La URL utilizada para la detección del portal cautivo HTTP - utilizar en pareja con
captive_portal_use_https
(ajustado a 0
)
- >= Android 7.1.1: El sistema operativo ya no anexa
generate_204
a la URL automáticamente, dando a la URL de entrada cierta flexibilidad
captive_portal_https_url
(>= Android 7.0)
- La URL utilizada para la detección del portal cautivo HTTPS - utilizar en pareja con
captive_portal_use_https
(ajustado a 1
)
- >= Android 7.1.1: El sistema operativo ya no anexa
generate_204
a la URL automáticamente
Requisito para el uso de la URL
Para la validación se utiliza un código de respuesta HTTP 204 ("sin contenido") del servidor, sin necesidad de contenido adicional: tomemos como ejemplo la URL de detección por defecto, curl clients3.google.com/generate_204
devuelve vacío, y la inspección de la respuesta HTTP añadiendo --write-out %{http_code}
devuelve 204
.'
Una pequeña lista de URLs de servidores de portales cautivos utilizables en China continental (probado personalmente)
https://captive.v2ex.co/generate_204 (alojado en v2ex.com)
https://connect.rom.miui.com/generate_204 (alojado por Xiaomi, utilizado por defecto en MIUI)
https://noisyfox.cn/generate_204 (alojado en noisyfox.cn)
https://www.google.cn/generate_204 & https://developers.google.cn/generate_204 (alojado por Google)
https://www.qualcomm.cn/generate_204 (alojado por Qualcomm)
Notas adicionales
La fuente también menciona los parámetros captive_portal_user_agent
, captive_portal_fallback_url
y captive_portal_other_fallback_urls
:
captive_portal_fallback_url
(>= Android 7.1.1) obviamente se supone que contiene una sola URL, mientras que
captive_portal_other_fallback_urls
contiene múltiples URLs adicionales (lista separada por comas, por lo que las URLs pueden no contener ninguna coma).
Pero personalmente he realizado pruebas en Android 8.0.0, y ambos parámetros fallback no funcionan. Asumiendo que son declaraciones sin una implementación por ahora.
Algunos ejemplos de configuración del portal cautivo de Android en China muestran el uso de algunos de los ajustes anteriores:
adb shell settings put global captive\_portal\_http\_url http://www.google.cn/generate\_204
adb shell settings put global captive\_portal\_https\_url https://www.google.cn/generate\_204
adb shell settings put global captive\_portal\_fallback\_url http://www.google.cn/generate\_204
adb shell settings put global captive\_portal\_other\_fallback\_urls http://www.qualcomm.cn/generate\_204
Sabiendo esto, los "papel de aluminio" incluso podrían crear su propio servicio de verificación. Con Apache:
RewriteEngine On
RewriteCond %{REQUEST\_URI} /generate\_204$
RewriteRule $ / \[R=204,L\]
o con Nginx:
location / generate\_204 { return 204 ; }
Referencias
1 , 2 (Chino), 3 (Chino)