如何在OS X上自动登录到强制门户?


66

如何在OS X上自动登录到强制门户?

一个强制网络门户是,一旦你连接到它们呈现一个网页(通常没有密码保护)的无线网络,需要您登录使用。

我必须经常这样登录到不同的无线网络,而且所有的强制门户似乎都不会记住我的登录名/密码信息。有没有办法以某种方式自动执行登录过程,或者至少将登录名/密码对存储在钥匙串中?

更新:有一个名为AutoWifi的iOS应用程序基本上可以解决此问题。如果可以不受所有限制地在iOS上执行此操作,那么肯定一定可以在OS X上执行类似操作,对吧?


相关有趣的事实: 这是Apple在OS X和iOS上测试强制门户的方式:

http://www.apple.com/library/test/success.html每当您连接到WiFi网络时,OS X和iOS都会发出请求。

从优胜美地开始,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)。
Mathias Bynens'4

如果您有机会发布弹出窗口的源代码。
l'l'l

@ioi页面的HTML源取决于网络。一旦弹出窗口,就可以通过打开任何浏览器并尝试加载URL来浏览到同一页面。
Mathias Bynens'4

2
没有任何答案可以回答问题!
Tyilo

Answers:


27

您可以重命名

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

进入

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

你们都准备好了。现在,可以通过您选择的浏览器输入密码,并且可以使用1password或其他插件进行存储。请注意,如果您在重命名时已经登录,则会话可能需要一些时间才能过期...


1
期待测试出来:)没有缺点?
Mathias Bynens

1
尽管这可能是简单的解决方案,但我认为cwd的答案是正确的方法,即使它是管理的。当我们想与苹果公司“有所不同”时,Mac上的某些事情会迫使苹果公司对我们进行管理。
大卫

在较新版本的macOS上,您需要先禁用系统完整性保护,然后才能重命名该文件。我不反对在必要时重命名系统内容,但在这种情况下,cwd的回答会更好。
Wowfunhappy

54

刚刚在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所述,使用常规Web浏览器登录。或者,如果您所在的网络因某种原因无法正常工作,那么您仍然可以尝试手动打开该应用(位于/System/Library/CoreServices/Captive Network Assistant.app


2
cwd ++这仍然是最佳答案。今天在Mojave上,我无法重命名或删除Captive Network Assistant.app,但是我可以通过默认设置强制禁用该功能
danielpops

16

Tyilo 在github上NetworkAutoLogin项目是os.x守护程序,它使用用户提供的凭据“自动登录到Captive Portal Networks”。

它使用PhantomJS和CasperJS将必要的信息发布到强制门户登录页面上的字段中。可以是秘密登录名“密码”,用户名-密码对,或者只是激活EULA复选框和“连接”按钮。

我不记得它是如何触发的,但是它在launchctl中注册了一个.plist。

您将配置选项放在json文件中,在强制门户网站页面上指定字段集的名称(可选),以及必需的字段名+内容对(必需)。这是存储在其中的配置文件的示例~/.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
并不疯狂,它要求在后台运行另一个守护程序
cwd14年

我已经对其进行了编译,但是在出现预设的强制网络登录页面时无法观察到守护程序触发器。
Mac Cowell 2014年

同样(将其更新为yosemite +中的新设置)
Jeef

6

不会删除(或重命名)/Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist自动探测吗?

它至少可以停止WebView弹出窗口的打开。

否则,将其中的所有URL替换Settings.plistsuccess.html文件的本地托管副本,然后将该文件托管在success.htmllocalhost网络服务器上。


3

我每隔5分钟就会在家庭网络上看到强制门户请求。但是我更改了文件/Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

字符串:http//www.apple.com/library/test/success.htmlhttp://captive.apple.com/hotspot-detect.html (我的意思是ProbeURL部分)。苹果更改了新操作系统的探测URL,我不知道为什么,但是新的URL响应为200(确定),并且可以正常工作(我在mbp 2011 Mavericks上遇到了同样的问题)。


3

在使用AppleScript,Lynx,Fakeapp / Safari和ControlPlane的一些帮助下,我的MacBook现在始终可以在办公室中自动连接到强制门户。这仍然不是一种有效的方法,但是仍然可以完美地完成工作。我希望有人可以简化它。

这是代码:

  1. 确保我们使用正确的SSID

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. 检查强制门户地址是否存在

    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元素。您可以添加一些显示对话框或通知,另一个具有自己的HTML元素和用户名/密码的不同SSID。Fake是浏览器+自动化器,因此可以使生活更轻松。

不要忘记禁用强制登录弹出窗口。现在,您的Mac 100%自动连接到门户。

希望能有所帮助。


2

强制门户不像密码。这更像是签到单。每次您连接的网络通过DHCP分发IP地址时,它都会为您提供强制登录和同意的门户,然后您就可以连接。据我了解,这是一个无法更改的跨平台限制。这可能是一些网络管理员可以更改,但即使这可能取决于设备的类型使用。


没错,它更像是登录表而不是密码,但令我惊讶的是似乎没有一种简单的方法可以自动填充此表:)在iOS上,有些应用程序可以处理这个。OS X没有类似的东西吗?
Mathias Bynens 2012年

iOS的哪些应用程序可以做到这一点?然后,您是否不必使用该应用程序进行网络浏览等?
Matt Love

1
AutoWiFi应用程序会自动处理这一点; 所有你所要做的就是点击“Connect”一次,你登录。
马蒂亚斯Bynens

2

尽管已有几年的历史了,但这个问题的答案却在谷歌搜索中显示出很高的意义。不幸的是,MacOS从那时起发生了变化。MacWorld自2016年以来的此页面似乎描述了当前(截至撰写本文时)状态。

实质上,这是因为使用SIP,您只能在恢复模式下禁用助手。对于该问题的其他部分,我还没有找到任何解决方案,“我们可以使登录自动化吗?”


1
在High sierra中,似乎不再可以按照此处的建议重命名Captive \ Network \ Assistant.app。至少我什至无法以root身份运行。
亨利故事

您需要禁用该最新的MacOS操作保护功能。support.intego.com/hc/zh-CN/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.