Tal vez esto parece ser un problema de conexión a los servidores de Google (servidor de portal cautivo) no el inicio de sesión del portal cautivo configurado por el navegador a la que parece referirse en su post.
(En algún momento desde Lollipop (5.1+)) Cuando se conecta a las redes (especialmente a las redes Wi-Fi), el sistema Android comprueba si hay una conexión a Internet activa realizando comprobaciones en ciertas URLs predefinidas pertenecientes a los servidores de Google. Si falla, aparecerá un signo de exclamación en el icono de la señal Wi-Fi y se mostrará una notificación de "Conectado, sin Internet". (aunque se pueda acceder a otros sitios web e Internet esté en funcionamiento) por lo que puede ser un problema temporal con la conectividad a esa URL específica:
Android intenta llegar a un archivo llamado generate_204
en uno de los servidores de Google y si no hay respuesta positiva, significa que no hay no hay conexión a internet, y también se genera una notificación, la url de detección difiere entre diferentes versiones de Android.
Parece que google ha cambiado el portal cautivo en las versiones recientes de Android, por ejemplo, oreo.
parece que google ahora comprueba tanto un generate_204
en ambos connectivitycheck.gstatic.com
y un gen_204
en www.google.com
.
De nuevo es un problema por sí mismo, especialmente en regiones donde el acceso a los servicios de Google está bloqueado. Este responder Sin embargo, explica bien cómo evitarlo y que le eches un vistazo.
Se ha extraído un trozo de información de este discusión.
En base a esto tienes algunas opciones para evitarlo:
-
Cambiar el servidor del portal cautivo
-
Instalar una aplicación de terminal alternativamente estos comandos también se pueden ejecutar a través de la adb shell
.
-
Abra la aplicación de terminal y ejecute su
.
-
Ejecutar settings get global captive_portal_server
. Esto mostrará el servidor actual del portal cautivo. Una respuesta "nula" suele ser la predeterminada.
-
Ejecutar settings put global captive_portal_server YOUR_SERVER_ADDRESS
. Puedes añadir google.com como servidor del portal cautivo, i.e settings put global captive_portal_server google.com
.
-
Ejecutar exit
una vez para salir de su, y luego salir una vez más para cerrar la terminal.
-
Reinicie el dispositivo Android. No funcionará sin un reinicio.
- Desactivación del portal cautivo
- Como el culpable es un método
isCaptivePortal()
que acceden a clients3.google.com/generate_204
para comprobar si una conexión se considera "utilizable". La página, como su nombre indica, está diseñada para devolver siempre a HTTP 204
código de situación. En base a esto tienes un par de opciones:
i. Matar isCaptivePortal()
completamente
- con adb establecer, ejecutar
adb shell su -c "settings put global captive_portal_detection_enabled 0"
(Android 7.1+) o utilizando adb shell su -c "settings put global captive_portal_mode 0"
Nota: El lado negativo es que isCaptivePortal() es realmente útil para detectar, por ejemplo, cuando una red WiFi requiere un inicio de sesión. Si la solicitud a la página 204 es redirigida a una página de inicio de sesión (no a una 204), el sistema entenderá y mostrará el signo de exclamación como se pretende.
ii. Cambiar el objetivo de isCaptivePortal()
-
otra solución es sustituir el host de Google por un host accesible en la región específica. Este host también debería devolver 204
cada vez /generate_204
se accede.
es decir adb shell su -c "settings put global captive_portal_server {alternate_host} "
-
Uso de anfitriones
- Puedes editar
hosts
para bloquear la url de detección del portal cautivo evitando así el envío de las peticiones al servidor del portal cautivo.
¿Por qué Linux y Windows se conectan sin problemas?
Como has mencionado en tu post que esto parece ser específico de Android, de hecho la discusión anterior lo pone de manifiesto. La razón es que para esos dispositivos (Linux y Windows) el mecanismo de conexión es completamente diferente.
Estos dispositivos no necesitarán conectarse a los servidores de Google para detectar primero si hay un internet activo.
1 votos
Sería útil saber qué dispositivos estás usando que dan este problema. Si los dispositivos son todos de un fabricante y funciona bien cuando te conectas con un dispositivo de otro fabricante, eso reduciría las cosas. Pero si ocurre con dispositivos de varios fabricantes, supongo que tiene que ver con la configuración del router, pero es un problema muy extraño.
0 votos
A veces veo esto en el trabajo; tiendo a ignorarlo. Utilizamos Umbrella Solutions para capturar el tráfico web ilícito.
1 votos
Otro punto para reducirlo: ¿Funcionan bien todos tus servicios de Google? ¿Has intentado, por ejemplo, utilizar Playstore, GMail, etc.? No estoy 100% seguro, pero AFAIR la detección utiliza algún IP de Google y ve si eso puede ser alcanzado.