国科大最坑爹的就是选课了,公选基本都是限人数,部分专业课也是有人数限制。等你打开教务选课,那些课早就没了。我特别写了这几个抢课JS,如果你能搜到我的博客并且你是国科大的,那么希望能帮到你。使用文档如下:
务必使用谷歌或者火狐浏览器,这里以火狐为例
缺点,教务系统一旦崩溃,这代码估计也得崩了,由于是两秒一刷新,那么有可能会延误几秒,保险率80%。
优点,选课的整个流程都会自动,如果成功进入了选课页面,即使页面错误,也会继续刷新,直到成功提交。
第一步。请先确认自己选课在时间上是不冲突的。
第二步。记下自己的课程编号和课程所在的学院。
第三步。我们要改一下方案一.txt中的源代码。方案一中有两个数组,如下
var courseArr = [
'712064H',
'888888H'//这里没有逗号
];
var collegeArr = [0, 2, 7, 12, 14];
第一个填课程编号,按照样子换成自己要选的课。每个编号用单引号括起来,之间用逗号隔开,末尾没有逗号。
第二个填学院编号,学院编号如下
0-人文学院 | 1-外语系 | 2-数学科学学院 | 3-物理学院 | 4-化学与化工学院 |
5-生命科学学院 | 6-地球科学学院 | 7-计算机与控制学院 | 8-资源与环境学院 | 9-管理学院 |
10-体育教研室 | 11-电子电气与通信工程学院 | 12-工程管理与信息技术学院 | 13-材料科学与光电学院 | 14-科技管理学院 |
注意事项:务必使用英文的引号和逗号,务必没有语法错误
第四步。登陆国科大选课系统,点击选择课程,到如下页面。
第五步。按F12键,出现一个调试器。选择控制台一项,如下
第六步。最下方处有一窄条输入框,将方案一中代码复制进去,回车。如果上面出先了黄色字 “refresh 1234354235”说明操作正确。
注意事项:如果开始刷新之后,第四步中图片显示的页面的右半部分出现的是错误页,那么再次单击一下左面的选择课程,这个BUG可以通过每次都强制设置一次iframe的src来修复。
缺点,人工手速不够的话,基本没戏。
第一步。修改方案二.txt 中的源码,修改方式相同,只是方案二米有第二个数组。
第二步。等选课时间到了,自己选择学院,点击选课按钮,进入课程页面(就那个找课程,打勾,然后提交的页面)
第三步。等待页面显示的差不多了。按F12打开调试器。在输入框中复制进方案一的代码,回车。代码会立刻帮忙提交选课。
步骤同方案二,只是代码换成方案三.txt
然后就一直刷,前提是电脑不断网(哭,能不断网么)。
方案一.txt代码
var frame = window.parent.frames.MainFrame; var start = false; var courseArr = [ '712064H', '888888H'//这里没有逗号 ]; var collegeArr = [0, 2, 7, 12, 14]; var cMap = {}; for (var i = collegeArr.length - 1; i >= 0; i--) { cMap[collegeArr[i]] = 1; } var intId = setInterval(function () { console.log('refresh ' + (+new Date())); var btn = frame.document.getElementById('AddCourseBtn'); if (!btn.disabled) { var college = frame.document.getElementsByTagName('input'); for (var i = college.length - 1; i >= 0; i--) { var cid = college[i].id if (!cid) continue; cid = cid.split('_')[1]; if (cMap[cid]) { college[i].disabled = ''; college[i].checked = true; } } clearInterval(intId); btn.click(); setTimeout(function () { start = true; }, 2000); } else { frame.location.reload(); } }, 5000); var intId1 = setInterval(function () { if (!start) return; console.log('refresh ' + (+new Date())); var frame = window.parent.frames.MainFrame; var hasCheck = false; for (var i = courseArr.length - 1; i >= 0; i--) { var course = null; var sel = frame.document.getElementsByTagName('a'); for (var j = sel.length - 1; j >= 0; j--) { if (sel[j].innerHTML == courseArr[i]) { course = sel[j].parentNode.parentNode.getElementsByTagName('input')[0]; } } if (course && !course.disabled) { course.checked = true; hasCheck = true; } } if (hasCheck) { frame.document.getElementById('SureBtn').click(); clearInterval(intId1); } }, 2000);
方案二.txt
//一次手速版 var courseArr = [ '712064H', '888888H'//这里没有逗号 ]; var frame = window.parent.frames.MainFrame; var hasCheck = false; for (var i = courseArr.length - 1; i >= 0; i--) { var course = null; var sel = frame.document.getElementsByTagName('a'); for (var j = sel.length - 1; j >= 0; j--) { if (sel[j].innerHTML == courseArr[i]) { course = sel[j].parentNode.parentNode.getElementsByTagName('input')[0]; } } if (course && !course.disabled) { course.checked = true; hasCheck = true; } } frame.document.getElementById('SureBtn').disabled = ''; frame.document.getElementById('SureBtn').click();
方案三.txt
///无限刷课版 var courseArr = [ '712064H', '888888H' ]; var intId = setInterval(function () { var frame = window.parent.frames.MainFrame; frame.location.reload(); var hasCheck = false; for (var i = courseArr.length - 1; i >= 0; i--) { var course = null; var sel = frame.document.getElementsByTagName('a'); for (var j = sel.length - 1; j >= 0; j--) { if (sel[j].innerHTML == courseArr[i]) { course = sel[j].parentNode.parentNode.getElementsByTagName('input')[0]; } } if (course && !course.disabled) { course.checked = true; hasCheck = true; } } if (hasCheck) { frame.document.getElementById('SureBtn').click(); clearInterval(intId); } }, 5000);