视频教程: bilibili:CourseGrabber使用教程 douyin:CourseGrabber使用教程
灵感来自Auto_courseGrabber,使用Google Antigravity针对强智教务系统进行适配和优化。
面向强智教务管理系统选课页面(强智科技 jsxsd 架构)的自动化抢课工具。针对hubu选课系统的 jQuery DataTables(#dataView)、queryKxkcList() 异步局部查询机制 以及 多层嵌套 iframe 架构 进行了深度定制与交互极简优化。
此方式免开 F12、免复制代码、免输长串课程代码,配置一次后续全自动:
- 浏览器安装 Tampermonkey(油猴插件)(Chrome 或 Edge 扩展商店搜索安装)。
- 重要前提:在浏览器地址栏打开
chrome://extensions/(Edge 打开edge://extensions/),将页面右上角的 "开发者模式" 开关拨至开启(若关闭,浏览器会静默阻止油猴运行)。
- 点击浏览器右上角油猴图标 -> 选择 "添加新脚本"。
- 打开本地文件
hubuCourseGrabber.user.js,全选复制其全部内容。 - 粘贴到油猴编辑器中,按键盘快捷键
Ctrl + S(保存)。
- 登录教务系统后,直接进入选课入口页面:
- 选课直达链接(示例):
https://jwxt.xxxx.edu.cn/jsxsd/xsxk/xsxk_index?xxxxxxxxxx=xxxxxxx
- 选课直达链接(示例):
- 页面右上角会自动弹出 HUBU 抢课助手控制面板。
- 在下方课程表格中找到目标课程,直接点击该行最右侧的【⚡ 抢这门】按钮。
- 脚本会自动将该课程加入监控队列并立即开启自动监控;一旦有人退课释放名额,脚本毫秒级自动提交选课并跳过所有确认弹窗。
在不方便安装浏览器扩展的电脑上,可通过 F12 直接运行:
- 登录教务系统进入选课列表页,在筛选条件中取消勾选"过滤已满课程",点击"查询"使课程表格完整展示。
- 按键盘
F12(或右键 -> 检查),切换到 Console(控制台) 标签页。 - 复制
hubuCourseGrabber.js文件的全部代码,粘贴进控制台并按回车。 - 运行后,页面表格右侧同样会自动注入 【⚡ 抢这门】 按钮,点击即可开抢。
注意:控制台版本(
hubuCourseGrabber.js)包含更多高级功能,如手动输入课程代码、优先级设置、时间/教师过滤、定时开抢等。
- 行内一键点选:自动在
#dataView课程表格每一行末尾注入【⚡ 抢这门】快捷按钮,点击即抢,告别手动抄写长串数字代码。 - 跨 Frame 单例锁:强智选课页由导航、列表、作息时间表三个 Frame 拼接而成,脚本内置单例锁,自动过滤课表等辅助 Frame,全屏严格只展示 1 个控制面板。
- 静默后台刷新:轮询中自动调用教务系统自带的
queryKxkcList()异步拉取最新数据,无需刷新整个网页,不卡顿、不重载。 - 课表冲突前置识别:自动分析表格状态列中"与已选课程冲突"说明,遇冲突课程前置过滤跳过,无需提交后等待后台报错。
- 双重弹窗自动放行:同时接管浏览器原生
confirm弹窗与强智系统的 EasyUI 对话框(panel window),自动点击"确定",全程无人值守。 - 精准结果判定:通过拦截教务系统弹窗消息内容判断选课成功/失败,避免误判。
| 功能 | 油猴版 (*.user.js) |
控制台版 (*.js) |
|---|---|---|
| ⚡ 表格行内一键抢课 | ✅ | ✅ |
| 自动轮询 + 静默刷新 | ✅ | ✅ |
| 弹窗自动放行 | ✅ | ✅ |
| 冲突前置跳过 | ✅ | ✅ |
| 跨 Frame 单例锁 | ✅ | ✅ |
| 手动输入课程代码 | ❌ | ✅ |
| 优先级 / 时间 / 教师过滤 | ❌ | ✅ |
| ⏰ 定时开抢(毫秒倒计时) | ❌ | ✅ |
debug() 表格调试接口 |
❌ | ✅ |
| 桌面通知(Notification) | ❌ | ✅ |
| 免 F12 / 免复制代码 | ✅ | ❌ |
在控制台中可随时使用 window.hubuGrab 提供的接口:
// 手动启动 / 停止抢课
hubuGrab.start();
hubuGrab.stop();
// 重新显示悬浮控制面板(误关后恢复)
hubuGrab.showUI();控制台版本(
hubuCourseGrabber.js)额外提供hubuGrab.debug()调试接口,可扫描表格数据并输出解析结果。
- 油猴安装后页面没有反应?
- 检查浏览器扩展设置(
chrome://extensions或edge://extensions)右上角的 "开发者模式" 是否开启。 - 检查油猴编辑器保存后是否显示为启用状态。
- 检查浏览器扩展设置(
- 课程已经满员(余量为 0),可以抢吗?
- 可以,这就是捡漏的核心用途。即使名额为 0,点击【⚡ 抢这门】后脚本会将该课程加入监控队列并持续盯盘。一旦有同学退课产生空位,脚本会瞬间秒选提交。
- 注意:需在筛选条件中取消勾选“过滤已满课程”并点击查询,满员课程才会出现在表格中。
- 安全与频率建议:
- 默认轮询间隔为
1200ms,兼顾捡漏响应速度与学校服务器网关稳定性,不建议调至600ms以下。
- 默认轮询间隔为
- 仅供学习研究:本项目仅用于网页自动化技术、DOM 操作与前端脚本的交流与学习,属于个人技术研究性质,切勿用于任何非法用途。
- 严禁商业营利:严禁将本项目代码、衍生版本或相关脚本用于任何商业行为,包括但不限于有偿代抢课程、打包转售、收费定制等牟利行为。
- 合规与文明选课:请严格遵守各个大学相关学生行为规范及教务管理规定。请合理使用辅助工具,切勿恶意将刷新频率调得过高,以免对学校教务服务器造成额外负载。
- 风险自负原则:本项目按"现状"(AS-IS)提供,不承诺任何选课成功率。使用本脚本所产生的一切直接或间接后果(包括但不限于选课冲突、账号被系统风控或限制、学校纪律处分等),均由使用者本人独立承担,作者不承担任何连带责任。
- 版权与处理:若某些大学或相关软件版权方认为本项目存在不妥或侵权之处,请通过 GitHub Issue 联系,作者将第一时间核实并下架、删除相关内容。