登录校园Wi-Fi太繁琐,我用快捷指令来实现「一键登录」

放大字体  缩小字体 发布日期:2020-01-02  来源:来自互联网  作者:来自互联网  浏览次数:460
导读

在这背后,我们事实上是给学校校园网登录认证服务器发送了一个带有我们「账号」和「密码」的登录请求(实际来说可能是账号密码组合出的加密认证令牌),之后校园网认证服务器核实我们的身份,并反馈我们认证结果,给予…

Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。

编注:在与作者交流后,我们认为这套校园 Wi-Fi 自动登录的方法有其通用性,但需要各位读者根据自己的实际接口情况进行实现。也欢迎大家根据文中的思路,尝试使用不同的自动化工具。

BIT-Web 是北京理工大学校园 Wi-Fi,专门用于笔记本等桌面设备,另外还有 BIT-Mobile 用于移动设备。但是,BIT-Mobile 有时候并没有 BIT-Web 稳定,自动登录不是那么靠谱,我们也不能通过 BIT-Mobile 登录使用免费运营商宽带,这些场景下我们都需要在移动设备上连接至 BIT-Web 进行手动登录。

校园网 BIT-Web 和 BIT-Mobile 分别针对不同设备

最近我的同学跟我说,BIT-Web 的登录页面在移动端(尤其是 Android 平台)上不能正常的显示「密码管理器」,也就不能直接填充密码,每次都需要手动输入。这令人非常烦恼,如何才能实现在连接到 BIT-Web 上之后自动发送登录认证请求来连接至校园网呢?

实现思路

对于我的学校来说,登录至校园网的基本操作就是:

  • 连接到 BIT-Web
  • 在浏览器中打开 t 来重定向至登录页面 10.0.0.55
  • 输入账号密码并点击登录

在这背后,我们事实上是给学校校园网登录认证服务器发送了一个带有我们「账号」和「密码」的登录请求(实际来说可能是账号密码组合出的加密认证令牌),之后校园网认证服务器核实我们的身份,并反馈我们认证结果,给予上网权限。

BIT-Web 认证登录的具体请求参数

这样来说,我们事实上就只需要在每次连接至 BIT-Web 网络时,自动发送这一请求,即可实现自动登录校园网的功能。在 iOS 平台,我们有相当方便的工具来制作发送请求的脚本:快捷指令 Shortcuts,利用 Shortcuts 我们可以定制一个「动作」,实现自动登录的功能。

另外,iOS 13 里面的 Shortcuts 加入了全新的 Automation:基于场景的动作自动化执行功能。利用这一特性,我们就可以定义「连接到 Wi-Fi 名称为 BIT-Web 的网络」这一「触发器」,从而实现自动触发动作的能力。

好啦,万事俱备,我们开始实现吧~

操作步骤

接下来,我会以 iOS 的 Shortcuts 中「自动登录校园网」的实现为例,详细介绍我们具体如何实现这样的自动化操作功能。

首先需要说明的是,iOS 的 Shortcuts 里面能够执行的算法有限,但是就今天(2019.12.30)来说,我校校园网服务器的登录认证接口已经升级,需要进行加密运算生成登录令牌才能正确认证。考虑到我们的脚本仅仅在校园网内部可控环境下执行,这里我们退而求其次,使用旧接口: 直接发送明文账号密码进行认证的 API 来登录校园网。

明确网络请求参数

BIT-Web 的旧登录请求接口是如下配置的:

POST /include/auth_action.php HTTP/1.1

Content-Type: application/x-www-form-urlencoded

Host: 10.0.0.55:801

Content-Length: 75

action=login&username={YOUR_USERNAME}&password={YOUR_PASSWORD}&ac_id=8&save_me=1&ajax=1

其中 {YOUR_USERNAME} 以及 {YOUR_PASSWORD} 均为明文账密,我校曾经就是这样简单粗暴。简单在终端中用 cURL 工具进行测试,在连接 BIT-Web 且尚未登录的情况下,在终端中输入如下的命令:

curl --request POST \

--url 10.0.0.55:801/include/auth_action.php \

--header 'content-type: application/x-www-form-urlencoded' \

--data action=login \

--data username={YOUR_USERNAME} \

--data password={YOUR_PASSWORD} \

--data ac_id=8 \

--data save_me=1 \

--data ajax=1

将你自己的账号密码带入其中,如果得到类似下面的包含有 login_ok 的结果,同时你可以连接互联网,那么说明你的认证成功。

 
 
免责声明
• 
本文为会员免费发布,仅代表发布者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理。