Come accedere automaticamente ai portali captive su OS X?


67

Come posso accedere automaticamente ai portali captive su OS X?

Un portale captive viene utilizzato da reti wireless (spesso non protette da password) che presentano una pagina Web non appena ci si connette ad esse, richiedendo il login.

Devo accedere a diverse reti wireless come questa molto frequentemente, e nessuno dei portali captive sembra ricordare le mie informazioni di accesso / password. C'è un modo per automatizzare il processo di accesso in qualche modo, o almeno memorizzare le coppie login / password nel Portachiavi?

Aggiornamento: esiste un'app iOS denominata AutoWifi che sostanzialmente gestisce questo. Se è possibile farlo su iOS con tutte le sue restrizioni, sicuramente deve essere possibile fare qualcosa di simile su OS X, giusto?


Curiosità correlate: ecco come Apple testa i portali captive su OS X e iOS:

OS X e iOS inviano una richiesta http://www.apple.com/library/test/success.htmlogni volta che ti connetti a una rete WiFi.

A partire da Yosemite l'URL è ora: http://captive.apple.com/hotspot-detect.html

Questo URL restituisce il seguente codice HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>

1
Dai un'occhiata a /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. La manipolazione delle preferenze qui può facilmente aggravare gravi rischi per la sicurezza, oltre ai molti che Apple ha decisamente implementato da sola. Non sono sicuro di quale browser utilizzi per connetterti tramite questi portali captive, ma puoi anche provare a configurare i percorsi di rete per loro o creare una macro semplice a seconda di ciò che desideri compilare automaticamente.
L'L

2
Questo è il punto: ogni volta che OS X rileva un portale captive, apre una finestra popup WebView (non una vera interfaccia utente del browser) con la pagina di accesso.
Mathias Bynens,

Se hai la possibilità, inserisci il codice sorgente del popup.
L'L

@ioi La fonte HTML della pagina dipende dalla rete. Una volta visualizzato il popup, è possibile accedere alla stessa pagina semplicemente aprendo qualsiasi browser e tentando di caricare un URL.
Mathias Bynens,

2
Nessuna delle risposte risponde alla domanda!
Tyilo,

Risposte:


28

Puoi rinominare

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

dentro, come moto a luogo, andare da dentro a fuori: I put my hand inTO my pocket = metto la mano in tasca

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

e sei pronto. L'immissione della password ora passa tramite il browser che preferisci e può essere memorizzata utilizzando 1 password o altri plugin. Tieni presente che se hai già effettuato l'accesso durante la ridenominazione, potrebbe trascorrere del tempo prima che la sessione scada ...


1
Non vedo l'ora di provarlo :) Nessun aspetto negativo?
Mathias Bynens,

1
Anche se questa potrebbe essere una soluzione semplice (st?), Penso che la risposta di cwd sia il modo corretto di farlo anche se è amministrazione. Ci sono alcune cose su Mac che Apple ci costringe ad essere amministratori, quando vogliamo "pensare diversamente" da Apple.
David

Nelle versioni più recenti di macOS, dovrai disabilitare la protezione dell'integrità del sistema prima di poter rinominare questo file. Non sono contrario a rinominare le cose di sistema quando necessario, ma la risposta di CWD è migliore in questo caso.
Wowfunhappy,

54

Ho appena trovato questo Disabilita supporto di rete captive in OS X

Che menziona "Per disabilitarlo, imposta questa preferenza:"

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

Nel caso in cui volessi rimuovere questa impostazione, puoi fare:

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

Quindi, come menziona @Leon, utilizzare il normale browser Web per accedere. Oppure, se ti trovi su una rete in cui in qualche modo non funziona, puoi comunque provare ad aprire l'app manualmente (situata in /System/Library/CoreServices/Captive Network Assistant.app)


2
cwd ++ Questa è ancora la risposta migliore. Oggi su Mojave, non sono stato in grado di rinominare o eliminare Captive Network Assistant.app, ma sono stato in grado di forzare la disabilitazione tramite impostazioni predefinite
danielpops,

16

Il progetto NetworkAutoLogin di Tyilo su github è un demone os.x che "si collega automaticamente alle reti del portale Captive" con le credenziali fornite dall'utente.

Utilizza PhantomJS e CasperJS per pubblicare le informazioni necessarie nei campi nella pagina di accesso del portale captive. Potrebbe essere la "password" di accesso segreta, una coppia nome utente-password o semplicemente l'attivazione di una casella di controllo EULA e il pulsante "Connetti".

Non ricordo esattamente come viene attivato, ma registra un .plist con launchctl.

Inserisci le opzioni di configurazione in un file json, specificando il nome del fieldset (opzionale) nella pagina del portale captive e il nome campo + le coppie di contenuti necessari (richiesto). Ecco un esempio del file di configurazione memorizzato in~/.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'
    }
}

1
non è folle che richiede un altro demone in esecuzione in background
Cwd

