วิธีลงชื่อเข้าใช้โดยอัตโนมัติเพื่อจับภาพพอร์ทัลบน OS X ได้อย่างไร


66

ฉันจะลงชื่อเข้าใช้เพื่อจับพอร์ทัลบน OS X โดยอัตโนมัติได้อย่างไร

พอร์ทัลที่ถูกใช้โดย (มักจะไม่ได้ป้องกันด้วยรหัสผ่าน) เครือข่ายไร้สายที่นำเสนอหน้าเว็บที่เร็วที่สุดเท่าที่คุณเชื่อมต่อกับพวกเขาต้องให้คุณเข้าสู่ระบบ

ฉันต้องลงชื่อเข้าใช้เครือข่ายไร้สายแบบนี้บ่อยมากและดูเหมือนว่าไม่มี Captive Portal ที่จะจำข้อมูลล็อกอิน / รหัสผ่านของฉันได้ มีวิธีที่จะทำให้กระบวนการเข้าสู่ระบบโดยอัตโนมัติหรืออย่างน้อยเก็บคู่เข้าสู่ระบบ / รหัสผ่านใน Keychain?

อัปเดต:มีแอป iOS ชื่อAutoWifiที่จัดการสิ่งนี้โดยทั่วไป หากเป็นไปได้ที่จะทำสิ่งนี้บน iOS โดยมีข้อ จำกัด ทั้งหมดมันต้องเป็นไปได้ไหมที่จะทำสิ่งนี้บน OS X ใช่ไหม?


ข้อเท็จจริงที่เกี่ยวข้องกับความสนุกสนาน: นี่คือวิธีที่ Apple ทำการทดสอบสำหรับ Captive Portal บน OS X และ iOS:

OS X และ iOS ทำการร้องขอhttp://www.apple.com/library/test/success.htmlทุกครั้งที่คุณเชื่อมต่อกับเครือข่าย WiFi

ในฐานะของโยเซมิตี URL ได้ในขณะนี้: http://captive.apple.com/hotspot-detect.html

URL นี้ส่งคืน HTML ดังต่อไปนี้:

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

1
ลองดูที่ /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist การจัดการการตั้งค่าที่นี่สามารถรวมความเสี่ยงด้านความปลอดภัยที่ร้ายแรงได้อย่างง่ายดายบนแอปเปิ้ลจำนวนมากได้นำไปใช้อย่างแน่นอนด้วยตนเอง ฉันไม่แน่ใจว่าเบราว์เซอร์ใดที่คุณใช้เชื่อมต่อผ่านทางพอร์ทัลที่เป็นเชลยเหล่านี้ แต่คุณสามารถลองตั้งค่าตำแหน่งเครือข่ายสำหรับพวกเขาหรือสร้างแมโครอย่างง่ายขึ้นอยู่กับสิ่งที่คุณต้องการเติมอัตโนมัติ
l'L'l

2
นั่นเป็นสิ่งที่ - เมื่อใดก็ตามที่ OS X ตรวจพบพอร์ทัลที่เป็นเชลยมันจะเปิดหน้าต่างป๊อปอัป WebView (ไม่ใช่ UI ของเบราว์เซอร์จริง) ด้วยหน้าเข้าสู่ระบบ
งัด Bynens

หากคุณมีโอกาสโพสต์ซอร์สโค้ดของป๊อปอัพ
l'L'l

@ioi แหล่งที่มาของหน้า HTML นั้นขึ้นอยู่กับเครือข่าย เมื่อคุณได้รับป๊อปอัพมันเป็นไปได้ที่จะเรียกดูหน้าเดียวกันโดยเพียงแค่เปิดเบราว์เซอร์ใด ๆ และพยายามโหลด URL
งัด Bynens

2
ไม่มีคำตอบที่ตอบคำถาม!
Tyilo

คำตอบ:


27

คุณสามารถเปลี่ยนชื่อ

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

เข้าไป

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

