Wie kann ich mich unter OS X automatisch bei Captive-Portalen anmelden?

66

Wie kann ich mich unter OS X automatisch bei Captive-Portalen anmelden?

Ein Captive-Portal wird von (häufig nicht kennwortgeschützten) drahtlosen Netzwerken verwendet, in denen eine Webseite angezeigt wird, sobald Sie eine Verbindung zu ihnen herstellen. Sie müssen sich anmelden.

Ich muss mich sehr häufig bei verschiedenen drahtlosen Netzwerken wie diesem anmelden, und keines der unverlierbaren Portale scheint sich an meine Anmelde- / Kennwortinformationen zu erinnern. Gibt es eine Möglichkeit, den Anmeldevorgang irgendwie zu automatisieren oder zumindest die Anmelde- / Kennwortpaare im Schlüsselbund zu speichern?

Update: Es gibt eine iOS-App namens AutoWifi , die dies im Grunde übernimmt. Wenn es möglich ist, dies unter iOS mit all seinen Einschränkungen zu tun, muss es doch möglich sein, so etwas unter OS X zu tun, oder?


Ähnliche lustige Tatsache: So testet Apple unter OS X und iOS nach Captive-Portalen:

OS X und iOS stellen bei http://www.apple.com/library/test/success.htmljeder Verbindung mit einem WiFi-Netzwerk eine Anfrage .

Ab Yosemite lautet die URL nun: http://captive.apple.com/hotspot-detect.html

Diese URL gibt den folgenden HTML-Code zurück:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>
Mathias Bynens
quelle
1
Schauen Sie sich /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist an. Das Manipulieren der Einstellungen hier kann leicht schwerwiegende Sicherheitsrisiken mit sich bringen, obwohl viele von Apple eigenständig implementiert wurden. Ich bin nicht sicher, welchen Browser Sie für die Verbindung über diese Captive-Portale verwenden, aber Sie können auch versuchen, Netzwerkspeicherorte für diese Portale einzurichten oder ein einfaches Makro zu erstellen, je nachdem, was Sie automatisch ausfüllen möchten.
l'L'l
2
Das ist die Sache - wenn OS X ein Captive-Portal erkennt, öffnet es ein WebView-Popup-Fenster (keine echte Browser-Benutzeroberfläche) mit der Anmeldeseite.
Mathias Bynens
Wenn Sie die Chance haben, veröffentlichen Sie den Quellcode des Popups.
l'L'l
@ioi Die HTML-Quelle der Seite hängt vom Netzwerk ab. Sobald Sie das Popup erhalten haben, können Sie zur gleichen Seite navigieren, indem Sie einfach einen beliebigen Browser öffnen und versuchen, eine URL zu laden.
Mathias Bynens
2
Keine der Antworten beantwortet die Frage!
Tyilo

Antworten:

27

Sie können umbenennen

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

in

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

und du bist fertig. Die Passworteingabe erfolgt jetzt über den Browser Ihrer Wahl und kann mit 1 Passwort oder anderen Plugins gespeichert werden. Beachten Sie, dass es einige Zeit dauern kann, bis Ihre Sitzung abläuft, wenn Sie beim Umbenennen bereits angemeldet waren.

Leon
quelle
1
Ich freue mich darauf, dies zu testen :) Keine Nachteile?
Mathias Bynens
1
Dies mag zwar eine einfache (st?) Lösung sein, ich würde jedoch denken, dass die Antwort von cwd der richtige Weg ist, dies zu tun, obwohl es sich um eine administrative Lösung handelt. Es gibt bestimmte Dinge auf dem Mac, die Apple dazu zwingt, administrativ zu sein, wenn wir "anders denken" wollen als Apple.
David
In neueren Versionen von macOS müssen Sie den Systemintegritätsschutz deaktivieren, bevor Sie diese Datei umbenennen können. Ich bin nicht dagegen, das Systemmaterial bei Bedarf umzubenennen, aber in diesem Fall ist die Antwort von cwd besser.
Wowfunhappy
54

Ich habe gerade festgestellt, dass diese Option die Unterstützung für Captive-Netzwerke in OS X deaktiviert

