ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网

Matrix 精选
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
编注:在与作者交流后,我们认为这套校园 Wi-Fi 自动登录的方法有其通用性,但需要各位读者根据自己的实际接口情况进行实现。也欢迎大家根据文中的思路,尝试使用不同的自动化工具。
BIT-Web 是北京理工大学校园 Wi-Fi,专门用于笔记本等桌面设备,另外还有 BIT-Mobile 用于移动设备。但是,BIT-Mobile 有时候并没有 BIT-Web 稳定,自动登录不是那么靠谱,我们也不能通过 BIT-Mobile 登录使用免费运营商宽带,这些场景下我们都需要在移动设备上连接至 BIT-Web 进行手动登录。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
校园网 BIT-Web 和 BIT-Mobile 分别针对不同设备
最近我的同学跟我说,BIT-Web 的登录页面在移动端(尤其是 Android 平台)上不能正常的显示「密码管理器」,也就不能直接填充密码,每次都需要手动输入。这令人非常烦恼,如何才能实现在连接到 BIT-Web 上之后自动发送登录认证请求来连接至校园网呢?
实现思路
对于我的学校来说,登录至校园网的基本操作就是:连接到 BIT-Web
在浏览器中打开网址 t.cn 来重定向至登录页面 10.0.0.55
输入账号密码并点击登录
在这背后,我们事实上是给学校校园网登录认证服务器发送了一个带有我们「账号」和「密码」的登录请求(实际来说可能是账号密码组合出的加密认证令牌),之后校园网认证服务器核实我们的身份,并反馈我们认证结果,给予上网权限。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
BIT-Web 认证登录的具体请求参数
这样来说,我们事实上就只需要在每次连接至 BIT-Web 网络时,自动发送这一请求,即可实现自动登录校园网的功能。在 iOS 平台,我们有相当方便的工具来制作发送请求的脚本:快捷指令 Shortcuts,利用 Shortcuts 我们可以定制一个「动作」,实现自动登录的功能。
【ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网】另外,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 http://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 的结果,同时你可以连接互联网,那么说明你的认证成功。 注意:这里如果登录失败,校园网认证服务器会直接返回登录失败的原因。比如:已欠费、密码错误等。按照错误信息进行相应的调试即可。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
cURL 测试 BIT-Web 登录认证效果
上面的 HTTP 请求我来简单分解介绍一下。首先,请求是 POST 的方法,格式为 application/x-www-form-urlencoded,请求地址(即 url 地址)为 http://10.0.0.55:801/include/auth_action.php,参数分别为:参数值功能actionlogin设置动作为登录
username{YOUR_USERNAME}发送账户(即学号)
password{YOUR_PASSWORD}发送校园网密码
ac_id8代表登录 BIT-Web(BIT-Mobile 登录请求的 ac_id 不一样)
save_me1保存当前登录 session
ajax1(猜测)表示异步发送请求
搞清楚我们具体的发送信息之后,接下来我们开始着手在 iOS 上面制作 Shortcuts 动作。
制作 Shortcuts 动作
首先,在 Shortcuts 里面创建新动作,并搜索加入模块「Get contents of URL」。点击模块下部的 Show More,在其中按下图进行配置:ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
BIT-Web 登录请求模块URL 设置为:http://10.0.0.55:801/include/auth_action.php
Method 设置为:POST
之后会出现 Request Body 的设置字段:选择 Request Body 为 Form
点击 Add new field,选择 Text 类型。将 Key 字段设置为 action,Text 设置为字段设置为 login
继续点击 Add new field 并选择 Text 类型。将 Key 字段设置为 username,Text 设置为字段设置为你的校园网用户名(学号)
继续点击 Add new field 并选择 Text 类型。将 Key 字段设置为 password,Text 设置为字段设置为你的校园网账户密码
继续点击 Add new field 并选择 Text 类型。将 Key 字段设置为 ac_id,Text 设置为字段设置为 8
继续点击 Add new field 并选择 Text 类型。将 Key 字段设置为 save_me,Text 设置为字段设置为 1
继续点击 Add new field 并选择 Text 类型。将 Key 字段设置为 ajax,Text 设置为字段设置为 1
在模块「Get contents of URL」下方添加模块「Text」,将「Text」的值设置为「Contents of URL」,也就是上一步网络请求的返回结果。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
将 Contents of URL 返回数据规格化
继续,在下面添加模块「If」,用来判断我们登录成功与否。将 If 模块的判断条件设置为「contains」,包含字符设置为 login_ok:如果匹配成功:说明登录 BIT-Web 成功,发送登录成功通知
如果匹配失败(进入 Otherwise 部分):说明登录 BIT-Web 失败,发送登录失败通知以及失败的请求返回的数据ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
对登录请求之后的数据进行处理,发送登录成功 / 登录失败通知
之后,我们测试。将手机连接至校园网 BIT-Web,尝试执行这一 Shortcuts 动作。如果一切顺利,那么你应该可以登录成功,得到如下通知:ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
BIT-Web 登录成功的通知
定义动作触发条件
接下来,我们在 Shortcuts 中设置连接至 BIT-Web 之后自动触发这一动作的功能。在今年秋天 iOS 13 的更新中,Shortcuts 同样更新了其 Automation 的功能。这里我们所要做的就是设置一个「触发器」使得 iPhone 能够自动连接到 WiFi SSID 为 BIT-Web 的网络之后提醒我们执行上面创建的 Shortcuts 动作。
我们点击 Shortcuts 中间菜单「Automation」,点击上方加号,选择 Create Personal Automation。之后,在菜单中选择 WLAN,在下方菜单中点击 Choose 并选择 BIT-Web。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
创建连接至 BIT-Web 自动触发的 Automation
之后,点击右上角 Next,在添加动作模块的页面点击加号,添加一个「Run Shortcut」的模块。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
添加「Run Shortcut」的模块
接下来,将「Run Shortcut」模块的执行动作设置为我们刚刚制作的 BIT-Web Shortcut 动作。其他内容无需改动。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
设置自动执行 BIT-Web 认证动作快捷指令
之后,点击 Next > Done 保存动作。
效果
如果一切顺利,那么你的 iPhone 连接至 BIT-Web 之后,Shortcuts 应用就会自动弹出提醒请求执行 BIT-Web 登录的动作。在通知提醒上面点击执行,我们就可以直接登录至 BIT-Web。 注意:这一快捷指令以及利用快捷指令登录 BIT-Web 是上个月的思路和想法,在上个月这一功能一直完好可用,但是最近我注意到 Wi-Fi 触发器总是无法正确的触发动作的运行,同时在 Reddit 社区里面也有不下 5 条抱怨 Wi-Fi 触发器不工作的内容。因此我怀疑确实是 iOS 出现的 bug 导致的。
另外,如果上面的触发总是无法成功,那么你也可以直接将 BIT-Web Shortcut 动作固定在主屏幕,每次连接到 BIT-Web 之后手动点击执行快捷指令即可。这肯定比跳转登录认证页面输入账号密码登录方便许多。ios快捷指令连接linux,如何利用 iOS 快捷指令自动化登录校园网
文章图片
直接将 BIT-Web 认证动作添加到主屏幕
自动化的操作比人力重复无效劳动要方便许多,打卡、签到,日复一日的登录、提醒,都可以利用「自动化」的思路进行完成。用「自动化」的方法进行校园网认证是一个非常普遍、非常常见的功能需求,在这篇文章中,我主要希望介绍一种通用的「自动化」操作的思路,也就是:找到校园网认证登录的网络请求参数
使用 iOS 的快捷指令制作登录认证动作
利用快捷指令的 Automation 实现连接至制定 Wi-Fi 自动执行登录动作
在 Android 平台,同样有 Tasker 等类似的工具能够支持我们完成这样的自动化操作。希望大家能借助于我介绍的思路,根据自己学校校园网的实际情况,自己定制属于自己的校园网认证「自动化」操作。本文就介绍到这里,感谢阅读。
> 下载少数派 客户端、关注 少数派公众号,找到数字时代更好的生活方式
> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺

    推荐阅读