13 votos

Parámetros del Portal Cautivo

Hay varios parámetros del portal cautivo se puede aplicar a un dispositivo Android a través de settings put global - el más famoso probablemente sea

settings put global captive_portal_detection_enabled 0

para desactivar completamente la comprobación del portal cautivo (para Android < 8). ¿Alguien puede explicar cómo utilizar los otros - por ejemplo, para definir un "servidor de portal cautivo personalizado para los tin-foils"? Por ejemplo, uno no puede simplemente hacer un

settings put global captive_portal_server example.com

ya que eso, en la mayoría de los casos, haría que la comprobación del portal cautivo fallara permanentemente (antecedentes: al hacerlo, la comprobación del portal construiría una URL http://example.com/generate_204 y comprobarlo, esperando una respuesta específica).

Así que, aparte de simplemente desactivar la comprobación del portal cautivo por completo (lo que podría, como he leído, llevar a otros problemas como no ser redirigido al portal correcto en algunos casos), ¿qué más se puede hacer para mejorar la privacidad en este contexto?

Ejemplos (si los he entendido bien):

  • captive_portal_mode (¿Android 8+?):
    • 0 : No intente detectar los portales cautivos
    • 1 : Pide al usuario que se registre
    • 2 : Desconéctate inmediatamente de la red y no vuelvas a conectarte a ella en el futuro
  • captive_portal_detection_enabled (¿Android <8?):
    • 0 : Desactivar completamente las comprobaciones del portal cautivo
    • 1 : Habilitarlo (por defecto)

Aunque estos ejemplos son bastante sencillos: ¿cómo utilizar los demás parámetros?

14voto

Andy Yan Puntos 501

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)

1 votos

Puesto relacionado - y al menos con MM, se utiliza el siguiente código: new URL("http", mServer, "/generate_204"); (con mServer siendo inicializado por captive_portal_server si se ha establecido) - por lo que esto debería ser sólo el nombre del servidor (o IP) allí (que fue muy probablemente 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 encontró esto - por lo que parece que asumí correctamente: sólo el código 204, sin contenido.

0 votos

@Izzy Lamentablemente las 2 opciones de retroceso no parecen funcionar. Usando la opción por defecto captive_portal_https_url y poniendo una URL accesible en captive_portal_fallback_url no elimina la marca de la cruz, y lo mismo ocurre si se pone captive_portal_other_fallback_urls - Ajuste captive_portal_https_url recta es la única salida. Tenga en cuenta que las pruebas se llevan a cabo bajo LTE en lugar de WiFi, porque por alguna razón mi WiFi de la escuela siempre me dirigiría al portal cautivo, incluso si establezco una URL completamente inválida.

0 votos

Esos parámetros fallback podrían haber sido introducidos con Oreo (ten en cuenta que hemos mirado el código de Oreo para encontrarlos). Supongo que lo has comprobado en Nougat, ¿no? // Buena idea incluir una pequeña lista de servidores. AFAIK también había g.cn disponible ;)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X