Làm cách nào để tự động đăng nhập vào cổng bị khóa trên OS X?


66

Làm cách nào tôi có thể tự động đăng nhập vào cổng bị khóa trên OS X?

Một cổng bị khóa được sử dụng bởi các mạng không dây (thường không được bảo vệ bằng mật khẩu) có trang web ngay khi bạn kết nối với chúng, yêu cầu bạn phải đăng nhập.

Tôi phải đăng nhập vào các mạng không dây khác nhau như thế này rất thường xuyên và không có cổng thông tin bị giam giữ nào có vẻ nhớ thông tin đăng nhập / mật khẩu của tôi. Có cách nào để tự động hóa quá trình đăng nhập bằng cách nào đó hoặc ít nhất là lưu trữ các cặp đăng nhập / mật khẩu trong Keychain không?

Cập nhật: Có một ứng dụng iOS có tên AutoWifi xử lý việc này. Nếu có thể làm điều này trên iOS với tất cả các hạn chế của nó, chắc chắn nó có thể làm điều gì đó giống như trên OS X, phải không?


Sự thật thú vị liên quan: Đây là cách Apple kiểm tra các cổng bị khóa trên OS X và iOS:

OS X và iOS đưa ra yêu cầu http://www.apple.com/library/test/success.htmlmỗi khi bạn kết nối với mạng WiFi.

Kể từ Yosemite , URL hiện tại: http://captive.apple.com/hotspot-detect.html

URL này trả về HTML sau:

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

1
Hãy xem /L Library / Repferences / SystemConfiguration / LifeNetworkSupport / Settings.plist. Thao tác các ưu tiên ở đây có thể dễ dàng gộp các rủi ro bảo mật nghiêm trọng lên trên nhiều Apple đã quyết định tự thực hiện. Tôi không chắc chắn bạn sử dụng trình duyệt nào để kết nối qua các cổng bị khóa này, nhưng bạn cũng có thể thử thiết lập vị trí mạng cho chúng hoặc tạo một macro đơn giản tùy thuộc vào những gì bạn muốn tự động điền.
Tôi sẽ là

2
Đó là điều - bất cứ khi nào OS X phát hiện cổng bị khóa, nó sẽ mở cửa sổ bật lên WebView (không phải giao diện người dùng trình duyệt thực) với trang đăng nhập.
Mathias Bynens

Nếu bạn có cơ hội đăng mã nguồn của cửa sổ bật lên.
Tôi sẽ

@ioi Nguồn HTML của trang phụ thuộc vào mạng. Khi bạn nhận được cửa sổ bật lên, có thể duyệt đến cùng một trang bằng cách chỉ cần mở bất kỳ trình duyệt nào và cố gắng tải URL.
Mathias Bynens

2
Không có câu trả lời nào trả lời câu hỏi!
Tyilo

Câu trả lời:


27

Bạn có thể đổi tên

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

vào

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

và bạn đã sẵn sàng. Nhập mật khẩu ngay bây giờ thông qua trình duyệt bạn chọn và có thể được lưu trữ bằng cách sử dụng 1 mật khẩu hoặc các plugin khác. Lưu ý rằng nếu bạn đã đăng nhập trong khi thực hiện đổi tên, có thể mất một thời gian để phiên của bạn hết hạn ...


1
Nhìn về phía trước để thử nghiệm điều này :) Không có nhược điểm?
Mathias Bynens

1
Mặc dù đây có thể là giải pháp đơn giản (st?), Tôi nghĩ rằng câu trả lời của cwd là cách thích hợp để thực hiện mặc dù đó là quản trị viên. Có một số điều nhất định trên Mac mà Apple buộc chúng ta phải là quản trị viên, khi chúng ta muốn "nghĩ khác" với Apple.
David

Trên các phiên bản macOS mới hơn, bạn sẽ cần phải tắt Bảo vệ toàn vẹn hệ thống trước khi bạn có thể đổi tên tệp này. Tôi không phản đối việc đổi tên các công cụ hệ thống khi cần thiết, nhưng câu trả lời của cwd sẽ tốt hơn trong trường hợp này.
Wowfunhappy

54

Chỉ tìm thấy điều này Vô hiệu hóa Hỗ trợ mạng Captive trong OS X

