Bagaimana cara masuk secara otomatis ke portal captive pada OS X?

67

Bagaimana saya bisa masuk secara otomatis ke portal captive di OS X?

Sebuah captive portal digunakan oleh (sering tidak dilindungi sandi) jaringan wireless yang menyajikan halaman web segera setelah Anda terhubung ke mereka, membutuhkan Anda untuk login.

Saya harus sering masuk ke jaringan nirkabel yang berbeda seperti ini, dan sepertinya tidak ada portal yang mengingat informasi login / kata sandi saya. Apakah ada cara untuk mengotomatiskan proses login entah bagaimana, atau setidaknya menyimpan pasangan login / kata sandi di Keychain?

Pembaruan: Ada aplikasi iOS bernama AutoWifi yang pada dasarnya menangani ini. Jika dimungkinkan untuk melakukan ini di iOS dengan semua batasannya, tentunya harus dimungkinkan untuk melakukan hal seperti itu di OS X, bukan?


Fakta menyenangkan terkait: Inilah cara Apple menguji portal captive pada OS X dan iOS:

OS X dan iOS membuat permintaan ke http://www.apple.com/library/test/success.htmlsetiap kali Anda terhubung ke jaringan WiFi.

Pada Yosemite URL sekarang: http://captive.apple.com/hotspot-detect.html

URL ini mengembalikan HTML berikut:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>
Mathias Bynens
sumber
1
Lihatlah /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. Memanipulasi preferensi di sini dapat dengan mudah menambah risiko keamanan serius di atas yang sudah banyak diterapkan oleh Apple. Saya tidak yakin browser mana yang Anda gunakan untuk terhubung melalui portal captive ini, tetapi Anda juga dapat mencoba mengatur lokasi jaringan untuk mereka, atau membuat makro sederhana tergantung pada apa yang ingin Anda isi otomatis.
l'L'l
2
Itulah masalahnya - setiap kali OS X mendeteksi portal captive, ia membuka jendela pop-up WebView (bukan UI browser asli) dengan halaman login.
Mathias Bynens
Jika Anda memiliki kesempatan memposting kode sumber popup.
l'L'l
@ ii Sumber HTML halaman tergantung pada jaringan. Setelah Anda mendapatkan popup, Anda dapat menelusuri halaman yang sama hanya dengan membuka browser apa saja dan mencoba memuat URL.
Mathias Bynens
2
Tidak ada jawaban yang menjawab pertanyaan itu!
Tyilo

Jawaban:

28

Anda bisa mengganti nama

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

ke

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

dan Anda sudah siap. Memasukkan kata sandi sekarang dilakukan melalui browser pilihan Anda dan dapat disimpan menggunakan 1 kata sandi atau plugin lainnya. Perhatikan bahwa jika Anda sudah masuk saat melakukan penggantian nama, mungkin perlu beberapa saat hingga sesi Anda berakhir ...

Leon
sumber
1
Menantikan untuk menguji ini :) Tidak ada kerugian?
Mathias Bynens
1
Walaupun ini mungkin solusi sederhana (st?), Saya akan berpikir jawaban cwd adalah cara yang tepat untuk melakukannya meskipun itu admin-ish. Ada beberapa hal di Mac yang memaksa Apple untuk menjadi admin-ish, ketika kita ingin "berpikir berbeda" dari Apple.
David
Pada versi macOS yang lebih baru, Anda harus menonaktifkan Perlindungan Integritas Sistem sebelum Anda dapat mengganti nama file ini. Saya tidak menentang mengubah nama hal-hal sistem bila perlu, tetapi jawaban cwd lebih baik dalam hal ini.
Wowfunhappy
54

Baru saja menemukan Dukungan Nonaktifkan Jaringan Captive ini di OS X

Yang menyebutkan "Untuk menonaktifkannya, setel preferensi ini:"

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

Jika Anda ingin menghapus pengaturan ini, Anda dapat melakukan:

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

Kemudian, seperti yang disebutkan @Leon, gunakan browser web biasa untuk login. Atau jika Anda berada di jaringan yang entah bagaimana tidak berfungsi maka Anda masih dapat mencoba dan membuka aplikasi secara manual (terdapat di /System/Library/CoreServices/Captive Network Assistant.app)

cwd
sumber
2
cwd ++ Ini masih jawaban terbaik. Hari ini di Mojave, saya tidak dapat mengubah nama atau menghapus Captive Network Assistant.app, tetapi saya dapat memaksa penonaktifan melalui default
danielpops
16

Proyek NetworkAutoLogin Tyilo di github adalah daemon os.x yang "Secara otomatis masuk ke Captive Portal Networks" dengan kredensial yang disediakan pengguna.

Ini menggunakan PhantomJS & CasperJS untuk mengirim info yang diperlukan ke bidang pada halaman login portal captive. Bisa berupa "kata sandi" login rahasia, pasangan nama pengguna-kata sandi, atau hanya mengaktifkan kotak centang EULA dan tombol "hubungkan".

Saya tidak ingat persis bagaimana itu dipicu, tetapi ia mendaftar .plist dengan launchctl.

Anda memasukkan opsi konfigurasi dalam file json, menentukan nama fieldset (opsional) pada halaman portal captive dan fieldname yang diperlukan + pasangan konten (diperlukan). Berikut adalah contoh file konfigurasi yang disimpan di~/.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
sumber
1
tidak gila karena itu membutuhkan daemon lain untuk berjalan di latar belakang
cwd
Saya telah mengkompilasinya tetapi tidak dapat mengamati pemicu daemon ketika disajikan dengan halaman login jaringan captive preset.
Mac Cowell
Demikian juga (bahkan memperbaruinya ke pengaturan baru di yosemite +)
ampun
6

