This is a project that aims to help SJTU undergraduates to choose the course they like within the limited quotas. The program keeps monitoring the number of remaining places of courses in real time and select them as soon as there are places available.
出于学校相关规章制度,本项目已停止服务、相关代码已无法使用。本项目的作者Daniel-ChenJH不会再对原项目的使用提供任何帮助。
本项目如今重新公开,仅做展示个人项目经历所用,不再开放选课相关功能,代码也不会再次更新。未经本人书面同意,任何人或单位不得对本项目代码进行二次开发或使用。对违规使用的用户,项目作者将会及时向Github提DMCA要求下架。同时,使用本程序所带来的所有后果均由使用者承担,项目作者概不负责。
本程序针对上海交通大学本科生选课网站 https://i.sjtu.edu.cn 使用。项目使用urllib、selenium库实现网页自动化爬取、使用tkinter自定义用户交互UI界面、使用poplib管理邮箱,以独立的项目邮箱作为项目作者侧与用户侧的信息交流方式。
程序使用过程中,用户在UI界面中定义抢课策略、抢课时间、课程名等信息后开始抢课,由程序的爬虫部分完成抢课任务后自动向项目邮箱发送包含本次抢课信息的邮件,完成一次抢课任务。
截止2022/09/19项目下架日,本项目主页总点击量达到了6500+,抢课期间单周最大访问量达到900+,获得了92+个star。经统计,在2022/9/13至2022/9/19的7天时间内,程序总计帮助53位同学抢到了84门课。
Daniel-ChenJH,
2023.10.15.
本程序为上海交通大学全自动抢课脚本,可在Windows64和Mac两大主流操作系统上运行,支持准点开抢、持续捡漏、替换抢课三种模式,由Daniel-ChenJH(邮箱:13760280318@163.com)编写,于2021年2月25日首次推出。
本程序基于https://i.sjtu.edu.cn 网站的当前结构编写。 https://i.sjtu.edu.cn 是上海交通大学本科生处理个人事务的网站,学生可以在此选择下学期的课程。
通过使用这个程序,您将能够立即选择您指定的课程。如果您想选择的课程目前已经满员,程序将会持续刷新网站页面,以每分钟80次左右的刷新速度检查是否有剩余名额,一旦有空余名额,程序将立即帮您选择这门课。
请注意不要经常使用这个程序,因为凭借它您几乎可以在任何时间持续刷新检查所有您想要的课程,您的同学可能会因此而生气。
用于准点开放抢课。支持课号选课、课程名选课以及按“课程名:老师名”匹配原则选课。
由用户指定开抢的时间,格式为'%Y-%m-%d %H:%M:%S'。范例如:2021-05-24 17:35:20 。考虑到本程序登录系统需要时间,请在抢课开放前提前约30秒至1分钟即开始运行本程序。如果您希望程序一运行就立即开始抢课,您当然可以在此填入一个过去的时间。
当教学信息服务网短时间内流量过大时,会导致服务器出现问题,比如一直加载但上不去、404、Service Unavailable等报错。这种是服务器端的问题,脚本也无能为力。因此,在抢课准点开放时,脚本使用的效率不能保证,强烈建议您同时手动抢课尝试。
用于抢课已经开放后持续查询。支持课号选课、课程名选课以及按“课程名:老师名”匹配原则选课。 用户界面中指定开抢的时间那一栏将不被程序考虑。
注意!此处课程写法有关键变化!模式三只支持使用课号检索!
当用户已经选上课程B时,他可能有一门更想去的但没法与B同时选择的课A,且课A此时已经属于满员状态。在模式3下程序将持续刷新课程A的情况,一旦发现A有空余名额,立即退掉B并选择A,即“替换抢课”。
在使用模式3时,请自行确保您已经选上课程A,否则程序或许会报错而不能执行。为保险起见,请在运行完此模式后立即自行前往教学信息服务网确认抢课结果。
具体写法可参考GUI用户界面的提示。
对模式3的补充说明:
如果您觉得Daniel-ChenJH的程序不错,请在Github上点亮“star”以给他一点鼓励。 项目链接:https://github.com/Daniel-ChenJH/Course-Bullying-in-SJTU
祝君好运!
Daniel-ChenJH,
2022.09.13.
对于任何使用问题或讨论,请联系13760280318@163.com。如果是关于程序运行失败的讨论,请于附件中加上您的使用日志log文件‘user/qiangke_log_file.log‘(在当前目录下的user文件夹中),并于邮件中注明具体是哪一次运行(程序开始运行的时间)出了问题。
出于学校相关规章制度,本项目已停止服务、无法使用。本项目的作者Daniel-ChenJH不会再对本项目的使用提供任何帮助。
若您对本项目的结构与实现方法感兴趣,则欢迎联系13760280318@163.com进行讨论。
本程序检测Chrome浏览器版本与驱动版本的对应情况的部分代码来自Gitee社区开发者“少年二师兄”(@z417)的项目“selenium-webdriver-manager”,在此表示感谢。