Mà đề cập "Để vô hiệu hóa nó, đặt tùy chọn này:"

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

Trong trường hợp, bạn muốn xóa cài đặt này, bạn có thể làm:

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

Sau đó, như @Leon đề cập, hãy sử dụng trình duyệt web thông thường để đăng nhập. Hoặc nếu bạn đang ở trên mạng mà bằng cách nào đó không hoạt động thì bạn vẫn có thể thử và mở ứng dụng theo cách thủ công (nằm ở /System/Library/CoreServices/Captive Network Assistant.app)


2
cwd ++ Đây vẫn là câu trả lời tốt nhất. Hôm nay trên Mojave, tôi không thể đổi tên hoặc xóa Captive Network Assistant.app, nhưng tôi đã có thể buộc vô hiệu hóa thông qua mặc định
danielpops 10/11/18

16

Dự án NetworkAutoLogin của Tyilo trên github là một trình nền os.x "Tự động đăng nhập vào Mạng Cổng thông tin Captive" với thông tin đăng nhập do người dùng cung cấp.

Nó sử dụng PhantomJS & CasperJS để đăng thông tin cần thiết lên các trường trên trang đăng nhập cổng bị khóa. Có thể là "mật khẩu" đăng nhập bí mật, cặp mật khẩu tên người dùng hoặc chỉ kích hoạt hộp kiểm EULA và nút "kết nối".

Tôi không thể nhớ chính xác nó được kích hoạt như thế nào, nhưng nó đăng ký một .plist với launchctl.

Bạn đặt các tùy chọn cấu hình trong tệp json, chỉ định tên của bộ trường (tùy chọn) trên trang cổng thông tin bị giam giữ và các cặp tên trường + nội dung cần thiết (bắt buộc). Đây là một ví dụ về tập tin cấu hình được lưu trữ trong~/.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
không điên rồ khi nó yêu cầu một trình nền khác chạy trong nền
cwd

Tôi đã biên dịch nó nhưng không thể quan sát trình kích hoạt daemon khi được trình bày với trang đăng nhập mạng bị giam giữ đặt trước.
Mac Cowell

Tương tự như vậy (thậm chí đã cập nhật nó lên cài đặt mới trong yosemite +)
Jeef

6

Không xóa (hoặc đổi tên) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistdừng tự động dò tìm?

Nó ít nhất có thể dừng việc mở cửa sổ bật lên WebView.

Mặt khác, thay thế tất cả các URL trong đó Settings.plistbằng một bản sao lưu trữ cục bộ của success.htmltệp và lưu trữ success.htmltệp trên máy chủ web localhost của bạn.


3

Tôi thấy các yêu cầu cổng bị khóa trên mạng gia đình của tôi cứ sau 5 phút. Nhưng tôi đã thay đổi trong tệp / L Library / Corrferences / SystemConfiguration / HolyNetworkSupport / Cài đặt.plist

chuỗi: http://www.apple.com/l Library / test / success.html đến http://captive.apple.com/hotspot-detect.html (ý tôi là phần thăm dò). apple đã thay đổi URL thăm dò cho hệ điều hành mới, tôi không biết tại sao, nhưng phản hồi URL mới là 200 (OK) và sẽ hoạt động (Tôi đã gặp vấn đề tương tự trên Mavericks mbp 2011 của tôi).


3

Với một số trợ giúp sử dụng AppleScript, Lynx, Fak Ứng dụng / Safari và ControlPlane, MacBook của tôi giờ đây luôn tự động được kết nối với cổng bị khóa trong văn phòng của tôi. Nó vẫn không phải là một cách hiệu quả để làm cho nó, nhưng nó vẫn hoàn thành công việc một cách hoàn hảo. Tôi hy vọng ai đó có thể làm cho nó đơn giản hơn.

Đây là mã:

  1. Hãy chắc chắn rằng chúng tôi đang ở trong SSID chính xác

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Kiểm tra sự tồn tại của địa chỉ cổng bị khóa

    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. Kiểm tra kết nối cổng thông tin

    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. Đăng nhập vào cổng thông tin

    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. Lưu các tập lệnh như một ứng dụng. Sau đó sử dụng quy tắc ControlPlane để làm cho nó chạy khi được kích hoạt với SSID được chỉ định.