Welche Erwähnungen "Um es zu deaktivieren, legen Sie diese Voreinstellung fest:"

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

Falls Sie diese Einstellung jemals entfernen möchten, haben Sie folgende Möglichkeiten:

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

Verwenden Sie dann, wie von @Leon erwähnt, den normalen Webbrowser, um sich anzumelden. Oder wenn Sie in einem Netzwerk sind, in dem das irgendwie nicht funktioniert, können Sie trotzdem versuchen, die App manuell zu öffnen (unter /System/Library/CoreServices/Captive Network Assistant.app).

cwd
quelle
2
cwd ++ Dies ist immer noch die beste Antwort. Heute auf Mojave konnte ich die Captive Network Assistant.app nicht umbenennen oder löschen, aber ich konnte die Deaktivierung über die
Standardeinstellungen
16

Tyilos NetworkAutoLogin-Projekt auf github ist ein os.x-Daemon, der sich mit vom Benutzer angegebenen Anmeldeinformationen "automatisch bei Captive Portal Networks anmeldet".

Es verwendet PhantomJS & CasperJS, um die erforderlichen Informationen in die Felder auf der Anmeldeseite des Captive-Portals zu schreiben. Dies kann das geheime Anmelde-Passwort, ein Benutzername-Passwort-Paar oder das Aktivieren eines EULA-Kontrollkästchens und der Schaltfläche "Verbinden" sein.

Ich kann mich nicht genau erinnern, wie es ausgelöst wurde, aber es registriert eine .plist mit launchctl.

Sie fügen Konfigurationsoptionen in eine JSON-Datei ein und geben dabei den Namen des Feldsatzes (optional) auf der Seite des Captive-Portals sowie die erforderlichen Paare aus Feldname und Inhalt (erforderlich) an. Hier ist ein Beispiel für die Konfigurationsdatei, die in gespeichert ist~/.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
quelle
1
es ist nicht verrückt, dass ein weiterer daemon im hintergrund
laufen muss
Ich habe es kompiliert, konnte aber den Daemon-Trigger nicht beobachten, wenn eine voreingestellte Anmeldeseite für das Captive-Netzwerk angezeigt wurde.
Mac Cowell
Ebenso (sogar auf die neuen Einstellungen in Yosemite + aktualisiert)
Jeef
6

Beendet das Löschen (oder Umbenennen) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistnicht die automatische Prüfung?

Es könnte zumindest das Öffnen des WebView-Popups stoppen.

Ersetzen Sie andernfalls alle darin enthaltenen URLs Settings.plistdurch eine lokal gehostete Kopie der success.htmlDatei und hosten Sie die success.htmlDatei auf Ihrem localhost-Webserver.

Pro Backup
quelle
3

In meinem Heimnetzwerk werden alle 5 Minuten unverlierbare Portalanforderungen angezeigt. Aber ich habe in der Datei /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist geändert

Zeichenfolge: http://www.apple.com/de/library/test/success.html bis http://captive.apple.com/hotspot-detect.html (ich meinte den Abschnitt ProbeURL). Apple hat die Sonden-URL für ein neues Betriebssystem geändert, ich weiß nicht warum, aber die neue URL-Antwort ist 200 (OK) und sollte funktionieren (ich habe das gleiche Problem bei meinen MBP 2011 Mavericks).

Alexander Unger
quelle
3

Mit Hilfe von AppleScript, Lynx, Fakeapp / Safari und ControlPlane ist mein MacBook jetzt immer automatisch mit dem Captive-Portal in meinem Büro verbunden. Es ist immer noch kein effizienter Weg, um es zu schaffen, aber es wird immer noch perfekt erledigt. Ich hoffe jemand kann es einfacher machen.

Hier ist der Code:

  1. Stellen Sie sicher, dass die SSID korrekt ist

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Überprüfen Sie die Existenz der Adresse des Captive-Portals

    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. Portalverbindung testen

    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. Beim Portal anmelden

    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. Speichern Sie diese Skripte als eine Anwendung. Verwenden Sie dann die ControlPlane-Regeln, um die Ausführung zu veranlassen, wenn sie mit der angegebenen SSID ausgelöst wird.

