Jak automatycznie zalogować się do niewoli portali w systemie OS X?

66

Jak mogę automatycznie zalogować się do portali internetowych w systemie OS X?

Captive portal jest używany przez (często nie chronione hasłem), sieci bezprzewodowych, które prezentują stronę internetową jak najszybciej połączyć się z nich, które wymagają, aby zalogować.

Muszę logować się bardzo często do różnych sieci bezprzewodowych i żaden z portali internetowych nie pamięta moich danych logowania / hasła. Czy istnieje sposób na zautomatyzowanie procesu logowania, a przynajmniej przechowywanie par login / hasło w pęku kluczy?

Aktualizacja: Istnieje aplikacja na iOS o nazwie AutoWifi, która zasadniczo to obsługuje. Jeśli można to zrobić na iOS z wszystkimi jego ograniczeniami, to na pewno musi być możliwe zrobienie czegoś takiego w OS X, prawda?


Powiązany ciekawy fakt: w ten sposób Apple testuje niewolne portale na OS X i iOS:

OS X i iOS wysyłają żądanie przy http://www.apple.com/library/test/success.htmlkażdym połączeniu z siecią Wi-Fi.

Począwszy od Yosemite, adres URL jest teraz: http://captive.apple.com/hotspot-detect.html

Ten adres URL zwraca następujący kod HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>
Mathias Bynens
źródło
1
Spójrz na /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. Manipulowanie tutaj preferencjami może z łatwością spotęgować poważne zagrożenia bezpieczeństwa w porównaniu z wieloma, które firma Apple zdecydowała się wdrożyć samodzielnie. Nie jestem pewien, jakiej przeglądarki używasz do łączenia się za pośrednictwem tych niewoli portali, ale możesz także spróbować skonfigurować dla nich lokalizacje sieciowe lub utworzyć proste makro w zależności od tego, co chcesz automatycznie wypełnić.
l'L'L
2
To jest to - za każdym razem, gdy OS X wykryje portal przechwytujący, otwiera wyskakujące okienko WebView (nie prawdziwy interfejs użytkownika przeglądarki) ze stroną logowania.
Mathias Bynens,
Jeśli masz szansę, opublikuj kod źródłowy wyskakującego okienka.
l'L'L
@ioi Źródło HTML strony zależy od sieci. Po wyświetleniu wyskakującego okienka można przejść do tej samej strony, po prostu otwierając dowolną przeglądarkę i próbując załadować adres URL.
Mathias Bynens,
2
Żadna z odpowiedzi nie odpowiada na pytanie!
Tyilo

Odpowiedzi:

27

Możesz zmienić nazwę

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

w

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

i wszystko gotowe. Wprowadzanie hasła odbywa się teraz w wybranej przeglądarce i może być przechowywane za pomocą 1 hasła lub innych wtyczek. Pamiętaj, że jeśli byłeś już zalogowany podczas zmiany nazwy, wygasanie sesji może trochę potrwać ...

Leon
źródło
1
Nie mogę się doczekać, aby to przetestować :) Żadnych wad?
Mathias Bynens,
1
Chociaż może to być proste (st?) Rozwiązanie, uważam, że odpowiedź cwd jest właściwym sposobem na zrobienie tego, nawet jeśli jest to administrator. Na Macu są pewne rzeczy, które Apple zmusza nas do administrowania, gdy chcemy „myśleć inaczej” niż Apple.
David
W nowszych wersjach systemu macOS konieczne będzie wyłączenie ochrony integralności systemu, zanim będzie można zmienić nazwę tego pliku. Nie jestem przeciwny zmianie nazwy rzeczy systemowych, gdy jest to konieczne, ale odpowiedź cwd jest lepsza w tym przypadku.
Wowfunhappy
54

Właśnie znalazłem to Wyłącz obsługę niewoli sieci w OS X.

Który wspomina „Aby go wyłączyć, ustaw tę preferencję:”

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

Na wypadek, gdybyś kiedykolwiek chciał usunąć to ustawienie, możesz:

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

Następnie, jak wspomina @Leon, użyj zwykłej przeglądarki internetowej, aby się zalogować. Lub jeśli jesteś w sieci, w której to jakoś nie działa, nadal możesz spróbować otworzyć aplikację ręcznie (znajdującą się pod adresem /System/Library/CoreServices/Captive Network Assistant.app)

cwd
źródło
2
cwd ++ To wciąż najlepsza odpowiedź. Dzisiaj w Mojave nie mogłem zmienić nazwy ani usunąć Captive Network Assistant.app, ale byłem w stanie wymusić wyłączenie za pomocą ustawień domyślnych
danielpops
16

Projekt NetworkAutoLogin firmy Tyilo na github to demon os.x, który „loguje się automatycznie w Captive Portal Networks” przy użyciu poświadczeń podanych przez użytkownika.

Korzysta z PhantomJS i CasperJS, aby opublikować niezbędne informacje w polach na stronie logowania do portalu. Może to być tajne „hasło” logowania, para nazwa użytkownika-hasło lub po prostu aktywacja pola wyboru EULA i przycisku „Połącz”.

Nie pamiętam dokładnie, w jaki sposób jest wyzwalany, ale rejestruje on .plist w launchctl.

Umieszczasz opcje konfiguracji w pliku json, określając nazwę zestawu pól (opcjonalnie) na stronie portalu w niewoli oraz niezbędne pary nazwa pola + pary treści (wymagane). Oto przykład pliku konfiguracyjnego przechowywanego w~/.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
źródło
1
nie jest szalone, że wymaga jeszcze innego demona do działania w tle
cwd
Skompilowałem go, ale nie byłem w stanie zaobserwować wyzwalacza demona, gdy przedstawiono mu wstępnie skonfigurowaną stronę logowania do sieci.
Mac Cowell,
Podobnie (nawet zaktualizowałem to do nowych ustawień w Yosemite +)
Jeef
6

