Matrix 精選
Matrix 是少數(shù)派的寫作社區(qū),我們主張分享真實的產(chǎn)品體驗,有實用價值的經(jīng)驗與思考。我們會不定期挑選 Matrix 最優(yōu)質的文章,展示來自用戶的最真實的體驗和觀點。
文章代表作者個人觀點,少數(shù)派僅對標題和排版略作修改。
編注:在與作者交流后,我們認為這套校園 Wi-Fi 自動登錄的方法有其通用性,但需要各位讀者根據(jù)自己的實際接口情況進行實現(xiàn)。也歡迎大家根據(jù)文中的思路,嘗試使用不同的自動化工具。
BIT-Web 是北京理工大學校園 Wi-Fi,專門用于筆記本等桌面設備,另外還有 BIT-Mobile 用于移動設備。但是,BIT-Mobile 有時候并沒有 BIT-Web 穩(wěn)定,自動登錄不是那么靠譜,我們也不能通過 BIT-Mobile 登錄使用免費運營商寬帶,這些場景下我們都需要在移動設備上連接至 BIT-Web 進行手動登錄。
校園網(wǎng) BIT-Web 和 BIT-Mobile 分別針對不同設備
最近我的同學跟我說,BIT-Web 的登錄頁面在移動端(尤其是 Android 平臺)上不能正常的顯示「密碼管理器」,也就不能直接填充密碼,每次都需要手動輸入。這令人非常煩惱,如何才能實現(xiàn)在連接到 BIT-Web 上之后自動發(fā)送登錄認證請求來連接至校園網(wǎng)呢?
實現(xiàn)思路
對于我的學校來說,登錄至校園網(wǎng)的基本操作就是:
- 連接到 BIT-Web
- 在瀏覽器中打開 t 來重定向至登錄頁面 10.0.0.55
- 輸入賬號密碼并點擊登錄
在這背后,我們事實上是給學校校園網(wǎng)登錄認證服務器發(fā)送了一個帶有我們「賬號」和「密碼」的登錄請求(實際來說可能是賬號密碼組合出的加密認證令牌),之后校園網(wǎng)認證服務器核實我們的身份,并反饋我們認證結果,給予上網(wǎng)權限。
BIT-Web 認證登錄的具體請求參數(shù)
這樣來說,我們事實上就只需要在每次連接至 BIT-Web 網(wǎng)絡時,自動發(fā)送這一請求,即可實現(xiàn)自動登錄校園網(wǎng)的功能。在 iOS 平臺,我們有相當方便的工具來制作發(fā)送請求的腳本:快捷指令 Shortcuts,利用 Shortcuts 我們可以定制一個「動作」,實現(xiàn)自動登錄的功能。
另外,iOS 13 里面的 Shortcuts 加入了全新的 Automation:基于場景的動作自動化執(zhí)行功能。利用這一特性,我們就可以定義「連接到 Wi-Fi 名稱為 BIT-Web 的網(wǎng)絡」這一「觸發(fā)器」,從而實現(xiàn)自動觸發(fā)動作的能力。
好啦,萬事俱備,我們開始實現(xiàn)吧~
操作步驟
接下來,我會以 iOS 的 Shortcuts 中「自動登錄校園網(wǎng)」的實現(xiàn)為例,詳細介紹我們具體如何實現(xiàn)這樣的自動化操作功能。
首先需要說明的是,iOS 的 Shortcuts 里面能夠執(zhí)行的算法有限,但是就今天(2019.12.30)來說,我校校園網(wǎng)服務器的登錄認證接口已經(jīng)升級,需要進行加密運算生成登錄令牌才能正確認證。考慮到我們的腳本僅僅在校園網(wǎng)內部可控環(huán)境下執(zhí)行,這里我們退而求其次,使用舊接口: 直接發(fā)送明文賬號密碼進行認證的 API 來登錄校園網(wǎng)。
明確網(wǎng)絡請求參數(shù)
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} 均為明文賬密,我校曾經(jīng)就是這樣簡單粗暴。簡單在終端中用 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 的結果,同時你可以連接互聯(lián)網(wǎng),那么說明你的認證成功。