Tidak menghapus (atau mengganti nama) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistmenghentikan pencarian otomatis?

Setidaknya bisa menghentikan pembukaan popup WebView.

Jika tidak, ganti semua URL di dalamnya Settings.plistdengan salinan lokal success.htmlfile yang di-host dan host success.htmlfile di server web hosting Anda.

Pro Backup
sumber
3

Saya melihat permintaan portal captive di jaringan rumah saya setiap 5 menit. Tetapi saya telah mengubah file /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

string: http://www.apple.com/library/test/success.html ke http://captive.apple.com/hotspot-detect.html (maksud saya bagian ProbeURL). apple mengubah URL probe untuk OS baru, saya tidak tahu mengapa, tetapi respon URL baru adalah 200 (OK) dan seharusnya berfungsi (saya menghadapi masalah yang sama pada mbp 2011 Mavericks).

Alexander Unger
sumber
3

Dengan bantuan menggunakan AppleScript, Lynx, Fakeapp / Safari, dan ControlPlane, MacBook Saya sekarang selalu terhubung ke portal captive secara otomatis di kantor saya. Ini masih bukan cara yang efisien untuk membuatnya, tetapi masih menyelesaikan pekerjaan dengan sempurna. Saya harap seseorang dapat membuatnya lebih sederhana.

Ini kodenya:

  1. Pastikan kita berada dalam SSID yang benar

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Periksa keberadaan alamat portal 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. Uji koneksi 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. Masuk ke 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. Simpan skrip-skrip itu sebagai satu aplikasi. Kemudian gunakan aturan ControlPlane untuk membuatnya berjalan ketika dipicu dengan SSID yang ditentukan.

Tentunya form login captive mungkin memiliki elemen HTML lain. Anda dapat menambahkan beberapa dialog tampilan atau pemberitahuan, SSID lain yang berbeda dengan elemen HTML sendiri dan nama pengguna / kata sandi. Fake adalah browser + automator, sehingga akan membuat hidup lebih mudah.

Jangan lupa untuk menonaktifkan popup login captive. Sekarang Mac Anda 100% terhubung secara otomatis ke portal.

Semoga itu bisa membantu.

Koes N
sumber
2

Portal tawanan tidak seperti kata sandi. Ini lebih seperti lembar masuk. Setiap kali jaringan Anda terhubung untuk membagikan alamat IP melalui DHCP, itu memberi Anda captive portal untuk masuk / setuju dan kemudian memungkinkan Anda untuk terhubung. Dari apa yang saya mengerti, ini adalah batasan lintas platform yang tidak dapat diubah. Ini mungkin menjadi sesuatu yang administrator jaringan bisa berubah, tapi bahkan yang mungkin tergantung pada jenis peralatan yang digunakan.

Matt Love
sumber
Anda memang benar bahwa ini lebih seperti lembar masuk daripada kata sandi, tapi saya terkejut sepertinya tidak ada cara mudah untuk mengisi ulang lembar ini :) Di iOS, ada aplikasi yang dapat menangani ini. Apakah tidak ada yang serupa untuk OS X?
Mathias Bynens
Aplikasi apa untuk iOS yang dapat melakukan ini? Bukankah Anda kemudian harus menggunakan aplikasi itu untuk menjelajah web, dll.?
Matt Love
1
The AutoWiFi aplikasi menangani ini secara otomatis; yang harus Anda lakukan adalah mengklik "Sambungkan" sekali dan Anda masuk.
Mathias Bynens
2

Meskipun beberapa tahun pertanyaan dan jawaban ini menunjukkan tinggi dalam googling ini. Sayangnya MacOS telah berubah sejak saat itu. Halaman ini pada MacWorld dari 2016 tampaknya menggambarkan keadaan saat ini (saat penulisan ini).

Yang pada dasarnya adalah bahwa karena SIP Anda dapat menonaktifkan asisten hanya dalam mode pemulihan. Saya belum menemukan solusi untuk bagian lain dari pertanyaan ini, "bisakah kita mengotomatiskan login?"

thoni56
sumber
1
Dalam sierra Tinggi, tampaknya tidak mungkin lagi untuk mengubah nama Captive \ Network \ Assistant.app seperti yang disarankan di sana. Setidaknya saya tidak bisa bahkan ketika menjalankan sebagai root.
Henry Story
Anda perlu menonaktifkan fitur perlindungan operasi MacOS terbaru. support.int.co.com/hc/en-us/articles/... Saya tidak tahu apakah pendekatan ini masih berfungsi, tetapi setidaknya Anda sekarang dapat mencoba.
historystamp
0

Anda dapat menggunakan Mili , alat open-source yang saya tulis untuk halaman hotspot login otomatis. Ini juga berfungsi di Linux.

Ketika Anda mengubah koneksi Wi-Fi Anda, Mili memeriksa layanan Mikrotik dan kemudian mencoba masuk dengan informasi login Anda.

Anda juga dapat menggunakan informasi multi-login seperti ini:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}
Sadegh Hayeri
sumber
Selamat Datang di Tanya Berbeda. Aturan situs mengharuskan Anda menunjukkan dalam jawaban Anda jika Anda berafiliasi dengan perangkat lunak yang Anda rekomendasikan. Dalam hal ini, Anda adalah pembuatnya tetapi Anda tidak menyatakannya dalam jawaban Anda. Silakan lihat Cara Menjawab untuk info tentang cara memberikan jawaban di sini dan edit jawaban Anda untuk memasukkan info yang hilang.
fsb