Coder Social home page Coder Social logo

sjtu-automata's Introduction

sjtu-automata

Version Language License

寻求维护者:由于本人即将离开毕业,本仓库相关维护工作将无法进行,现寻求新一届维护者,如有兴趣欢迎联系!

注意!此版本为BETA版,未经过严格测试,可能存在BUG,如有问题请提交issue

v0.4.0更新:教务系统限制大约在30-60分钟左右可能需要重新登陆。

上海交通大学抢课脚本
V2协议分析:https://github.com/MXWXZ/sjtu-automata/blob/master/Protocol%20analysis%20v2.md

使用脚本你可以做到

✔️ 无人值守自动抢课
✔️ 并发抢课提升成功率
✔️ 卡时间准时抢课

使用脚本你不能做到

❌ 违反选课规则选课(0day fucked)
❌ 提高您的网速
❌ 保证一定可以抢到课

系统环境测试程度

最佳支持:Manjaro with python 3.7.3 / Ubuntu 18.04 LTS with Python 3.6.7 / macOS with Python 3.8.2

Linux > macOS > Windows

安装

pip3 install sjtu-automata

升级

pip3 install sjtu-automata --upgrade

[可选]验证码自动识别

Windows可以不装,Linux如无图形界面且无法通过其他方式打开captcha.jpeg文件需要安装。

Arch系安装下面两个包:tesseracttesseract-data-eng

Ubuntu 18.04:

sudo apt install tesseract-ocr libtesseract-dev

macOS

brew install tesseract

其他版本/发行版/Windows等自行看文档:https://github.com/tesseract-ocr/tesseract/wiki

简单使用说明

  1. 查看课程号和教学班:想选的课“教学班”第二行点击复制ID即可复制课号+教学班号

  2. 查看课程类型:标签页第二行的字符串即为课程类型

  3. 使用命令选课,格式为autoelect [课程类型ID] [课程号ID] [256位教学班ID]

     autoelect 01 AAAA... aaaa... 10 BBBB bbbb...
    

    上述命令将会选01课程类型下的AAAA课的aaaa(省略256位)教学班和10课程类型下的BBBB课的bbbb(省略256位)课,如果需要更多可以在后面继续添加。

    注:程序运行过程中输入s可以查看选课状态

抢课说明

  • 本程序所有操作均保证当前课程不会减少,即无论你是否已经选上课、无论是否人满等各种情况都不会影响已选课程。换言之,无论何时均保证课程只多不少,重复提交不会影响当前课表。
  • 程序运行后选课将会自动进行,如果失败自动重试,如果课程已满将自动等待并且定时刷新,直到抢成功或者用户退出为止
  • 可以提前开上程序,如果没有开放选课将会自动等待并定时刷新,可以节省登陆的时间
  • 所有指定的课程会同时进行选课,每个课程可占一个或多个线程进行选课增加成功率(多线程一般在网卡的时候才有必要)

参数说明

CLI

使用:autoelect [OPTIONS] [CLASSTYPE-CLASSID-JXBID]

参数 长参数形式 说明
-v --version 显示版本
--no-update 关闭更新检查
-o --ocr 使用OCR识别验证码
--print-cookie 打印登陆cookie
-d --delay 两次尝试选课间隔(默认1s)
-c --check-delay 检查选课是否开放的延迟(默认3s)
-n --number 每个课程的线程数(默认为1)
-h --help 显示帮助
  • CLASSTYPECLASSIDJXBID成组出现,可以出现多组同步进行,但至少有一组
  • CLASSTYPE:2位课程类型
  • CLASSID:课号ID
  • JXBID:256位教学班ID

sjtu-automata's People

Contributors

mxwxz avatar proitheus avatar shxuy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sjtu-automata's Issues

教务网站有没有反爬机制?

大佬,我试了几分钟,这学期代码还是可以成功运行的。
但我不敢尝试持续运行程序半小时以上,我怕触发网站的反爬机制,比如把我的IP地址封掉,或者冻结我的账号。
你跑这个程序的时候用IP代理池了吗?

教务系统更新

马上教务处要换新系统了,希望下一个新版本可以针对新系统进行更新。
image

如果所选课程与已选课程时间冲突,python会崩溃

OS: macOS Catalina 10.15.7
Python: 3.8.2

报错信息(已抹去无关的个人隐私):
[Info] Login successful!
[Info] Starting thread...
[Info] Task running! Input "s" to view status.
[(我想选的课程ID)] Time conflict! Stopped.

[Info] All task finished!
Fatal Python error: could not acquire lock for <_io.BufferedReader name=''> at interpreter shutdown, possibly due to daemon threads
Python runtime state: finalizing (tstate=0x7f9166c0a8a0)

Thread 0x0000700008c49000 (most recent call first):
File "/Users/(我的用户名)/IdeaProjects/sjtu-automata/sjtu_automata/autoelect.py", line 121 in get_input
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/threading.py", line 870 in run
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/threading.py", line 932 in _bootstrap_inner
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/threading.py", line 890 in _bootstrap

Current thread 0x000000010c53adc0 (most recent call first):

不管反正这是个无伤大雅的小问题,崩了就崩了吧 :D

大佬,复现程序思路时遇到了问题

Github里代码更新后多久pip3源更新?

大佬,Github里代码更新后,大概要等多久pip3源会更新?
如果我的pip3用的是阿里的源,大概要等多久pip3会更新?
是不是我要修改__version__.py里的版本号,pip3才会更新?

教务网疑似新增惩罚机制

选课系统似乎增加了限制刷课功能,使用插件后通识课与通选课变成禁选状态,程序中提示Unknown error
所有人都遇到了这个问题

命令可以有缩写

抢课时候要打的命令太长,比如gridModule$ctl02$radioButton,无法自动补全,影响速度
建议在ls列出一些选项之后可以列出一些缩写,比如首字母,或者顺序的数字之类的,要cd或者elect直接打缩写就可以

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.