连接 wifi 后会弹出一个独立窗口,地址是 captive.apple.com ,这里不像 safari 可以自动填充密码,每次都要手动输入很累,有办法记住密码吗? 除此之外还有个想法,可以分析服务器接口,写个脚本自动发送账户密码吗?
问题已经解决,详细过程参考这里 需要captive portal方式认证WiFi的自动登录方法
1
zander 2016-06-17 00:18:12 +08:00
https://support.apple.com/en-us/HT204497
Turn Auto-Join off if you don't want to connect automatically. Turn Auto-Login off to skip the Welcome screen the next time you connect to the network. 记不住是服务器设置问题,不让你自动登。 |
2
hxsf 2016-06-17 00:48:05 +08:00 via Android
@zander 这段话是 开关 1 控制 “是否自动连接这个 wifi ”, 开关二控制 “是否自动弹出登录窗口(如果需要登录)”
哪里来的服务器设置 |
3
hxsf 2016-06-17 00:50:50 +08:00 via Android
当然可以写个脚本。
关掉自动弹出的登录窗口,打开 chrome ,随便打开个 url , 302 到登录界面,打开 chrome 调试器的 network ,输入账号密码登录, devtool 里看发生了啥。然后根据这个写个 curl 命令就行。 我之前干过,环境是锐捷的 web 认证。 |
6
appstore54321 OP @hxsf
这是我在 chrome 里看到的 portal.js 的一部分: $("form#loginForm").submit(function() { // loginForm is submitted var username = $('#username').val(); // get username var password = $('#password').val(); // get password if (username && password) { // values are not empty $.ajax({ type: "POST", url: "login.php", // URL of the PHP script contentType: "application/json; charset=utf-8", dataType: "json", cache: false, // send username and password as parameters to the Perl script data: {username:username, password:password}, // script call was *not* successful error: function(XMLHttpRequest, textStatus, errorThrown) { /*$('div#loginResult').text("responseText: " + XMLHttpRequest.responseText + ", textStatus: " + textStatus + ", errorThrown: " + errorThrown);*/ $('div#loginResult').text("Internal Error, Login Failed!"); $('div#loginResult').addClass("error"); } ,succes: })} 是不是这样的代码就可以实现所需的功能? curl -H "Content-Type: application/json" -X POST -d '{"username":"123","password":"abc"}' login.php 如果认证页面是 https 的,这样明文发送密码也可以吧... |
7
hxsf 2016-06-17 21:28:05 +08:00
r#6 @appstore54321 右击 post 的那条 request ,选复制成 curl ,如图。
看看里面有没有什么是变量,然后写到 shell 脚本里就好。 其他语言脚本的话。照着 post 传递的数据自己写就好了。 |
8
appstore54321 OP @hxsf 感谢回复,这个方法很方便,学习到了。我已经把 curl 命令保存成一个 sh 文件,添加到开机启动项里就可以自动登录了,但是发现每次打开 wifi 登录界面自动弹出的情况下,浏览器和终端是连接不到网络的,没有办法登录,只有手动关闭窗口才能正常登录,而且至少要关两次,所以我搜索到了这个问题 http://apple.stackexchange.com/questions/45418/how-to-automatically-login-to-captive-portals-on-os-x (其实早就该自己 Google ,很惭愧),答案提到这个命令
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -boolean false 就可以禁止自动弹出登录页面了,这个问题应该算是解决了。 还有一个问题,有可以代替手工关掉这个窗口的脚本命令吗?或者是检测这个窗口是否处于打开的状态? AppleScript 似乎可以关闭某个程序的窗口,但是这个窗口属于哪个程序吗? |