และคุณพร้อมแล้ว การป้อนรหัสผ่านจะทำได้ผ่านเบราว์เซอร์ที่คุณเลือกและสามารถจัดเก็บได้โดยใช้ 1 รหัสผ่านหรือปลั๊กอินอื่น ๆ โปรดทราบว่าหากคุณลงชื่อเข้าใช้แล้วในขณะที่ทำการเปลี่ยนชื่ออาจใช้เวลาสักครู่ก่อนที่เซสชันของคุณจะหมดอายุ ...


1
รอคอยที่จะทดสอบสิ่งนี้ :) ไม่มีข้อเสีย?
งัด Bynens

1
ในขณะนี้อาจเป็นวิธีที่ง่าย (st?) ฉันคิดว่าคำตอบของ cwd เป็นวิธีที่เหมาะสมในการทำแม้ว่าจะเป็น admin-ish มีบางสิ่งใน Mac ที่ Apple บังคับให้เราต้องเป็นผู้ดูแลระบบเมื่อเราต้องการ "คิดแตกต่าง" จาก Apple
David

ใน MacOS เวอร์ชันใหม่กว่าคุณจะต้องปิดการใช้งานการป้องกันความสมบูรณ์ของระบบก่อนจึงจะสามารถเปลี่ยนชื่อไฟล์นี้ได้ ฉันไม่ได้คัดค้านการเปลี่ยนชื่อระบบเมื่อจำเป็น แต่คำตอบของ cwd ดีกว่าในกรณีนี้
Wowfunhappy

54

เพิ่งพบการสนับสนุนเครือข่าย Disable Captive ใน OS X

ตัวเลือกใดที่กล่าวถึง "หากต้องการปิดใช้งานให้ตั้งค่ากำหนดนี้:"

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

ในกรณีที่คุณต้องการลบการตั้งค่านี้คุณสามารถทำได้:

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

จากนั้นตามที่ @Leon กล่าวถึงให้ใช้เว็บเบราว์เซอร์ทั่วไปเพื่อเข้าสู่ระบบ หรือถ้าคุณอยู่ในเครือข่ายที่ไม่สามารถใช้งานได้คุณสามารถลองเปิดแอปได้ด้วยตนเอง (อยู่ที่/System/Library/CoreServices/Captive Network Assistant.app)


2
cwd ++ นี่คือคำตอบที่ดีที่สุด วันนี้ในโมฮาวีฉันไม่สามารถเปลี่ยนชื่อหรือลบ Captive Network Assistant.app ได้ แต่ฉันสามารถบังคับให้ปิดการใช้งานผ่านค่าเริ่มต้นได้
danielpops

16

โครงการ NetworkAutoLoginของ Tyilo บน githubเป็น os.x daemon ที่ "เข้าสู่ระบบ Captive Portal Networks โดยอัตโนมัติ" โดยใช้ข้อมูลประจำตัวที่ผู้ใช้จัดหา

มันใช้ PhantomJS & CasperJS เพื่อโพสต์ข้อมูลที่จำเป็นไปยังเขตข้อมูลในหน้าล็อกอินพอร์ทัลเชลย อาจเป็น "รหัสผ่าน" เข้าสู่ระบบความลับคู่ชื่อผู้ใช้รหัสผ่านหรือเพียงแค่เปิดใช้งานช่องทำเครื่องหมาย EULA และปุ่ม "เชื่อมต่อ"

ฉันจำไม่ได้ว่ามันถูกกระตุ้นอย่างไร แต่มันลงทะเบียน. plist ด้วย launchctl

คุณใส่ตัวเลือกการกำหนดค่าลงในไฟล์ json โดยระบุชื่อของ fieldset (เป็นทางเลือก) บนเพจพอร์ทัล captive และคู่ fieldname + content ที่จำเป็น (จำเป็น) นี่คือตัวอย่างของไฟล์กำหนดค่าที่เก็บไว้~/.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
ไม่บ้าที่มันต้องมีดีมอนอีกตัวที่ทำงานในพื้นหลัง
cwd

ฉันได้รวบรวมแล้ว แต่ไม่สามารถสังเกตทริกเกอร์ daemon ได้เมื่อนำเสนอด้วยหน้าล็อกอินเครือข่ายที่กำหนดไว้ล่วงหน้า
Mac Cowell

