Repository navigation
Releases: fotlim/campus-net
Release list
v1.2.4-lite · 精简版(无桌宠)
v1.2.4-lite · 精简版(无桌宠)
版本号还是 1.2.4,但内容与 v1.2.4 完整版 不同。 从这一版起,仓库只保留「校园网自动认证 + 内存清理」,桌面宠物整体移除。
与 v1.2.4 完整版的差异
| 内容 | v1.2.4 完整版 | v1.2.4-lite(本版) |
|---|---|---|
| 桌面宠物(窗口 / 动作 / 模型配色 / 帧率 / 大小 / 碎碎念 / 拖拽) | ✅ | ❌ 全部移除 |
| 桌面图标互动(吃掉 / 搬运 / 还回 / 恢复布局) | ✅ | ❌ 移除 |
| 悬停天气面板 + 穿衣提醒 + 彩云 token | ✅ | ❌ 移除 |
| 校园网认证 · 托盘 · 守护 · 多账号 · WiFi 自动连接 · 校时 · 网速 · 一键诊断 · 门户自检 · 通知中心 · 唤醒重认证 · 自动修复 · 内存清理 · 通用门户 · 采集 · 向导 | ✅ | ✅ 全部保留 |
| 脚本行数 | 8355 | 4930 |
| 仓库文件数 | 3174 | 7 |
| 压缩包大小 | 158 MB | 92.5 KB |
本版变更
- 删除
-Mode pet、-PetOff、-CaiyunToken参数 - 删除退出窗口的「只保留桌宠」选项,现在只有 完全退出 / 最小化
- 删除
pet/素材 3164 个文件(约 157 MB)、tools/build-pet.py、docs/preview.png settings.json里遗留的pet*/icon*键不再被读取,留着也不影响运行- 修掉删减过程中
$script:TrayAliveAt初始化被误删导致的op_Subtraction报错
还想要桌宠?
独立仓库 fotlim/desktop-pet v1.2.7 —— 渲染、物理、菜单和原来的完整版一致,可以单独跑。
下载
campus-net-1.2.4-lite.zip(92.5 KB)—— 解压双击 connect.bat。
v1.2.4
去掉「整理图标」
- 随机事件(拖到图标上 / 溜达到图标上)不再重排整个桌面,只保留 吃掉 和 搬运,不动的图标一个都不碰
- 菜单「桌面图标互动」里的「整理图标」一项已删除,现在是 吃掉 / 搬运 / 立即还回 / 恢复上次布局
完整历史见 README 更新日志。
v1.2.3 内存清理(精简版 Mem Reduct)
campus-net v1.2.3
内存清理(精简版 Mem Reduct)
托盘右键新增「内存」子菜单,不装任何第三方软件:
| 项 | 说明 |
|---|---|
| 轻清 | 清自家托盘 / 守护 / 宠物进程的工作集,瞬间完成、免管理员;实测工作集 100 → 16 MB |
| 系统清理 | 清 standby list(待机内存)+ 文件缓存;实测一次可用内存 +363 MB |
| 全部清理 | 上面两样一起 |
| 内存紧张时自动清理 | 可用内存低于阈值才触发,触发后冷却时间内不重复;阈值 / 冷却就在菜单里 ± 调 |
| 自动清理时也清系统缓存 | 默认关;开了每次自动清理都顺带清 standby |
- 状态行直接显示
可用 xxxx MB / xxxx MB (xx%),清完立刻刷新 - 自动清理触发时发通知,带清理前后的可用内存
- 默认阈值 12%、冷却 10 分钟,菜单里可调(升 / 降 / 重置)
- 免 UAC 提权任务:
-Mode install会注册计划任务CampusNet-MemClean(最高权限);托盘点「系统清理」时如果当前权限被拒,自动改由它执行,不弹 UAC - 命令行也能用:
Connect-CampusNet.ps1 -Mode memclean -Scope light|system|all
桌宠:新增开关「启动时自动拉起桌宠」
托盘右键 →「启动时自动拉起桌宠」勾选(默认开)。关掉后,开机 / 托盘重启不再自动弹出桌宠;需要时在「桌面宠物」里手动打开。
升级
解压覆盖(别动 settings.json / accounts.json),托盘退出再 connect.bat。
v1.2.2 24fps 桌宠 + 桌面图标互动 + 帧按需解码
campus-net v1.2.2
桌宠:24fps 全帧率
13 个动作 × 241 帧 / 10.04 秒,按素材原生 24fps 播放,不再靠插帧补顺。画布统一 318×200,切动作不缩放。
桌宠:桌面图标互动(新功能)
右键宠物 →「桌面图标互动」,也可以把宠物拖到图标上触发:
| 事件 | 行为 |
|---|---|
| 吃掉 | 图标挪到屏幕外,180 秒后自动回原位;同一时间只吃一个 |
| 搬运 | 自动关掉桌面「自动排列图标」,把图标丢到随机网格位置 |
| 整理 | 竖向排列(先排满一列再排下一列),排法随机:名称/时间/大小 × 正序/倒序 |
- 触发是概率的:拖上去 45%、溜达上去 25%,外加 45 秒冷却
- 每次动手前记布局(
icon-layout.json),菜单里可「恢复上次布局」「立即还回被吃掉的图标」 - 关自动排列只能走注册表
FFlagsbit0 + 重启一次资源管理器,第一次会弹框确认一次
桌宠:手感与性能
- 动作切换:直接换帧,不再有交叉淡入(之前那版会出现「缩一下」)
- 帧按需解码:点动作立即开始(不再先卡 1 秒解 241 帧),托盘内存 330 MB → 123 MB
- 拖动/弹跳:高速移动时每帧都重画,移动中收起跟随面板,不再跳帧
其它
- 托盘/守护逻辑不变;
settings.json、accounts.json等个人文件不在包里
升级
解压覆盖(别动 settings.json / accounts.json),托盘退出再 connect.bat。
v1.2.0 退出三选一 + 修二级菜单点不动
修了两个 bug + 一个退出体验
1. 退出程序窗口时三选一
菜单 0) 退出 现在先弹框,不再一刀切:
| 选择 | 效果 |
|---|---|
| 完全退出程序 | 停托盘、停守护、停桌宠(开机自启还留着,下次登录会自己起来) |
| 只保留桌宠 | 停托盘和守护,单独拉一个隐藏的桌宠进程,窗口关掉它也不走 |
| 最小化程序 | 窗口收进任务栏,托盘 / 守护 / 桌宠照常跑 |
| 取消(Esc) | 回到菜单 |
「只保留桌宠」跑的是独立进程,所以关窗口不连带;托盘右键的「退出托盘」也会顺手把它停掉,不留孤儿进程。
2. 修:右键菜单里二级菜单的项点了没反应(重要)
v1.1.7 加的「点菜单外自动关闭」守卫是按下鼠标就收,而二级菜单天生画在父菜单矩形之外 —— 于是按下 48Hz 的那一瞬间菜单就被关掉,Click 根本没跑到。
表现就是「帧率改成 48Hz 完全没生效」,日志里连一行 宠物帧率: 48Hz 都没有。受影响的是所有二级菜单项:帧率 / 大小 / 字号 / 透明度 / 信息框尺寸 / 动作 / 随机间隔 / 随机表情包 / 手感 / 弹性 / 摩擦 / 随机触发 / 气泡时长。
- 现在改成松手之后再判断该不该收(
PetMenuDown标记),并新增Test-PetMenuPoint:判断「在不在菜单里」时把还开着的二级、三级菜单一起算 - 外面点一下照样会收起(实测:按下时菜单还在,松开后
False) - 实测用合成鼠标点击打在真实菜单上:帧率 → 48Hz →
petFps=48、日志宠物帧率: 48Hz;动作 → 挥手、碎碎念 → 气泡时长 → 8 秒 也都点得动了
3. 修:菜单里的勾不跟着设置变
菜单只在宠物启动时建一次,勾选是建的时候算死的,所以改完设置再打开菜单,勾还停在旧值上。现在每一项都登记了「怎么判断该不该打勾」,每次弹出前按最新设置重算(一次读取 settings.json),真改了值会写日志 宠物菜单勾选已按最新设置重算(N 项变化)。
顺带包含 v1.1.6 ~ v1.1.9 的改动
上一个正式发布是 v1.1.5,这个包把中间几次也一起带上了:
- v1.1.9:「随机动作间隔」并入 动作 二级菜单;碎碎念拆成
自动碎碎念开关 +随机触发(关 / 频繁 310 分 / 一般 1030 分 / 偶尔 3090 分,每次重新随机)+6 秒 / 3 / 5 / 8)气泡时长(随机 2 - v1.1.8:切帧率现在每帧自检并重建帧缓存;关窗口后自动把托盘拉回来;托盘 UI 异常兜底
- v1.1.7:帧率档位(24 / 48 / 60Hz,插帧播放);摸头随机抽动作;菜单点外面自动关闭(见上面第 2 条的修正)
- v1.1.6:移除微信 / QQ 推送;「悬浮面板尺寸」并入
信息框子菜单
升级方式
下载 campus-net-1.2.0.zip 解压覆盖原目录(settings.json / accounts.json / portal.json 都不要动),然后右下角托盘右键 →「退出托盘」,重新双击 connect.bat(或者直接运行 connect.bat -Mode install 重装自启)。
只保留了脚本和素材,没有任何账号、设置、cookie、日志被打进包里(507 个文件,纯脚本 + pet 素材 + 文档)。
v1.1.5 — 微信/QQ 通知 + 悬浮面板可调
v1.1.5 — 微信 / QQ 通知 + 悬停面板可调
两件事:让事件能推到手机,让桌宠那个悬浮面板按你的喜好定尺寸。
新增:微信 / QQ 通知
个人微信、QQ 都没有官方"给某个号发消息"的接口,下面都是中转服务,凭据填在
push.json(本机文件,不进仓库)。
| 通道 | 推到哪 | 需要 |
|---|---|---|
serverchan |
微信服务号 | Server酱 SendKey(SCT…) |
pushplus |
微信 | PushPlus token |
wecom |
企业微信群 | 群机器人 Webhook |
onebot |
QQ(私聊/群) | 自建 OneBot,如 http://127.0.0.1:3000/send_private_msg?user_id=123456 |
custom |
任意 | 你自己的 webhook,POST {"title","content"} |
.\Connect-CampusNet.ps1 # 菜单 → N) 微信 / QQ 推送设置
.\Connect-CampusNet.ps1 -Mode push # 发一条自检,验证通不通- 每项回车 = 不变,
-= 清空;多通道并行推送 - 推送时机与系统通知一致:掉线 / 恢复在线 / 自动修复完成 / 唤醒后重认证失败 / 连续登录失败,沿用原有去重间隔,不刷屏
- 修 PS 5.1 的
-Body默认按 ASCII 发送,中文会变问号 —— 五个通道全部改成显式 UTF-8 字节发送
新增:悬浮面板长宽可调(文本自适应)
宠物右键 →「悬浮面板尺寸…」,填 宽,高(像素,0 = 自动):
| 设置 | 效果 |
|---|---|
0,0 |
按内容自适应(和以前一样) |
320,0 |
固定宽,长文本按像素自动换行,高度跟着行数走 |
320,110 |
固定框,放不下的行截断加 …,不溢出 |
160,0 |
很窄时英文/数字不会被从中间劈开(能退到空格就退) |
对应设置项 petOverlayW / petOverlayH;字号、透明度仍是 petOverlayFont / petOverlayOpacity。
一并包含(v1.1.3 / v1.1.4 未单独发版)
- 新手向导(
-Mode wizard/ 菜单G/ 首次运行自动弹出):问一句"这个 WiFi 是不是校园网" → 不是就换名字 → 认门户 → 没命中就从门户页面现场生成配置 - 采集诊断包(
-Mode collect/collect.bat/ 菜单C):给远程的朋友用,报告自动进剪贴板,门户 HTML + JS 打包发回 - 天气:位置到省/市/区县,数据源换成彩云天气(可填 token),新增穿衣提醒
升级方式
解压覆盖原目录即可。collect.bat 是新文件,一起放进去。
SHA256(campus-net-v1.1.5.zip):DAAD6A465BBD8DD845190D21B84F880D9592E291377B2B8CF04F5BDDCE74BDBE
v1.1.3 — 新手向导:问一句 + 自动认门户
v1.1.3 — 新手向导:问一句 + 自动认门户
这次加的是「第一次用」的体验:不用先懂协议,程序自己问、自己认、自己写配置。
新增:新手向导
三个入口,同一个流程:
- 第一次运行(
settings.json/accounts.json/portal.json都还没有)时自动弹出 - 菜单里按
G - 命令行
-Mode wizard
流程:
| 步骤 | 做什么 |
|---|---|
| ① 问 WiFi | 「当前这个 WiFi 是校园网 / 需要自动认证的吗?」 答 是 → 目标 SSID 就设成当前这个 答 否 → 让你填真正要连的名字,顺手写好「目标 WiFi + 自动连接」 |
| ② 问账号 | 一个账号都没有时顺便录入(DPAPI 加密保存) |
| ③ 认门户 | 复刻"浏览器自动弹认证页":HTTP 302 → 网关(80/8080)→ HTTPS 劫持页,三路都试 |
| ④ 出配置 | 命中内置预设(Dr.COM / 天翼 / 深澜 / 锐捷 / 通用表单)直接套用;没命中就现场生成 |
| ⑤ 收尾 | 可选试登录一次;可选装开机自启 |
没命中预设时,现场生成的原理
抓门户 HTML → 找含 password 的 <form> → 抠出:
action当登录接口,method当提交方式- 账号字段名、密码字段名
- 隐藏字段(如
wlanuserip、service)原样带上
拼成模板:
wlanuserip=10.1.2.3&service=internet&username={user}&password={pwd}
再看页面里有没有 md5( / rc4 / base64,据此猜加密方式。生成结果存成 id=custom,成功判定留空(以真实连通性为准),随时可以用 -Mode portal 查看或修改。
验证:起了一个「隐藏字段 + md5 密码」的假门户,用自动生成的配置去登录 —— 服务端四项断言(账号、md5 密码、wlanuserip、service)全部通过,判定登录成功。
边界(说清楚)
- 需要我先输对账号密码才显示表单的门户,向导抓不到字段 —— 会提示你改用
-Mode collect或浏览器F12 → Copy as cURL - 带图形验证码的门户,自动生成也没法全自动(验证码得人看)
- 猜的加密方式可能不对;不对就照
-Mode portal里的字段改一个值重试
升级方式
解压覆盖原目录即可。想立刻试向导:.\Connect-CampusNet.ps1 -Mode wizard
SHA256(campus-net-v1.1.3.zip):217A51584F46ED52E390C6062FD5300BBA0E43E2698EAFAABBFC090DA5A11884
v1.1.2 — 远程适配采集包
v1.1.2 — 远程适配采集包
这版解决一个很实际的问题:朋友在别的学校、人不在你旁边,怎么把他的门户摸清楚。
新增:一键采集诊断包
三种入口,效果一样:
.\Connect-CampusNet.ps1 -Mode collect- 双击
collect.bat(新文件) - 菜单里按
C
跑约 20 秒,输出:
| 段 | 内容 |
|---|---|
| 无线 | 当前 SSID / 状态 / 脚本目标 SSID / 可见网络 |
| 地址 | 本机 IP、网关、DNS、代理环境变量 |
| 探测 | 联网判定、HTTP 302 门户地址、网关 80·8080、HTTPS 劫持页标题 + 页面里的域名 |
| 识别 | 门户指纹 + 运营商线索(电信 / 移动 / 联通) |
| 门户页 | 门户 HTML portal-1.html + 同站 JS 最多 8 个 |
产物:
collect-<时间>.txt—— 报告,同时自动复制到剪贴板,对方直接粘贴就能发出来collect-<时间>.zip—— 抓回来的门户页和 JS(登录字段与加密算法就在里面)
包里不含账号密码,只有网络信息和门户页面,可以放心转发。
顺序很重要:必须在他还没在浏览器里登录的时候采 —— 一旦认证过,门户就不再劫持,采集会是空的。
修
- 采集同站脚本时改用
%{url_effective}作基准解析相对路径。之前../share/xxx.js会拼错,抓回来的是同一个 404 页面(实测现在能拿到真正的lang_Hash.js9.4 KB、index.js38 KB)
文档
- 新增「远程适配」一节:采集顺序、
F12 → Network → Copy as cURL的精确抓法、Windows 快速助手(Win+Ctrl+Q)远程协助 - 顺手把上两版的变更也补齐在更新日志里(代理干扰、诊断三项、token 两步、JSON 体、天翼)
升级方式
解压覆盖原目录即可。collect.bat 是新文件,记得一起放进去。
SHA256(campus-net-v1.1.2.zip):F2BFC138F9930D663CFCBA2E2943A6AC0AE49DF24EC21F83A453D329FC168F0E
v1.0.1 — 支持天翼校园网 + 自动识别门户
v1.0.1 — 支持天翼校园网 + 自动识别门户
小改版:把「只认 Dr.COM」扩成「认得出好几家」,顺手把广东电信天翼校园网(宿舍区那种)接上。
新增
- 广东电信天翼校园网(
esurfing预设)
走客户端协议,不是网页表单:queryschool → advertisement.do → vchallenge → client/login,全 JSON + 大写 MD5 签名(密钥Eshore!@#)。
服务端下发的challenge原样回填即可,不需要识别图形验证码,所以能无人值守。
clientip/nasip自动从门户 302 跳转地址里取;MAC 按 IP 反查网卡,NAT/前置路由时退回默认路由出口网卡的 MAC。 - 自动识别门户
复刻「连上就弹认证页」那一下:探一次外网地址,拿 302 的Location,看地址就认得出 Dr.COM / 天翼 / 深澜,然后把portal.json改对。
入口:-Mode portal -AutoPortal(认一次并写回)、-Mode portal -DetectPortal(只看不改)、菜单O)输入auto。
登录失败时也会自动试一次(仅当确实被劫持,纯断网不折腾),变了就换配置重试,改动写日志。 - 天翼现场勘查:一条命令打印
clientip / nasip / mac / queryschool / vchallenge原始返回(不含密码),附 rescode 对照表。
修正
portal.json只写当前协议用得上的字段,不再留一堆null- 登录失败后的日志更明确(区分「被劫持但配置不对」和「网络整个不通」)
文档
- 说明 WiFi 名字与门户识别无关:
young/wo/CIT-Chinanet/GDGM-S只是 SSID,判断依据永远是 302 到哪个门户 - 说清 802.1X(教学区那种企业级 WiFi)不属于本脚本范围
验证情况
| 项 | 结果 |
|---|---|
| 天翼四步签名 | 本地 mock 服务端独立重算 MD5,三步 sign=True、rescode 0 判成功 |
| 自动识别 | 假 302 实测:正确识别天翼并把 portal.json 从 drcom 切到 esurfing |
| Dr.COM 回归 | 真实门户强制重登 登录成功: logon success |
天翼链路目前是假服务器验证,还没在真实的工贸/天翼网络里跑过。到那边先跑
-Mode portal -DetectPortal,把五行输出(不含密码)发 issue 就能确认version/iswifi/ MAC 格式这几个参数。
升级方式
解压覆盖原目录即可(脚本会读 portal.json / accounts.json;老版本没有 portal.json 会自动补 Dr.COM 默认值)。包内不含任何账号、日志、Cookie。
SHA256(campus-net-v1.0.1.zip):37D274A83EAB35E2DEBC68F80559E60673745AD618408A86C6E629FC399F7F10
v1.0.0 — 校园网自动认证(通用版)
一个带托盘、开机自启、多账号、WiFi 自动连接、网速监控、一键诊断、自动修复、通知中心、桌面宠物的校园网自动认证脚本。
下载
campus-net-v1.0.0.zip 解压到任意目录,双击 connect.bat 即可(需要 Windows 10/11 自带的 PowerShell 5.1 与 curl.exe)。
功能
- 认证:Dr.COM / 通用表单 双模式,门户差异走
portal.json配置(RC4 / MD5 / SHA1 / Base64 / 明文) - 保活:后台守护每 30 秒检测,掉线自动重连;休眠唤醒后立刻补认证
- WiFi:启动即连目标 SSID,列表自动刷新,开放网络缺配置自动补
- 账号:多账号 DPAPI 加密保存、切换、改密码(先真发一次请求验证)
- 自愈:连续失败按阶梯修复(刷 DNS → 清 Cookie → 重连 WiFi → 校时 → 重置网卡)
- 诊断:13 项一键体检,发现问题自动尝试修复并落盘报告
- 通知:Win10/11 通知中心 Toast,带「立即登录 / 打开菜单 / 查看日志」按钮
- 桌宠:24fps 分层窗口渲染,拖拽抛掷物理、随机走动/动作/表情包/碎碎念、悬停显示网速+天气+音乐控制
说明
- 你的账号密码只以 DPAPI 加密形式保存在本机
accounts.json,不会上传任何地方 - 桌宠素材来自 dsh-pet(MIT),见
pet/NOTICE.txt - 仅供本人账号在本人学校网络使用
详见仓库 README。