Czy usunięcie (lub zmiana nazwy) nie /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistzatrzymuje automatycznego sondowania?

Może to przynajmniej zatrzymać otwieranie wyskakującego okienka WebView.

W przeciwnym razie zamień wszystkie adresy URL Settings.plistna lokalną hostowaną kopię success.htmlpliku i success.htmlumieść plik na lokalnym serwerze internetowym.

Pro Backup
źródło
3

Co 5 minut widzę żądania portalu w niewoli w mojej sieci domowej. Ale zmieniłem w pliku /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

ciąg: http://www.apple.com/library/test/success.html do http://captive.apple.com/hotspot-detect.html (miałem na myśli sekcję ProbeURL). Apple zmieniło adres URL sondy dla nowego systemu operacyjnego, nie wiem dlaczego, ale odpowiedź na nowy adres URL to 200 (OK) i powinna działać (miałem ten sam problem na moim MBP 2011 Mavericks).

Alexander Unger
źródło
3

Z pewną pomocą w korzystaniu z AppleScript, Lynx, Fakeapp / Safari i ControlPlane, mój MacBook zawsze teraz automatycznie łączy się z portalem dostępnym w moim biurze. Nadal nie jest to skuteczny sposób na zrobienie tego, ale nadal doskonale wykonuje pracę. Mam nadzieję, że ktoś może to uprościć.

Oto kod:

  1. Upewnij się, że mamy poprawny identyfikator SSID

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Sprawdź istnienie adresu w niewoli portalu

    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. Przetestuj połączenie z portalem

    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. Logowanie do portalu

    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. Zapisz te skrypty jako jedną aplikację. Następnie użyj reguł ControlPlane, aby uruchomić go po uruchomieniu z określonym SSID.

Z pewnością formularz logowania w niewoli może zawierać inne elementy HTML. Możesz dodać niektóre okna dialogowe lub powiadomienia, inny SSID z własnymi elementami HTML i nazwą użytkownika / hasłem. Fake to przeglądarka + automatyzator, więc ułatwi Ci życie.

Nie zapomnij wyłączyć wyskakujących okien logowania. Teraz Twój Mac w 100% automatycznie łączy się z portalem.

Mam nadzieję, że to pomaga.

Koes N.
źródło
2

Portal w niewoli nie przypomina hasła. To bardziej przypomina arkusz logowania. Za każdym razem, gdy sieć, z którą jesteś połączony, przekazuje adres IP przez DHCP, daje to portalowi dostępnemu do zalogowania się / wyrażenia zgody, a następnie umożliwia połączenie. Z tego, co rozumiem, jest to ograniczenie międzyplatformowe, którego nie można zmienić. Może to być coś, co administratorzy sieci mogą zmienić, ale nawet to może zależeć od rodzaju używanego sprzętu.

Matt Love
źródło
Masz całkowitą rację, że jest to bardziej arkusz logowania niż hasło, ale jestem zaskoczony, że nie wydaje się, aby był to łatwy sposób na automatyczne wypełnienie tego arkusza :) Na iOS są aplikacje, które mogą zająć się to. Czy nie ma czegoś podobnego dla OS X?
Mathias Bynens
Jakie aplikacje na iOS mogą to zrobić? Czy nie musiałbyś wtedy używać tej aplikacji do przeglądania stron internetowych itp.?
Matt Love
1
Aplikacja AutoWiFi obsługuje to automatycznie; wszystko, co musisz zrobić, to kliknąć raz „Połącz” i jesteś zalogowany.
Mathias Bynens
2

Chociaż kilka lat to pytanie i odpowiedź pokazuje, że Google go wysoko. Niestety MacOS zmienił się od tego czasu. Ta strona MacWorld z 2016 roku wydaje się opisywać aktualny stan (w chwili pisania).

Zasadniczo dlatego, że dzięki SIP możesz wyłączyć asystenta tylko w trybie odzyskiwania. Muszę jeszcze znaleźć rozwiązanie drugiej części tego pytania: „czy możemy zautomatyzować logowanie?”

thoni56
źródło
1
W High sierra nie wydaje się już możliwa zmiana nazwy Captive \ Network \ Assistant.app, jak tam sugerowano. Przynajmniej nie mogłem nawet uruchomić jako root.
Henry Story,
Musisz wyłączyć tę najnowszą funkcję ochrony operacyjnej MacOS. support.intego.com/hc/en-us/articles/… Nie wiem, czy to podejście nadal działa, ale przynajmniej teraz możesz spróbować.
historystamp
0

Możesz użyć Mili , narzędzia o otwartym kodzie źródłowym, które napisałem dla stron automatycznego logowania do hotspotów. Działa również w systemie Linux.

Po zmianie połączenia Wi-Fi Mili sprawdza usługi Mikrotik, a następnie próbuje zalogować się przy użyciu danych logowania.

Możesz również użyć informacji o wielokrotnym logowaniu, takich jak:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}
Sadegh Hayeri
źródło
Witamy w Zapytaj inaczej. Reguły witryny wymagają wskazania w odpowiedzi, czy jesteś powiązany z polecanym oprogramowaniem. W tym przypadku jesteś autorem, ale nie podajesz tego w swojej odpowiedzi. Zobacz Jak odpowiedzieć, aby uzyskać informacje na temat udzielania odpowiedzi tutaj i edytuj swoją odpowiedź, aby uwzględnić brakujące informacje.
fsb