杭电抢课脚本

起因

早就听说过大学里选课靠运气……吾辈在大一的时候总算见识到选课系统的凶悍,开始选课的一瞬间,点击提交按钮,然后页面就无响应了……几分钟之后才会告诉你是否选上了。尽管大一侥幸选上了几门公选,但自此之后我就决定写一个讲课脚本了,于是就有了这个,屡试不爽,从此过上了幸福快乐生活~

这个脚本可以实现自动抢课,只需要将课程提前加入抢课队列就可以了,已经在杭州电子科技大学测试过,理论上也适用于其他使用正方教务管理系统的学校。配合某些VPS食用风味更佳。

 

现在这类的抢课工具越来越多了,家园论坛也做了一个抢课工具,所以这也算另一个轮子。因为担心一些不必要的事情发生,所以这个脚本不开源。

使用

本工具使用Python3开发。所以请先安装好Python3并导入对应的模块

复制目录下的config.json.sample 文件并命名为config.json,然后文本编辑器打开,并修改为你的个人信息:其中StudentID为学号;Password为数字杭电的密码;CourseID为待抢课程(其中课程编号是必填的);RushTime为学校开放选课的时间,可以不填。config.json.sample如下:

{
  "StudentID": "13053134",
  "Password": "MyPassword",
  "RushTime": null,
  "CourseID": {
    "A0501010": "C语言程序设计",
    "A0507070": "C++面向对象程序设计(甲)",
    "B0503720": "分布式系统与云计算"
  }
}

请在选课开始之前运行run.py ,开始抢课,抢课结果会保存在目录下的result.txt中。

 

开发

如果将来这个脚本失效了或是想要改进这个脚本的话,欢迎贡献代码。虽然我觉得杭电的选课系统好像不会升级,这个脚本一年半载之内不会失效……

 

登录教务系统

登录部分还是比较麻烦的,要获得一个token的参数,代码写的很乱,请勿模仿。

这部分参考了很多网上的资料,关于登录页分析可以看下面的链接。

 

验证码问题

在提交选课请求时,选课系统会要求进行验证码验证,好在验证码是数字的,很好识别。这部分代码在ReadCaptcha函数中,我用了一个第三方的接口。你也可以换成其他打码平台或者人工输入。

 

参考