Cuando el dispositivo intenta conectarse a un punto de acceso o enrutador, debe iniciar sesión en la página del portal cautivo con el mensaje que dice
«Iniciar sesión en la red Wi-Fi».
¿Cómo funciona el punto de acceso / enrutador? identificar que se requiere un inicio de sesión para el dispositivo y cuál es el proceso detrás de él?
Responder
La URL de detección difiere entre diferentes versiones de Android.
Para Marshmallow, utiliza conectividadcheck.gstatic.com/generate_204, verifique el código aquí AndroidXRef – Marshmallow 6.0.0_r1
Para Kitkat, usa clients3.google.com/generate_204 verifique el código AndroidXRef – KitKat 4.4.4_r1
Comentarios
Respuesta
Esta tecnología se llama «portal cautivo». Hay varias implementaciones. Como sé, Android intenta acceder a un archivo llamado generate_204
en uno de los servidores de Google y, si no es posible, se genera una notificación.
Lectura adicional en Wikipedia: Captive_portal
Comentarios
- En realidad, sé sobre el portal cautivo. Pero conozco la URL específica para verificarla. Quiero saber como funciona. No es lo que es.
- ¿Qué quieres decir con " cómo funciona "? Android envía una solicitud y, si no hay una respuesta positiva, significa que no hay conexión a Internet y se genera una notificación. Así funciona '.
- Cuál es la URL específica en la que solicita Android. Tengo la mención en cuestión.
- En su comentario anterior, dijo que conoce la URL específica. Creo que ' s
https://www.gstatic.com/generate_204
- La URL parece ser clients3.google.com/generate_204 . Información extraída de este sitio para el cromo, que probablemente sea la misma para Android. chromium.org/chromium-os/chromiumos-design-docs/…
Respuesta
Un portal cautivo generalmente se implementa dirigiendo todo el tráfico a una respuesta HTTP válida (200). Esta respuesta HTTP es la que aparece en el portal cautivo.
Esto se puede hacer con herramientas como iptables o dnsmasq.
http://connectivitycheck.gstatic.com/generate_204
en realidad devuelve un 204 sin contenido, y obviamente funciona. Quizás simplemente omitió el encabezadoContent-Length: 0
.