Skip to content

About

南科大TIS选课助手 - 个人修复版:适配2026秋季新TIS接口(SESSION cookie)

Resources

Stars

3 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

南科大TIS选课助手(2026-09 修复版 Fork)

适配 2026 年秋 TIS 平台升级(SESSION cookie / 查询限流)。原版脚本会登录成功即崩溃(原仓库 issue #36),本 Fork 已修复,实测可用(2026-09-07)。

快速使用

前置:Python 3.6+,安装依赖:

pip install requests colorama

第 1 步:写课表。编辑 class.txt,一行一门课,顺序即优先级(最想选的放最上面),第一行留空勿动;课程名须与 TIS 显示完全一致(含班号/语言): 课程名称说明

第 2 步:首次运行。python main.py,全程会话如下(← 后是说明,不需要输入):

$ python main.py
[!] 读取规划课表...
[+] 规划课表读取完毕
请输入您的学号:12413422              ← 输入学号
请输入CAS密码(密码不显示,输入完按回车即可):
                                     ← 输入CAS密码,屏幕不显示,输完直接回车
[!] 测试CAS链接...
[+] 成功连接到CAS...
[!] 登录中...
[+] 登录成功
[!] 是否保存用户信息(y/N)?          ← 直接回车=不保存(避免密码明文落盘)
[!] 从服务器获取当前喵课时间...
[+] 当前学期是2026-2027学年第1学期,为秋季学期
[!] 读取课程信息...
[!] 从服务器下载课程信息,请稍等...
[*] 获取 通识必修选课 列表...
    [+] bxxk: 返回104门 (total=104)
[*] 获取 通识选修选课 列表...
    [+] xxxk: 返回121门 (total=121)
...                                  六个类别依次拉取,约1~2分钟
                                     中途出现"[!] xxx 被限流,N秒后重试"属正常,等它自动重试即可
[+] 课程信息读取完毕,共读取745门课程信息
[!] 是否保存读取的课程信息(y/N)?y    ← 输 y 回车,缓存全量课表(抢课当天直接读它,秒进)
[=========================]
培养方案内课程 : 体系结构-01班-双语     ID为: 5A531BDD...
[=========================]
[+] 成功读入以上信息                   ← 这里必须列出你 class.txt 里的课;一门都没有=课程名写错了,改完重跑
请输入喵课模式:[1] -- 优先按照输入课程顺序喵课,2 -- 所有课程循环喵课,0 -- 退出
1                                    ← 回车选默认模式1(只抢当前最优先一门)
[!] 当前模式: 优先按照输入课程顺序喵课
[*] 按一下回车喵三次,多按同时喵多次,任意字符跳过当前课程
                                     ← 进入待命。建议抢课当天提前10分钟开到这一步,
                                       期间每隔几分钟轻按一次回车保活

第 3 步:到点开抢。选课开放时间一到,在待命提示处按回车:

[*] 按一下回车喵三次,多按同时喵多次,任意字符跳过当前课程
                                     ← 按一次回车 = 3连发(约4秒),跑完看清回执再按,连点无益
[-]                不在设置的时间范围内,课程:体系结构
                                     ← 没到点/时钟略偏,正常,继续按回车
[==================================================
[█]                选课成功
[==================================================
                                     ← 蓝色"==="框 = 抢到了!自动转向下一门

回执速查:

回执 含义 处理
蓝色框"成功" 已选上 无
不在设置的时间范围内 选课尚未开放 继续等待
查询请求频率过高 被限流 程序自动退避重试,无需干预
陌生文案且一直不跳课 服务端提示语有变 输入任意字符回车手动跳过
大量 JSON/报错刷屏 会话过期 重启脚本重新登录(缓存仍在)

脚本运行界面

用 AI Agent 部署(提示词模板)

多数 Agent 框架(ZCode / Claude Code / Cursor 等)无法在运行时替你输入学号密码(交互式终端输入)。正确姿势:让 Agent 完成克隆、装依赖、写课表等部署工作,运行命令由你本人在终端执行。把下面整段发给任意 Agent,替换尖括号内容即可:

请帮我部署南科大 TIS 选课脚本(仓库 https://github.com/wytyKen/SUSTech_Tools):
1. 克隆该仓库到当前目录;
2. 安装依赖:pip install requests colorama(已安装则跳过);
3. 将以下课程按优先级从高到低写入 class.txt,一行一门,第一行留空,课程名须与 TIS 显示完全一致:
   <课程1,例:体系结构-01班-双语>
   <课程2>
4. 不要运行 main.py —— 它需要交互式输入学号和 CAS 密码,你无法代输。
   部署完成后,请输出:进入仓库目录的命令、运行命令,以及运行后的交互要点
   (输入学号密码 → 两个"是否保存"提示均直接回车 → 选模式1 → 到选课开放时间按回车开抢,
   一次回车=3连发约4秒,看清回执再按)。

注意事项

  • TIS 查询接口有用户级频控,"被限流,N秒后重试"属正常,脚本自动重试,勿中断;
  • 某类别课程没拉全、或换了选课轮次:删除 course.txt 重跑即可重新拉取;
  • 遇 CAS 500:提前多试几次登录;
  • 每学期开学前建议先试跑一次验证(TIS 可能随时改接口);
  • 学期服务器证书配置出错时,兼容修改请参照原仓库 issue。

修改记录

2026-09(本 Fork,适配 TIS 升级,实测可用 2026-09-07)

  1. cas_login 改用 requests.Session 跟随 CAS 回跳后的全部重定向并提取 SESSION cookie,替代已废弃的 route/JSESSIONID(修复登录成功即 IndexError 闪退,即原仓库 issue #36);
  2. queryKxrw / queryXkdqXnxq 遇"查询请求频率过高"自动退避重试(5→15 秒,最多 15 次),选课类别间固定间隔 2 秒;
  3. addGouwuche 遇限流额外等待 3 秒,且不将限流回执误判为"已满/冲突"而跳课;
  4. 修复叠加抢课时"已选"回执误删队列中下一门课的并发竞态(自动跳课仅认"冲突/已满";课程实际已选时手动输入任意字符跳过);
  5. 每个选课类别打印实际返回门数,便于核对是否拉全;
  6. 新增 .gitignore(__pycache__/、user.txt、course.txt)。

2024-09(原版):TIS 后台在用户级别加了流量限制,每个有效请求触发新的限制,因此改为同时只选一门课(最重要的);未对流量特征做任何混淆,追求隐蔽性请自行修改(UA、请求参数等)。原版最后检测可用 2024-09-05;无 Python 环境可用 Windows 打包版 v5.1.0。

免责声明

该脚本诞生的目的是研究节省流量,减轻选课系统负担的方法,经过测试确实能达到该效果,因人为修改脚本产生的超过手工频率的流量,由修改者承担责任

虽然Tis经过若干更新,网页端选课产生的流量已经大大减少,但该脚本仍产生更少的流量

About

南科大TIS选课助手 - 个人修复版:适配2026秋季新TIS接口(SESSION cookie)

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages