Configurar el 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
Establecer URL (s) del portal cautivo
captive_portal_server
(<= Android 6.0.1)
- El servidor que contiene una
generate_204
página, utilizado para crear internamente una URL para la detección de portal cautivo ( new URL("http", mServer, "/generate_204");
- obsoleto a partir de Android 7.0, ver más abajo)
captive_portal_use_https
(> = Android 7.0)
0
: No use HTTPS para la validación de red
1
: Usar HTTPS (predeterminado)
captive_portal_http_url
(> = Android 7.0)
- La URL utilizada para la detección del portal cautivo HTTP: úsela en pareja con
captive_portal_use_https
(configurada en 0
)
- > = Android 7.1.1: el sistema operativo ya no se agrega
generate_204
a la URL automáticamente, lo que brinda cierta flexibilidad a la URL de entrada
captive_portal_https_url
(> = Android 7.0)
- La URL utilizada para la detección del portal cautivo HTTPS: úsela en pareja con
captive_portal_use_https
(configurada en 1
)
- > = Android 7.1.1: el sistema operativo ya no se agrega
generate_204
a la URL automáticamente
Requisito para utilizar la URL
Se utiliza un código de respuesta HTTP 204 ("sin contenido") del servidor para la validación, no se necesita contenido adicional: tome la URL de detección predeterminada, por ejemplo, curl clients3.google.com/generate_204
devuelve vacía e inspecciona la respuesta HTTP agregando --write-out %{http_code}
devoluciones 204
'.
Una pequeña lista de URL de servidor de portal cautivo utilizables en China continental (probado personalmente)
https://captive.v2ex.co/generate_204 (alojado por v2ex.com)
https://connect.rom.miui.com/generate_204 (alojado por Xiaomi, utilizado por defecto en MIUI)
https://noisyfox.cn/generate_204 (alojado por noisyfox.cn)
https://www.google.cn/generate_204 y 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 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 tiene una sola URL, mientras
captive_portal_other_fallback_urls
contiene varias URL adicionales (lista separada por comas, por lo que es posible que las URL no contengan ninguna coma).
Pero personalmente realicé pruebas en Android 8.0.0, y ambos parámetros de respaldo no funcionan. Asumiendo que son declaraciones sin una implementación por ahora.
Algunos ejemplos de configuraciones de portal cautivo de Android en China muestran el uso de algunas de las configuraciones anteriores:
la configuración del shell adb pone global cautive_portal_http_url http://www.google.cn/generate_204
la configuración de adb shell pone global cautive_portal_https_url https://www.google.cn/generate_204
la configuración del shell adb pone global captive_portal_fallback_url http://www.google.cn/generate_204
la configuración de adb shell coloca global cautive_portal_other_fallback_urls http://www.qualcomm.cn/generate_204
Sabiendo eso, las "hojas de estaño" incluso podrían establecer 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)
new URL("http", mServer, "/generate_204");
(mServer
inicializado porcaptive_portal_server
si está configurado), por lo que este debería ser el nombre del servidor (o IP) allí (que probablemente fue una de las razones por las que falló para mí en un dispositivo MM). No estoy seguro de cuándo cambió entonces, pero por lo que escribes probablemente con N. Para el 204, he encontrado esto , por lo que parece que asumí correctamente: solo el código 204, sin contenido.