¿Cómo iniciar sesión automáticamente en portales cautivos en OS X?

67

¿Cómo puedo iniciar sesión automáticamente en portales cautivos en OS X?

Las redes inalámbricas (a menudo no protegidas por contraseña) utilizan un portal cautivo que presenta una página web tan pronto como se conecta a ellas, lo que requiere que inicie sesión.

Tengo que iniciar sesión en diferentes redes inalámbricas como esta con mucha frecuencia, y ninguno de los portales cautivos parece recordar mi información de inicio de sesión / contraseña. ¿Hay alguna manera de automatizar el proceso de inicio de sesión de alguna manera, o al menos almacenar los pares de inicio de sesión / contraseña en el llavero?

Actualización: hay una aplicación para iOS llamada AutoWifi que básicamente maneja esto. Si es posible hacer esto en iOS con todas sus restricciones, seguramente debe ser posible hacer algo así en OS X, ¿verdad?


Dato curioso relacionado: así es como Apple prueba los portales cautivos en OS X e iOS:

OS X e iOS hacen una solicitud http://www.apple.com/library/test/success.htmlcada vez que se conecta a una red WiFi.

A partir de Yosemite, la URL es ahora: http://captive.apple.com/hotspot-detect.html

Esta URL devuelve el siguiente HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>
Mathias Bynens
fuente
1
Eche un vistazo a /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. Manipular las preferencias aquí puede agravar fácilmente los graves riesgos de seguridad además de los muchos que Apple ha implementado decididamente por su cuenta. No estoy seguro de qué navegador usa para conectarse a través de estos portales cautivos, pero también puede intentar configurar ubicaciones de red para ellos, o crear una macro simple dependiendo de lo que desee llenar automáticamente.
l'L'l
2
Esa es la cuestión: cada vez que OS X detecta un portal cautivo, abre una ventana emergente WebView (no una interfaz de usuario real del navegador) con la página de inicio de sesión.
Mathias Bynens
Si tiene la oportunidad, publique el código fuente de la ventana emergente.
l'L'l
@ioi La fuente HTML de la página depende de la red. Una vez que aparece la ventana emergente, es posible navegar a la misma página simplemente abriendo cualquier navegador e intentando cargar una URL.
Mathias Bynens el
2
¡Ninguna de las respuestas responde la pregunta!
Tyilo

Respuestas:

28

Puedes renombrar

/System/Library/CoreServices/Captive Network Assistant.app

dentro

/System/Library/CoreServices/No More Captive Network Assistant.app

y ya está todo listo El ingreso de contraseña ahora se realiza a través de su navegador de elección y puede almacenarse usando 1password u otros complementos. Tenga en cuenta que si ya inició sesión mientras realiza el cambio de nombre, la sesión puede tardar un tiempo en caducar ...

León
fuente
1
Estoy ansioso por probar esto :) ¿Sin inconvenientes?
Mathias Bynens
1
Si bien esta puede ser una solución simple (st?), Creo que la respuesta de cwd es la forma correcta de hacerlo, aunque sea administrativa. Hay ciertas cosas en Mac que Apple nos obliga a ser administradores cuando queremos "pensar diferente" de Apple.
David
En las versiones más nuevas de macOS, deberá deshabilitar la Protección de integridad del sistema antes de poder cambiar el nombre de este archivo. No me opongo a cambiar el nombre del sistema cuando es necesario, pero la respuesta de cwd es mejor en este caso.
Wowfunhappy
54

Acabo de encontrar esta opción Desactivar soporte de red cautiva en OS X

Que menciona "Para deshabilitarlo, establezca esta preferencia:"

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -boolean false

En caso de que desee eliminar esta configuración, puede hacer lo siguiente:

sudo defaults delete /Library/Preferences/SystemConfiguration/com.apple.captive.control Active

Luego, como menciona @Leon, use el navegador web normal para iniciar sesión. O si está en una red donde eso de alguna manera no funciona, aún puede intentar abrir la aplicación manualmente (ubicada en /System/Library/CoreServices/Captive Network Assistant.app)

cwd
fuente
2
cwd ++ Esta sigue siendo la mejor respuesta. Hoy en Mojave, no pude cambiar el nombre o eliminar el Captive Network Assistant.app, pero pude forzar la desactivación a través de los valores predeterminados
danielpops
16

El proyecto NetworkAutoLogin de Tyilo en github es un demonio os.x que "se conecta automáticamente a las redes de portal cautivo" con credenciales proporcionadas por el usuario.

Utiliza PhantomJS y CasperJS para publicar la información necesaria en los campos de la página de inicio de sesión del portal cautivo. Podría ser la "contraseña" de inicio de sesión secreta, un par de nombre de usuario y contraseña, o simplemente activar una casilla de verificación EULA y el botón "conectar".

No recuerdo exactamente cómo se activa, pero registra un .plist con launchctl.

Coloca las opciones de configuración en un archivo json, especificando el nombre del conjunto de campos (opcional) en la página del portal cautivo y los pares necesarios de nombre de campo + contenido (obligatorio). Aquí hay un ejemplo del archivo de configuración almacenado en~/.networkautologin.js

{ // Example with all possible options
    match: {
        SSID: ['Example WiFi 1', 'Example WiFi 2'],
        BSSID: '01:23:45:67:89:AB',
        URL: 'http://logon.example.org/?url=http://www.apple.com/library/test/success.html'
    },
    form_selector: 'form#login_form',
    fields: {
        'username': 'test',
        'password': '123123'
    }
}
Mac Cowell
fuente
1
no es una locura que requiera que otro demonio se ejecute en segundo plano
cwd
Lo he compilado pero no he podido observar el gatillo del demonio cuando se me presenta una página de inicio de red cautiva preestablecida.
Mac Cowell
Del mismo modo (incluso lo actualicé a la nueva configuración en yosemite +)
Jeef
6