ในทำนองเดียวกัน (ปรับปรุงให้เป็นการตั้งค่าใหม่ในโยเซมิตี +) ด้วย
ซ้ำ

6

ไม่ลบ (หรือเปลี่ยนชื่อ) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistหยุดการตรวจสอบอัตโนมัติใช่หรือไม่

อย่างน้อยก็สามารถหยุดการเปิดป๊อปอัปของ WebView ได้

มิฉะนั้นให้แทนที่ URL ทั้งหมดในนั้นSettings.plistด้วยสำเนาที่โฮสต์อยู่ในเครื่องของsuccess.htmlไฟล์และโฮสต์success.htmlไฟล์บนเว็บโฮสต์ในเครื่องของคุณ


3

ฉันเห็นคำขอพอร์ทัลที่ถูกจับในเครือข่ายในบ้านของฉันทุก 5 นาที แต่ฉันเปลี่ยนไฟล์/Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

string: http://www.apple.com/library/test/success.html ไปยังhttp://captive.apple.com/hotspot-detect.html (ฉันหมายถึงส่วน ProbeURL) แอปเปิ้ลเปลี่ยนโพรบ URL สำหรับระบบปฏิบัติการใหม่ฉันไม่รู้ว่าทำไม แต่การตอบสนอง URL ใหม่คือ 200 (OK) และควรใช้งานได้ (ฉันต้องเผชิญกับปัญหาเดียวกันใน mbp 2011 Mavericks ของฉัน)


3

ด้วยความช่วยเหลือในการใช้ AppleScript, Lynx, Fakeapp / Safari และ ControlPlane ทำให้ MacBook ของฉันเชื่อมต่อกับ Captive Portal โดยอัตโนมัติในสำนักงานของฉัน มันยังไม่ใช่วิธีที่มีประสิทธิภาพในการสร้างมัน แต่มันก็ยังทำงานได้อย่างสมบูรณ์ ฉันหวังว่าบางคนสามารถทำให้มันง่ายขึ้น

นี่คือรหัส:

  1. ตรวจสอบให้แน่ใจว่าเราอยู่ใน SSID ที่ถูกต้อง

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. ตรวจสอบการมีอยู่ของพอร์ทัล 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. ทดสอบการเชื่อมต่อพอร์ทัล

    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. ล็อกอินเข้าสู่พอร์ทัล

    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. บันทึกสคริปต์เหล่านั้นเป็นแอปพลิเคชันเดียว จากนั้นใช้กฎ ControlPlane เพื่อให้ทำงานเมื่อถูกเรียกด้วย SSID ที่ระบุ

แบบฟอร์มการเข้าสู่ระบบที่แน่นอนบนเชลยอาจมีองค์ประกอบ HTML อื่น คุณสามารถเพิ่มไดอะล็อกการแสดงผลหรือการแจ้งเตือน SSID อื่นที่แตกต่างกันด้วยองค์ประกอบ HTML ของตัวเองและชื่อผู้ใช้ / รหัสผ่าน Fake เป็นเบราว์เซอร์ + ระบบอัตโนมัติดังนั้นมันจะทำให้ชีวิตง่ายขึ้น

อย่าลืมปิดการใช้งานป๊อปอัพการเข้าสู่ระบบเชลย ตอนนี้ Mac ของคุณเชื่อมต่ออัตโนมัติ 100% กับพอร์ทัล

หวังว่าจะช่วย


2

พอร์ทัลแบบ Captive ไม่เหมือนกับรหัสผ่าน มันเหมือนเป็นแผ่นลงชื่อเข้าใช้ ทุกครั้งที่เครือข่ายของคุณเชื่อมต่อเพื่อแจกที่อยู่ IP ผ่าน DHCP นั้นจะช่วยให้คุณพอร์ทัลที่เป็นเชลยเพื่อลงชื่อเข้าใช้ / ตกลงและจากนั้นจะช่วยให้คุณสามารถเชื่อมต่อได้ จากสิ่งที่ฉันเข้าใจนี่เป็นข้อ จำกัด ข้ามแพลตฟอร์มที่ไม่สามารถเปลี่ยนแปลงได้ มันอาจจะเป็นสิ่งที่ผู้บริหารเครือข่ายสามารถเปลี่ยน แต่แม้ที่อาจขึ้นอยู่กับประเภทของอุปกรณ์ที่ใช้