L'ho compilato ma non sono stato in grado di osservare il trigger demone quando mi è stata presentata una pagina di accesso alla rete in cattività predefinita.
Mac Cowell,

Allo stesso modo (anche aggiornato alle nuove impostazioni in yosemite +)
Jeef

6

L'eliminazione (o la ridenominazione) non /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistinterrompe il rilevamento automatico?

Potrebbe almeno fermare l'apertura del popup WebView.

Altrimenti sostituisci tutti gli URL in quello Settings.plistcon una copia del success.htmlfile ospitata localmente e ospita il success.htmlfile sul tuo server web localhost.


3

Vedo richieste di captive portal sulla mia rete domestica ogni 5 minuti. Ma ho cambiato il file /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

stringa: http://www.apple.com/library/test/success.html a http://captive.apple.com/hotspot-detect.html (intendevo la sezione ProbeURL). apple ha cambiato l'URL della sonda per il nuovo sistema operativo, non so perché, ma la nuova risposta dell'URL è 200 (OK) e dovrebbe funzionare (ho riscontrato lo stesso problema sul mio mbp 2011 Mavericks).


3

Con un po 'di aiuto nell'uso di AppleScript, Lynx, Fakeapp / Safari e ControlPlane, My MacBook ora si collega sempre automaticamente al portale captive nel mio ufficio. Non è ancora un modo efficiente per farlo, ma fa ancora il lavoro alla perfezione. Spero che qualcuno possa renderlo più semplice.

Ecco il codice:

  1. Assicurati di essere nel SSID corretto

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Verifica l'esistenza dell'indirizzo del portale captive

    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. Test della connessione al portale

    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. Accesso al portale

    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. Salvare quegli script come un'unica applicazione. Quindi utilizzare le regole ControlPlane per farlo funzionare quando attivato con SSID specificato.

Sicuramente il modulo di login su captive potrebbe avere altri elementi HTML. È possibile aggiungere alcune finestre di dialogo o notifiche di visualizzazione, un altro SSID diverso con i propri elementi HTML e nome utente / password. Fake è un browser + automatore, quindi semplifica la vita.

Non dimenticare di disabilitare il popup di accesso captive. Ora il tuo Mac si collega automaticamente al portale al 100%.

Spero che aiuti.


2

Un portale captive non è come una password. È più come un foglio di accesso. Ogni volta che la rete a cui sei connesso distribuisce un indirizzo IP tramite DHCP, ti dà il portale captive per accedere / accettare e quindi ti consente di connetterti. Da quanto ho capito, questa è una restrizione multipiattaforma che non può essere modificata. Essa può essere qualcosa che gli amministratori di rete possono cambiare, ma anche questo può dipendere dal tipo di apparecchiatura utilizzata.


Hai assolutamente ragione sul fatto che è più simile a un foglio di accesso che a una password, ma sono sorpreso che non sembra essere un modo semplice per compilare automaticamente questo foglio :) Su iOS, ci sono app che possono occuparsi di Questo. Non c'è qualcosa di simile per OS X?
Mathias Bynens,

Quali app per iOS possono farlo? Non dovresti quindi utilizzare quell'app per la navigazione web, ecc.?
Matt Love

1
L' app AutoWiFi lo gestisce automaticamente; tutto quello che devi fare è fare clic su "Connetti" una volta e sei loggato.
Mathias Bynens

2

Anche se alcuni anni questa domanda e risposta mostra molto su Google. Sfortunatamente MacOS è cambiato da allora. Questa pagina su MacWorld del 2016 sembra descrivere lo stato attuale (al momento della stesura di questo documento).

Il che è essenzialmente che a causa di SIP è possibile disabilitare l'assistente solo in modalità di ripristino. Devo ancora trovare una soluzione per l'altra parte di questa domanda, "possiamo automatizzare il login?"


1
In High Sierra non sembra più possibile rinominare Captive \ Network \ Assistant.app come suggerito lì. Almeno non potevo nemmeno quando eseguivo come root.
Henry Story,

Devi disabilitare l'ultima funzionalità di protezione operativa di MacOS. support.intego.com/hc/en-us/articles/… Non so se questo approccio funziona ancora, ma almeno ora puoi provare.
Historystamp

0

Puoi usare Mili , uno strumento open source che ho scritto per le pagine degli hotspot con accesso automatico. Funziona anche su Linux.

Quando si modifica la connessione Wi-Fi, Mili verifica la presenza di servizi Mikrotik e quindi tenta di accedere con le informazioni di accesso.

Puoi anche utilizzare le informazioni multi-login come questa:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}

Benvenuti a chiedere diverso. Le regole del sito richiedono di indicare nella risposta se sei affiliato al software che stai raccomandando. In questo caso, sei l'autore ma non lo dichiari nella tua risposta. Vedere Come rispondere per informazioni su come fornire risposte qui e modificare la risposta per includere le informazioni mancanti.
fsb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.