每日一言
Lend me 100 yen since I’m beautiful. – Aisa Himegami
from A Certain Magical Index
Github项目地址:helium777/bupt-course-grab: 北京邮电大学 (BUPT) 本科抢课脚本, 同时适用于其他使用强智教务系统的学校.
第一步:确认课程名称
在选课前,可以根据本专业培养方案,或者查询班级课表的方式,确认下一学期选课的具体名称,不能有一个字符的偏差,否则可能抢课失败。

建议直接从教务中复制课程的名字,如

羽毛球课程的名字为:羽毛球[男]
但是有些课程后连着班号且在同一行,如:

班号不用复制,课程名为:计算机网络课程设计
第二步:准备脚本
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
let COURSES = [ "面向对象程序设计实践(Java)", "计算机网络课程设计", "数据结构课程设计", "智能车实践训练", "计算机组成原理课程设计", ];
let COURSE_GROUPS = [ ];
let INTERVAL_MS = 100;
let ENABLE_GGXXK = false;
let mainInterval; let targetCourses = [];
const start = () => { mainInterval = setInterval(handler, INTERVAL_MS); console.log("--- start grabbing courses ---"); };
const stop = () => { clearInterval(mainInterval); console.log("--- stop grabbing courses ---"); };
const handler = () => { if (targetCourses.length === 0) { getCourses(); }
console.log( `--- found ${targetCourses.length} courses ---` );
let paths = [ "/jsxsd/xsxkkc/xxxkOper", "/jsxsd/xsxkkc/bxxkOper", ]; if (ENABLE_GGXXK) { paths.push("/jsxsd/xsxkkc/ggxxkxkOper"); } for (let course of targetCourses) { for (let path of paths) { $.get(path, course, console.log); } } };
const getCourses = () => { let params = { sEcho: 1, iColumns: 11, iDisplayStart: 0, iDisplayLength: 999, }; let paths = [ "/jsxsd/xsxkkc/xsxkBxxk", "/jsxsd/xsxkkc/xsxkXxxk", ]; if (ENABLE_GGXXK) { paths.push("/jsxsd/xsxkkc/xsxkGgxxkxk"); } for (let path of paths) { $.post(path, params, (data) => { let aaData = $.parseJSON(data).aaData; for (let course of aaData) { if (COURSES.includes(course.kcmc)) { targetCourses.push(course); } else if (COURSE_GROUPS.includes(course.fzmc)) { targetCourses.push(course); } } }); } };
start();
|
将脚本中的课程名替换为你需要抢课的课程名,每两个元素中以英文符号,
间隔
如果需要抢公选课请按照代码注释将对应地方的false
改为true
第三步:准备抢课
在抢课前提前编辑好脚本,并复制整个脚本内容到剪贴板,在抢课开始时,进入到此界面后:

同时按下键盘的ctrl
+shift
+j
打开浏览器控制台,并将脚本复制到控制台中:

然后直接按键盘的回车键,脚本开始执行。
若看到这样的输出:

当前教学班已选择,则选课成功。
若没有抢到课也没有关系,可以调大抢课间隔,长时间的挂着持续抢课,一般可以捡漏。
关于网络
校内抢课
校内抢课建议直接连接校园网即可。
校外抢课
校外抢课建议使用atrust客户端,使用教程:北京邮电大学ATrust VPN使用指南-北京邮电大学信息化技术中心
个人感觉会比webvpn快一些。