¿La eliminación (o el cambio de nombre) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistdetiene la prueba automática?

Al menos podría detener la apertura de la ventana emergente de WebView.

De lo contrario, reemplace todas las URL Settings.plistcon una copia alojada local del success.htmlarchivo y aloje el success.htmlarchivo en su servidor web localhost.

Pro Backup
fuente
3

Veo solicitudes de portal cautivo en mi red doméstica cada 5 min. Pero he cambiado en el archivo /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

cadena: http://www.apple.com/library/test/success.html a http://captive.apple.com/hotspot-detect.html (me refería a la sección ProbeURL). Apple cambió la URL de la sonda para el nuevo sistema operativo, no sé por qué, pero la nueva respuesta de la URL es 200 (OK) y debería funcionar (me he enfrentado con el mismo problema en mi mbp 2011 Mavericks).

Alexander Unger
fuente
3

Con algo de ayuda con AppleScript, Lynx, Fakeapp / Safari y ControlPlane, My MacBook ahora siempre se conecta automáticamente al portal cautivo en mi oficina. Todavía no es una forma eficiente de hacerlo, pero aún así hace el trabajo perfectamente. Espero que alguien pueda simplificarlo.

Aquí está el código:

  1. Asegúrese de que tengamos el SSID correcto

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Comprobar la existencia de la dirección del portal cautivo

    try
        do shell script ("ping -c 2 " & CaptiveAddress) -- set your captive address here
        set CaptiveExist to "yes"
    on error
        set CaptiveExist to "no"
    end try
    
  3. Probar conexión del portal

    try
        set PortalOpened to do shell script ("/usr/local/bin/lynx --dump http://www.apple.com/library/test/success.html | grep 'Success'")
        if PortalOpened is "   Success" then
            set PortalOpened to "yes"
        else
            set PortalOpened to "no"
        end if
    on error
        set PortalOpened to "no"        
    end try
    
  4. Iniciar sesión en el portal

    tell application "Fake"
        load URL "http://YourPortalAddress.html" -- put your captive address here
        set value of element with name "username" to "user"
        set value of element with name "password" in form with name "password" to "password"
        click element with id "logincaption"
    end tell
    
  5. Guarde esos scripts como una sola aplicación. Luego, use las reglas de ControlPlane para que se ejecute cuando se active con el SSID especificado.

Seguramente el formulario de inicio de sesión en cautivo puede tener otros elementos HTML. Puede agregar algunos cuadros de diálogo de visualización o notificaciones, otro SSID diferente con sus propios elementos HTML y nombre de usuario / contraseña. Fake es un navegador + automatizador, por lo que te facilitará la vida.

No olvide deshabilitar la ventana emergente de inicio de sesión cautivo. Ahora tu Mac 100% se conecta automáticamente al portal.

Espero que ayude.

Koes N
fuente
2

Un portal cautivo no es como una contraseña. Es más como una hoja de inicio de sesión. Cada vez que la red a la que está conectado entrega una dirección IP a través de DHCP, le brinda el portal cautivo para iniciar sesión / aceptar y luego le permite conectarse. Por lo que entiendo, esta es una restricción de plataforma cruzada que no puede ser alterada. Se puede ser algo que los administradores de red pueden cambiar, pero incluso eso puede depender del tipo de equipo que se utiliza.

Matt Love
fuente
Tiene toda la razón de que se parece más a una hoja de inicio de sesión que a una contraseña, pero me sorprende que no haya una forma fácil de completar automáticamente esta hoja :) En iOS, hay aplicaciones que pueden encargarse de esta. ¿No hay nada similar para OS X?
Mathias Bynens el
¿Qué aplicaciones para iOS pueden hacer esto? ¿No tendrías que usar esa aplicación para navegar en la web, etc.?
Matt Love
1
La aplicación AutoWiFi maneja esto automáticamente; todo lo que tienes que hacer es hacer clic en "Conectar" una vez y estarás conectado.
Mathias Bynens
2

Aunque hace unos años, esta pregunta y respuesta se muestran altas en googlear esto. Lamentablemente, MacOS ha cambiado desde entonces. Esta página en MacWorld de 2016 parece describir el estado actual (a partir de este escrito).

Lo que esencialmente es que debido a SIP puede deshabilitar el asistente solo en modo de recuperación. Todavía tengo que encontrar alguna solución a la otra parte de esta pregunta, "¿podemos automatizar el inicio de sesión?"

thoni56
fuente
1
En High sierra ya no parece posible cambiar el nombre de Captive \ Network \ Assistant.app como se sugiere allí. Al menos no pude incluso cuando se ejecuta como root.
Henry Story
Debe deshabilitar la última función de protección operativa de MacOS. support.intego.com/hc/en-us/articles/… No sé si este enfoque aún funciona, pero al menos ahora puede intentarlo.
sello histórico
0

Puede usar Mili , una herramienta de código abierto que escribí para páginas de punto de acceso automático. También funciona en Linux.

Cuando cambia su conexión Wi-Fi, Mili busca los servicios de Mikrotik y luego intenta iniciar sesión con su información de inicio de sesión.

También puede usar información de inicio de sesión múltiple como esta:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}
Sadegh Hayeri
fuente
Bienvenido a Ask Different. Las reglas del sitio requieren que indique en su respuesta si está afiliado al software que está recomendando. En este caso, usted es el autor, pero no lo indica en su respuesta. Consulte Cómo responder para obtener información sobre cómo proporcionar respuestas aquí y edite su respuesta para incluir la información que falta.
fsb