Popups de portal cautivo: la guía definitiva [cerrado]

12

Estoy implementando manualmente un portal cautivo WiFi. Tengo todo funcionando, PERO un solo problema: quiero que todos vean la ventana emergente del portal cautivo de su sistema operativo móvil (o sistema operativo de computadora) para una experiencia perfecta.

Dado que cada uno de ellos tiene su propia forma retorcida de hacerlo, aparentemente no puedo obtener una experiencia multiplataforma consistente.

Para que esto suceda, ¿puedo obtener ayuda para describir (1) qué solicitudes de URL de los clientes WiFi deben redirigirse a una página de inicio de sesión y / o (2) qué configuración de servidor web nginx o apache se puede utilizar para redirigir WiFi clientes a una página de inicio de sesión?

La página de inicio de sesión de mi portal cautivo en este ejemplo es http: //captiveportal.lan . Estos son algunos de los sistemas operativos para los que estoy tratando de resolver esto.


Android 4/5/6

  • Apache:
    RedirectMatch 302 /generate_204 http://captiveportal.lan
  • nginx:?

Versiones anteriores de Android

  • Apache:?
  • nginx:?

iOS 8

  • Apache .htaccess:
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
    RewriteRule ^(.*)$ http://captiveportal.lan [L,R=302]

  • nginx:?

Versiones anteriores de iOS

  • Apache:?
  • nginx:?


Telefono windows

  • Apache:
    RedirectMatch 302 /ncsi.txt http://captiveportal.lan
  • nginx:?


Windows 7 \ 8 \ 10

  • Apache: vea Windows Phone (funciona en win7).
  • nginx:?

Mac OS

  • Apache:?
  • nginx:?

Amazon Kindle: ¿tiene una ventana emergente?

  • Apache:?
  • nginx:?
ppparadox
fuente
55
No, no es demasiado amplio, es simplemente un problema multiplataforma. El problema MÁS multiplataforma puede haber, quizás. También ha alcanzado el estado de "pregunta notable" (más de 2.500 visitas), por lo que la gente está realmente interesada en él y está prestando un ENORME perjuicio a todos al evitar que las contribuciones lleguen. ¡Por vergüenza!
ppparadox
Muchas gracias por el post; me permitió hacer esto unix.stackexchange.com/questions/386242/…
Rui F Ribeiro

Respuestas:

5

Todos los sistemas operativos móviles solo revisan una página web para decidir si están detrás de un portal cautivo o no.

El mecanismo es este:

  1. OBTENER / PUBLICAR http://foo.com/bar.html
  2. If bar.html == [contenido esperado]> Abrir Internet
  3. If bar.html! = [Contenido esperado]> Portal cautivo
  4. If bar.html [estado]! = ÉXITO> Sin red

Además, para iOS, debe tener un dominio para su red WiFi, ya que supone que una red sin dominio sin acceso es una red doméstica y solo la marca como Sin red en lugar de Portal cautivo.

Solo asegúrese de redirigir explícitamente las siguientes URL a su portal cautivo con HTTP Success:

Android / Chromebook:

  • clientes3.google.com

ios 6:

  • gsp1.apple.com
  • * .akamaitechnologies.com

ios 7:

  • www.appleiphonecell.com
  • www.airport.us
  • * .apple.com.edgekey.net
  • * .akamaiedge.net
  • * .akamaitechnologies.com

iOS 8/9:

Ventanas

  • ipv6.msftncsi.com
  • www.msftncsi.com

Muchos proveedores también han comenzado a utilizar el agente de usuario "CaptiveNetworkSupport", aunque no es tan común como el método de URL anterior. Simplemente verifique ese UA y siempre dele su página de portal ... aunque no funciona al 100%.

Utilizo el método de URL y ha estado funcionando bien.

hdezela
fuente
¿Le gustaría compartir algunos conf de servidor web en funcionamiento \ reglas de firewall \ fragmentos de código php que utiliza para obtener la ventana emergente?
ppparadox
Parece que Android v6 está usando una url diferente.
connectcheck.gstatic.com
¿Por qué tendría que redirigir explícitamente las URL de prueba? ¿No serviría la página de inicio de sesión para cada URL hasta que el usuario inicie sesión?
AShelly
2

Kindle de Amazon (Fuego)

El Kindle de Amazon (Fire) realiza la siguiente solicitud, y si no se puede recuperar "... se supone que el usuario debe iniciar sesión y muestra una pantalla de inicio de sesión":

iOS 8.4

Para el último iOS tuve que hacer coincidir todos los URI para las solicitudes a http://captive.apple.com , no solo "/hotspot-detect.html".

Los clientes de iOS 8.4 realizan solicitudes con URI generados aleatoriamente (p. ej., "/xmqPyZUv/3r8jTjv8.html" y "/7exN0TV7q0COX0/eKlBU8baU2tape/fjXUzDHBdE6W0O/BGbw7iYU2DVBh1/TV aT.TT a los datos de la aplicación de la aplicación.

Russell E Glaue
fuente
1
¿IOS 8.4 establece UserAgent en "CaptiveNetworkSupport"? ¿Le gustaría compartir algunos conf de servidor web que funcionan \ reglas de firewall \ fragmentos de código php que utiliza para obtener la ventana emergente? Además, ¿por qué alguien te ha rechazado sin molestarte en explicar por qué? Gente estúpida ...
ppparadox
La cadena de agente exacta es "CaptiveNetworkSupport-277.10.5 wispr". Cuando redirijo estas solicitudes (enumeradas en esta pregunta) a una página de inicio de sesión, Apple iOS abrirá una página de inicio de sesión y Android mostrará una barra de encabezado de inicio de sesión. Después de iniciar sesión con éxito en la página de inicio de sesión, el sistema de portal cautivo debe permitir que estas solicitudes HTTP sean exitosas para que la ventana emergente y la barra de inicio de sesión desaparezcan. He probado con éxito esto en un portal cautivo personalizado que creé usando solo Linux, dnsmasq y el servidor Apache httpd.
Russell E Glaue
Olvidé preguntar si el Kindle también establece ese agente de usuario.
ppparadox
1
Para kindle estoy viendo "Dalvik / 2.1.0 (Linux; U; Android 5.0.1; VS985 4G Build / LRX21Y)" (¿tal vez es una aplicación kindle?). Este hilo mobileread.com/forums/showthread.php?t=188439 dice "Mozilla /5.0 (Linux; como iPhone; U; en-US) AppleWebKit / 528.5 + (KHTML, como Gecko, Safari / 528.5 +) Versión / 4.0 "
Russell E Glaue
1
@ppparadox No sé por qué obtuve el voto negativo segundos después de publicar. Si te gusta mi contribución, por favor dame un voto positivo. Gracias.
Russell E Glaue