前言¶
DSH 的理念是「一切皆插件」,但社區裏常見的插件多是接搜索、接數據庫、接模型;真正和系統網絡棧打交道的很少。Srun 深瀾校園網既是上網入口,也是容易把人鎖在外面的一道門:登錄頁地址、賬號、斷網後那張「掛着默認路由卻走不通」的網卡,基本都靠手動處理。
下面介紹 dsh-campus-net,由 tianyadadi 維護,把 Srun 深瀾認證放進 DSH 側邊欄:自動識別當前走哪條網、顯示實時上下行速度、一鍵登錄斷開、統計流量,另外還處理登出後的黑洞網卡。它定位爲聯網工具,只面向 Srun 深瀾一種認證系統。
這是什麼¶
一句話定位:Srun 校園網(深瀾)連接器,給 DSH 側邊欄掛一隻常駐掛件。
- 維護者:tianyadadi
- 分類:聯網工具
- 當前版本:0.3.1(見
package.json) - 許可證:MIT
- 運行平臺:僅 Windows(依賴
netstat -e、netsh wlan、PowerShell)
它解決的問題是:在 Windows 上做 Srun 認證時,登錄、斷開、切號、流量查看要反覆開瀏覽器;登出後網卡沒斷但路由搶了流量,會把模型請求卡到超時。插件把這些動作收進側邊欄,並提供不依賴 DSH 的自救腳本。
核心功能¶
| 功能 | 說明 |
|---|---|
| 自動識別網絡 | 按默認路由判定當前走的是手機熱點 / WiFi / 有線 / 校園網,顯示對應名字和圖標 |
| 實時測速 | 上行 + 下行速率,每 2 秒刷新(摺疊態 3.5 秒) |
| 一鍵開關 | 連接 / 斷開校園網 |
| 斷開保護 | 斷開後 30 秒自動重連,避免把自己鎖在外面 |
| 開機自動連 | DSH 啓動後自檢,離線就登錄 |
| 斷網自救 | 插件目錄裏的 救急重連.cmd,雙擊重連,不依賴 DSH |
| 非校園網自動禁用 | 在熱點下按鈕置灰,不會誤點 |
| 黑洞網卡檢測 | 揪出「掛着默認路由卻走不通」的網卡,一鍵抬躍點讓它搶不過當前網絡 |
| 流量統計 | 今日 / 本次登錄 / 開機以來,上下行分開算 |
| 在線時長 | 顯示本次已連多久,斷開自動清零 |
| 多賬號 | 宿舍 / 實驗室多個號,面板下拉切換 |
| 非上網時段自動重試 | 學校返回「不在上網時段」時每 10 分鐘試一次,連上就停 |
安裝與啓用¶
1、裝插件¶
推薦從 npm 安裝:
dsh plugin --profile desktop add dsh-campus-net
也可以從 GitHub 安裝:
dsh plugin --profile desktop add github:tianyadadi/dsh-campus-net
本地開發、改了代碼要熱更時,用本地目錄:
dsh plugin --profile desktop add link:<本目錄絕對路徑>
2、重啓 DSH¶
bundle 層要重啓才組裝。
3、驗證是否裝好¶
重啓後看兩點:側邊欄左下角(賬號頭像上方)出現掛件;命令行自檢通過:
python core/campus_net.py doctor
沒出現的話,先看 DSH 日誌裏有沒有 dsh-campus-net 的加載錯誤。
4、填賬號¶
把 core/campus-net.example.json 複製成 core/campus-net.json,填上自己的:
{
"portal": "2.2.2.2",
"username": "你的學號",
"password": "你的密碼",
"autoConnect": true,
"autoReconnectSeconds": 30
}
這個文件在 .gitignore 裏,不會被提交。
安裝前需要先確認三樣東西:認證地址(登錄頁 IP,通常是 2.2.2.2 這類內網地址)、賬號、密碼。確認方法是連上校園 WiFi、隨便打開一個網頁,看跳轉到的登錄頁地址欄裏的 IP。另外要先確認學校用的是 Srun 深瀾:登錄頁地址裏出現 portalLogout.do、wlanuserip、wlanacname 這些特徵就是。Dr.COM、銳捷、需要驗證碼或短信二次驗證的門戶不適用。
典型用法¶
命令行部分獨立於側邊欄,可以直接調用:
python core/campus_net.py status # 查狀態
python core/campus_net.py login # 登錄
python core/campus_net.py logout # 斷開(默認 30 秒後重連)
python core/campus_net.py network # 當前網絡識別
python core/campus_net.py speed # 測速
python core/campus_net.py doctor # 自檢
python core/campus_net.py dead-path # 查有沒有黑洞網卡
python core/campus_net.py fix-path # 修(抬躍點;DNS 是靜態時才重置,會彈 UAC)
python core/campus_net.py restore-path # 還原躍點
python core/campus_net.py traffic # 流量(今日 / 本次 / 開機以來)
python core/campus_net.py accounts # 列出所有賬號
python core/campus_net.py switch-account 實驗室 # 切號(也可寫序號)
多賬號有兩種配置寫法,老配置不用改:
{ "username": "學號", "password": "密碼" }
{ "accounts": [
{ "name": "宿舍", "username": "111", "password": "p1" },
{ "name": "實驗室", "username": "222", "password": "p2" }
],
"current": 0 }
多於一個賬號時面板會顯示下拉框,選了立刻生效;切號會把選中賬號鏡像回 username/password,所以 救急重連.cmd 這類只認老字段的調用方照樣能用。在線時切號不會踢掉當前會話,隻影響下次登錄。
關於黑洞網卡¶
校園網登出(或未認證)後,那張網卡還是 up 的、默認路由也還在。WiFi 一抖,系統就把流量切給它,SYN 發出去沒人應答,客戶端默認連接超時 10 秒後放棄。表現爲模型突然報 transport failed / Request timed out.,三家服務商同時掛。
插件的判定方式是綁定這張網卡的源 IP 去連 223.5.5.5:443,1.5 秒連不上纔算黑洞——因爲校園網網關 ping 得通但沒認證照樣出不去,只看 ping 不準。掛件上摺疊態小圓點變黃,展開後有「修一下」和「還原躍點」兩個按鈕:修一下把該網卡躍點抬到 9999(會彈一次 UAC,所以需要管理員權限);還原躍點把躍點交回系統自動。抬躍點而不是禁用網卡,是因爲禁用之後回校園網還要去設備管理器手動開。DNS 只有靜態配置時纔會順手重置,DHCP 下發的 DNS 插件會跳過並不糊弄。
性能與限制¶
各接口耗時(README 給出的實測):
| 接口 | 耗時 | 做法 |
|---|---|---|
status |
~200ms | 網絡信息 30 秒磁盤緩存 + 不在校園網時短路 + 流量 30 秒節流 |
speed |
~930ms | netstat -e 兩次採樣(窗口 700ms) |
network |
~200ms(有緩存) | 單次 PowerShell 拿路由 + netsh 拿 SSID |
dead-path |
~150ms(有緩存)/ 首次 ~1.7s | 黑洞探測結果緩存 60 秒 |
traffic |
~65ms(過期時)/ 0ms(緩存) | netstat -e 單次讀取 |
已知限制:只支持 Srun 深瀾;只在 Windows 測試過;密碼明文存儲在本地 campus-net.json,需確保機器只有一人使用;不支持需要驗證碼、短信二次驗證的門戶。流量統計讀的是 netstat -e 的全機聚合累計值,所有網卡流量合在一起,不區分走的是哪張卡。
適用場景與注意¶
適合在校使用 Srun 深瀾認證、希望在 DSH 裏順手完成登錄和看流量的用戶,尤其是需要長期掛 DSH、又不希望認證狀態影響模型請求的場景。不適合使用 Dr.COM、銳捷或其他認證系統的學校,也不適用於需要驗證碼或短信二次驗證的門戶。
需要留意的幾點:插件以當前 DSH 進程的權限運行,安裝前應先打開源碼檢查,並確認許可證(MIT)。由於 fix-path 會彈 UAC 提升權限,建議只在明確出現黑洞網卡時執行。配置裏的密碼是明文,注意不要讓他人接觸本機。項目託管在 GitHub,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不是官方應用商店。
目錄與倉庫¶
- 插件目錄頁:https://www.skillhub.cn/plugins/tianyadadi/dsh-campus-net
- GitHub 倉庫:https://github.com/tianyadadi/dsh-campus-net