คุณถูกต้องอย่างแน่นอนว่ามันเป็นเหมือนแผ่นลงชื่อเข้าใช้มากกว่ารหัสผ่าน แต่ฉันประหลาดใจที่ดูเหมือนว่าจะไม่สามารถป้อนแผ่นงานนี้ได้อย่างง่ายดาย :) บน iOS มีแอปที่สามารถดูแลได้ นี้. มีอะไรที่คล้ายกันสำหรับ OS X หรือไม่?
งัด Bynens

แอพใดสำหรับ iOS ที่สามารถทำได้ คุณจะไม่ต้องใช้แอพนั้นในการท่องเว็บหรือไม่?
แมตต์เลิฟ

1
AutoWiFiแอปจัดการนี้โดยอัตโนมัติ; สิ่งที่คุณต้องทำคือคลิก“ เชื่อมต่อ” เพียงครั้งเดียวและคุณเข้าสู่ระบบแล้ว
Mathias Bynens

2

แม้ว่าคำถามและคำตอบนี้จะมีอายุเพียงไม่กี่ปี น่าเสียดายที่ MacOS เปลี่ยนไปนับ แต่นั้นมา หน้านี้ใน MacWorld ตั้งแต่ปี 2016ดูเหมือนจะอธิบายสถานะปัจจุบัน (ณ วันที่เขียนนี้)

สิ่งสำคัญคือเนื่องจาก SIP คุณสามารถปิดใช้งานผู้ช่วยในโหมดการกู้คืนเท่านั้น ฉันยังไม่พบวิธีแก้ไขปัญหาในส่วนอื่น ๆ ของคำถามนี้ "เราจะทำการเข้าสู่ระบบอัตโนมัติได้หรือไม่"


1
ในเซียร์ราสูงดูเหมือนว่าจะไม่สามารถเปลี่ยนชื่อ Captive \ Network \ Assistant.app ได้อีกต่อไปตามที่แนะนำไว้ที่นั่น อย่างน้อยฉันก็ไม่สามารถแม้แต่จะทำงานในฐานะรูท
Henry Story

คุณต้องปิดการใช้งานคุณสมบัติการป้องกันการดำเนินงาน MacOS ล่าสุด support.intego.com/hc/en-us/articles/… ฉันไม่ทราบว่าวิธีการนี้ยังใช้งานได้ แต่อย่างน้อยตอนนี้คุณสามารถลอง
historystamp

0

คุณสามารถใช้Miliเครื่องมือโอเพนซอร์ซที่ฉันเขียนสำหรับหน้าฮอตสปอตล็อกอินอัตโนมัติ มันยังใช้งานได้บน Linux

เมื่อคุณเปลี่ยนการเชื่อมต่อ Wi-Fi Mili จะตรวจสอบบริการ Mikrotik แล้วพยายามลงชื่อเข้าใช้ด้วยข้อมูลเข้าสู่ระบบของคุณ

คุณยังสามารถใช้ข้อมูลการเข้าสู่ระบบแบบนี้:

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

ยินดีต้อนรับสู่ถามที่แตกต่างกัน กฎของไซต์กำหนดให้คุณต้องระบุคำตอบหากคุณเป็นพันธมิตรกับซอฟต์แวร์ที่คุณแนะนำ ในกรณีนี้คุณเป็นผู้เขียน แต่คุณไม่ได้ระบุสิ่งนี้ในคำตอบของคุณ โปรดดูวิธีการตอบสำหรับข้อมูลเกี่ยวกับการให้คำตอบที่นี่และแก้ไขคำตอบของคุณเพื่อรวมข้อมูลที่หายไป
fsb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.