Chắc chắn hình thức đăng nhập trên captive có thể có các yếu tố HTML khác. Bạn có thể thêm một số hộp thoại hiển thị hoặc thông báo, một SSID khác với các thành phần HTML và tên người dùng / mật khẩu riêng của nó. Fake là một trình duyệt + tự động hóa, vì vậy nó sẽ làm cho cuộc sống dễ dàng hơn.

Đừng quên tắt popup đăng nhập bị giam cầm. Bây giờ Mac của bạn tự động kết nối 100% với cổng thông tin.

Mong rằng sẽ giúp.


2

Một cổng bị giam cầm không giống như một mật khẩu. Nó giống như một dấu hiệu trong tờ. Mỗi khi mạng bạn được kết nối để phát địa chỉ IP thông qua DHCP, nó sẽ cung cấp cho bạn cổng bị khóa để đăng nhập / đồng ý và sau đó cho phép bạn kết nối. Theo những gì tôi hiểu, đây là một hạn chế đa nền tảng không thể thay đổi. Nó có thể là một cái gì đó mà các quản trị viên mạng có thể thay đổi, nhưng thậm chí điều đó có thể phụ thuộc vào loại thiết bị được sử dụng.


Bạn hoàn toàn đúng khi nói nó giống như một tấm đăng nhập hơn là mật khẩu, nhưng tôi ngạc nhiên rằng dường như không có cách nào dễ dàng để tự động điền trang này :) Trên iOS, có những ứng dụng có thể chăm sóc điều này. Không có gì tương tự cho OS X?
Mathias Bynens

Ứng dụng nào cho iOS có thể làm điều này? Sau đó, bạn có phải sử dụng ứng dụng đó để duyệt web không, v.v.?
Matt yêu

1
Các AutoWiFi ứng dụng xử lý này sẽ tự động; tất cả những gì bạn phải làm là nhấp vào Kết nối mối quan hệ một lần và bạn đã đăng nhập.
Mathias Bynens

2

Mặc dù một vài năm tuổi, câu hỏi và câu trả lời này cho thấy rất cao trong việc này. Thật không may, MacOS đã thay đổi kể từ đó. Đây trang trên MacWorld từ năm 2016 dường như để mô tả hiện hành (như các văn bản này) nhà nước.

Về cơ bản là do SIP, bạn chỉ có thể vô hiệu hóa trợ lý trong chế độ khôi phục. Tôi vẫn chưa tìm thấy bất kỳ giải pháp nào cho phần khác của câu hỏi này, "chúng ta có thể tự động hóa đăng nhập không?"


1
Trong High sierra dường như không còn có thể đổi tên Captive \ Network \ Assistant.app như đề xuất ở đó. Ít nhất tôi không thể ngay cả khi chạy bằng root.
Câu chuyện Henry

Bạn cần phải tắt tính năng bảo vệ vận hành MacOS mới nhất đó. support.intego.com/hc/en-us/articles/ Từ Tôi không biết cách tiếp cận này có còn hiệu quả không, nhưng ít nhất bây giờ bạn có thể thử.
lịch sử

0

Bạn có thể sử dụng Mili , một công cụ nguồn mở mà tôi đã viết cho các trang hotspot đăng nhập tự động. Nó cũng hoạt động trên Linux.

Khi bạn thay đổi kết nối Wi-Fi, Mili sẽ kiểm tra các dịch vụ Mikrotik và sau đó cố gắng đăng nhập bằng thông tin đăng nhập của bạn.

Bạn cũng có thể sử dụng thông tin đa đăng nhập như thế này:

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

Chào mừng bạn đến hỏi khác nhau. Quy tắc trang web yêu cầu bạn chỉ ra trong câu trả lời của mình nếu bạn liên kết với phần mềm bạn đề xuất. Trong trường hợp này, bạn là tác giả nhưng bạn không nêu điều này trong câu trả lời của mình. Vui lòng xem Cách trả lời để biết thông tin về việc cung cấp câu trả lời tại đây và chỉnh sửa câu trả lời của bạn để bao gồm thông tin còn thiếu.
fsb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.