Sicherlich Anmeldeformular auf Captive kann andere HTML-Elemente haben. Sie können einige Anzeigedialoge oder Benachrichtigungen, eine andere SSID mit eigenen HTML-Elementen und Benutzernamen / Passwort hinzufügen. Fake ist ein Browser + Automator, der das Leben leichter macht.

Vergessen Sie nicht, das Popup für die unverlierbare Anmeldung zu deaktivieren. Jetzt verbindet sich Ihr Mac zu 100% automatisch mit dem Portal.

Ich hoffe, das hilft.

Koes N
quelle
2

Ein Captive-Portal ist kein Passwort. Es ist eher wie ein Anmeldeformular. Jedes Mal, wenn das Netzwerk, mit dem Sie verbunden sind, eine IP-Adresse über DHCP ausgibt, erhalten Sie das firmeneigene Portal, bei dem Sie sich anmelden bzw. der Sie zustimmen können, und können dann eine Verbindung herstellen. Soweit ich weiß, ist dies eine plattformübergreifende Einschränkung, die nicht geändert werden kann. Dies kann von den Netzwerkadministratoren geändert werden, hängt jedoch auch von der Art der verwendeten Geräte ab.

Matt Love
quelle
Sie haben absolut Recht, dass es eher wie ein Anmeldeblatt als ein Passwort ist, aber ich bin überrascht, dass es anscheinend keine einfache Möglichkeit gibt, dieses Blatt automatisch auszufüllen :) Unter iOS gibt es Apps, die sich darum kümmern können diese. Gibt es nicht etwas Ähnliches für OS X?
Mathias Bynens
Welche Apps für iOS können das? Müssten Sie diese App dann nicht zum Surfen im Internet usw. verwenden?
Matt Love
1
Die AutoWiFi- App übernimmt dies automatisch. Alles, was Sie tun müssen, ist einmal auf "Verbinden" zu klicken und Sie sind angemeldet.
Mathias Bynens
2

Obwohl diese Frage und Antwort schon ein paar Jahre alt ist, zeigt sie sich darin, dies zu googeln. Leider hat sich MacOS seitdem geändert. Diese Seite auf MacWorld aus dem Jahr 2016 scheint den aktuellen Stand zu beschreiben.

Was im Wesentlichen daran liegt, dass Sie wegen SIP den Assistenten nur im Wiederherstellungsmodus deaktivieren können. Ich habe noch keine Lösung für den anderen Teil dieser Frage gefunden: "Können wir die Anmeldung automatisieren?"

thoni56
quelle
1
In High Sierra scheint es nicht mehr möglich zu sein, Captive \ Network \ Assistant.app wie dort vorgeschlagen umzubenennen. Zumindest konnte ich nicht mal als root laufen.
Henry Story
Sie müssen die neueste MacOS-Betriebsschutzfunktion deaktivieren. support.intego.com/hc/en-us/articles/... Ich weiß nicht , ob dieser Ansatz noch funktioniert, aber zumindest können Sie jetzt versuchen.
historystamp
0

Sie können Mili verwenden , ein Open-Source-Tool, das ich für Hotspot-Seiten zur automatischen Anmeldung geschrieben habe. Es funktioniert auch unter Linux.

Wenn Sie Ihre WLAN-Verbindung ändern, sucht Mili nach Mikrotik-Diensten und versucht dann, sich mit Ihren Anmeldeinformationen anzumelden.

Sie können auch Multi-Login-Informationen wie diese verwenden:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}
Sadegh Hayeri
quelle
Willkommen bei Ask Different. Nach den Site-Regeln müssen Sie in Ihrer Antwort angeben, ob Sie mit der von Ihnen empfohlenen Software verbunden sind. In diesem Fall sind Sie der Autor, geben dies jedoch in Ihrer Antwort nicht an. Bitte sehen wie man Antwort für Informationen über Antworten hier die Bereitstellung und bearbeiten Sie Ihre Antwort , die fehlenden Informationen enthalten.
16.