Parámetros del portal cautivo

10

Hay varios parámetros de portal cautivo que uno podría aplicar a un dispositivo Android a través de settings put global, el más famoso probablemente

settings put global captive_portal_detection_enabled 0

para desactivar completamente la verificación del portal cautivo (para Android <8). ¿Alguien puede explicar cómo usar los demás, por ejemplo, para definir un "servidor de portal cautivo personalizado para papel de aluminio"? 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, provocaría que la verificación del portal cautivo fallara permanentemente (antecedentes: al hacerlo, la verificación del portal construiría una URL http://example.com/generate_204y la verificaría, esperando una respuesta específica).

Entonces, aparte de simplemente desactivar la verificación del portal cautivo por completo (lo que, como he leído, podría conducir 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 entendí bien):

  • captive_portal_mode (Android 8+?):
    • 0: No intentes detectar portales cautivos
    • 1: Solicitar al usuario que inicie sesión
    • 2: Desconéctese inmediatamente de la red y no vuelva a conectarse a esa red en el futuro
  • captive_portal_detection_enabled (Android <8?):
    • 0: Deshabilitar completamente las verificaciones de portal cautivo
    • 1: Habilítelo (predeterminado)

Si bien estos ejemplos son bastante directos: ¿Cómo usar los otros parámetros?

Izzy
fuente

Respuestas:

12

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_204pá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_204a 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_204a 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_204devuelve 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_urly 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)

Andy Yan
fuente
1
Publicación relacionada , y al menos con MM, se usa el siguiente código: new URL("http", mServer, "/generate_204");( mServerinicializado por captive_portal_serversi 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.
Izzy
@Izzy Lamentablemente, las 2 opciones de reserva no parecen funcionar. Usar el valor predeterminado captive_portal_https_urly poner una URL accesible captive_portal_fallback_urlno elimina la marca cruzada, y lo mismo ocurre con la colocación captive_portal_other_fallback_urls: captive_portal_https_urlla única forma de hacerlo es en línea recta. Tenga en cuenta que las pruebas se llevan a cabo bajo LTE en lugar de WiFi, porque por alguna razón, el WiFi de mi escuela siempre me dirigiría al portal cautivo, incluso si configuro una URL completamente inválida.
Andy Yan
Esos parámetros de respaldo podrían haberse introducido con Oreo (tenga en cuenta que hemos examinado el código de Oreo para encontrarlos). Supongo que has comprobado el turrón, ¿verdad? // Buena idea incluir una pequeña lista de servidores. AFAIK también estaba g.cndisponible;)
Izzy
1
@Izzy Oh sí, no me di cuenta de eso, todavía no he flasheado ninguno de mis dispositivos con LOS15. Podría valer la pena echarle un vistazo, y si funciona, lo actualizaré y le enviaré un ping para limpiar los comentarios. Además, se dice que el certificado HTTPS de g.cn ha expirado en tierra firme, por lo que ya no es utilizable para HTTPS. // Pero espera ... El código fuente 7.1.2 también contiene referencias a captive_portal_fallback_url.
Andy Yan
Al igual que con muchas funciones nuevas, las referencias a veces aparecen antes de que se complete la función. Y el archivo al que se hace referencia define principalmente las constantes, no la funcionalidad, ¿verdad?
Izzy