选课哨兵 只读式选课余量监控浏览器扩展产品系统Vibe Coding

我要开发同款
Geburah2026年10月05日
4阅读

技术信息

语言技术
Python、JavaScript、Node.js、ElementUI
系统类型
Web
行业分类
脚本插件、教育校园

作品详情

行业场景

高校选课分预选、正选、补选三个阶段,热门课程的课余量随时被别人抢走又放出,学生只能一遍遍手动刷新教务系统的课程表。更麻烦的是辽大这套平台的课程表必须点一次「查询」按钮才会去服务器取数,光盯着页面不动,等刷到的时候余量往往已经没有了;靠同学群里互相通报,又依赖别人恰好在线,覆盖不全也说不准时点。本项目面向「选课期盯余量」这一短时高强度场景,把课程表解析、编号前缀/校区/选课控制/余量/上课时间五道条件筛选、变化检测与微信推送整合成一个浏览器扩展,在你已登录的页面上低频巡检,一旦出现条件相符且有余量的课就立刻提醒,选课动作仍然由你本人在页面上完成。

功能介绍

扩展把监控面板直接渲染在选课页右侧,用 Shadow DOM 做样式隔离,不改动原页面任何样式,所有能力都在一个面板里完成。

【监控面板】一键开始/暂停巡检、实时列出本轮命中的课、逐条给出每门课被筛掉的原因和命中率、底部常驻显示监听文档数(含 iframe)、页面变化时间、本轮取数方式、累计点「查询」次数与心跳时间戳。

【筛选规则】编号前缀(支持 Q、T 等多个前缀,逗号、顿号、分号、空格任选作分隔)、校区关键词、选课控制关键词、最低余量,以及一张 12 节 × 7 天的可点击时间网格;关键词做否定感知匹配,「不可选」不会被当成「可选」。

【取数与变化检测】定时替你在页面上点一次「查询」把新数据取回来,然后逐门比对新旧列表与余量,区分「新增 / 余量变多 / 余量变少 / 不再可选」四类变化并分别推送;切换页签造成的整表更换会被识别为换场景,静默更新基线,不打扰你。

【提醒通道】页内提示音、系统桌面通知、标签页标题闪烁计数;并可推送到企业微信机器人、Server酱、PushPlus、OpenClaw 或任意自定义 Webhook,发送失败时把响应体里的错误码原样回显。

【核对与导出】「展开表格」可查看本次读到的全部课程与逐行判定结果,附列名体检与取值体检;支持一键导出 CSV(带 BOM,Excel 直接打开)和在新标签打开完整报告页;内置「诊断」按钮,读不到表格时列出各文档里的 table 结构、表头关键字所在元素与 iframe 情况,可一键复制反馈。

【安全边界】全程只读:唯一会点击的元素是文字恰好为「查询」的按钮,不点「选课 / 提交 / 确认」,更不提交任何表单。

项目实现

我独立完成全部开发:扩展运行代码 2741 行、离线测试脚本 1197 行、Python 备用实现 1671 行,合计约 5700 行。

技术栈:JavaScript(Chrome 扩展 Manifest V3,原生 DOM 无框架)+ Python 3。架构分三层:core.js 与 push.js 只放零 DOM、零 fetch、零定时器的纯函数,content.js 负责配置、Shadow DOM 面板与定时调度,网络请求统一收到 background.js 的 service worker 里发,规避页面跨域限制。

实现亮点:① 只读取数——扩展里唯一会点击的元素是文字恰好等于「查询」的按钮(严格相等,不匹配「选课」「提交」「确认」),Python 侧另有 WRITE_HINTS 拦截写请求。② 变化检测以内容为判据——废弃「同一门课 30 分钟内只推一次」,改为逐门比对基线并区分新增/余量变多/余量变少/不再可选四类,时间间隔只做下限,且被间隔挡下的那一轮不写基线,只推迟不吞掉。③ 跨文档收口——课程表在同源 iframe 里、主文档一张 table 都没有,读取统一走 collectDocuments / collectTables,观察者用「每个文档 childList+subtree+characterData」+「iframe load」+「心跳兜底重挂」三条腿,解决 iframe 换文档后观察者永久失效。

难点:课程表是服务端渲染好的快照,不点「查询」就是空的。试过「按同址重新导航 iframe」和「fetch 同址」两条路:前者触发页面初始化脚本二次调用节次接口、抛 JSON.parse(undefined) 报错,还冲掉查询条件导致表格刷空;后者拿回来的同样是空表。最终改为替用户点一次「查询」按钮、等 3 秒、iframe 仍在加载就再补等。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论