Skip to content

About

基于 Python FastAPI + Vue 3 的网页版正方教务9.0系统自动抢课工具。

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GMU AutoSelect — 广州航海学院自动抢课系统

基于 Python FastAPI + Vue 3 的网页版正方教务系统自动抢课工具。

功能

  • 教务登录:RSA 加密 + ddddocr 验证码自动识别,失败自动降级手动输入
  • 课程浏览:登录后自动拉取可选课程列表,支持分页和关键词搜索
  • 一键添加:点击课程行末的"+ 抢"按钮,自动获取教学班详情并加入抢课队列
  • 优先级排序:↑↓ 按钮调整抢课顺序,高优先级优先抢
  • 并发抢课:可调节并发数(1-5),遍历教学班 + 指数退避重试
  • 定时开抢:设置精确时间,到点自动触发
  • 换课监控:抢到低优课自动监控高优课名额,发现空余名额自动换课
  • 实时日志:WebSocket 推送,终端风格显示抢课过程和结果
  • 数据持久化:SQLite 保存抢课目标和历史日志

启动

一键启动 (Windows)

双击 start.bat

手动启动

# 后端
cd backend
pip install -r requirements.txt
python main.py

# 前端 (另开终端)
cd frontend
npm install
npm run dev     # 开发模式
npm run build   # 生产构建

打开浏览器访问 http://localhost:8420

技术栈

层 技术
后端 Python 3.9+, FastAPI, httpx, APScheduler, aiosqlite, ddddocr
前端 Vue 3 (Composition API), Pinia, Tailwind CSS 4, Vite
通信 REST API + WebSocket
存储 SQLite (aiosqlite)

项目结构

GMU_AutoSelect/
├── start.bat                 # Windows 一键启动脚本
├── backend/
│   ├── main.py               # FastAPI 入口 + WebSocket
│   ├── requirements.txt
│   └── app/
│       ├── api/
│       │   ├── auth.py       # 登录/验证码/Session
│       │   ├── courses.py    # 课程搜索/教学班查询
│       │   ├── engine.py     # 抢课调度 REST API
│       │   └── tasks.py      # 抢课目标 CRUD
│       ├── core/
│       │   ├── config.py     # 配置文件
│       │   └── database.py   # SQLite 初始化
│       ├── models/
│       │   └── schemas.py    # Pydantic 数据模型
│       └── services/
│           ├── zf_client.py  # 正方教务系统 API 异步封装
│           ├── grab_engine.py# 抢课引擎 + WebSocket 广播
│           └── scheduler.py  # 定时任务调度
└── frontend/
    ├── index.html
    └── src/
        ├── App.vue           # 主布局
        ├── main.ts           # 入口
        ├── assets/main.css   # 全局样式
        ├── stores/main.ts    # Pinia 状态管理
        ├── composables/
        │   └── useWS.ts      # WebSocket 封装
        └── components/
            ├── Toolbar.vue      # 顶部工具栏 (登录 + 操作)
            ├── CourseTable.vue   # 可选课程表格
            ├── TargetTable.vue   # 抢课目标表格
            └── LogPanel.vue      # 实时日志面板

使用流程

  1. 双击 start.bat 启动服务
  2. 浏览器打开 http://localhost:8420
  3. 在顶部工具栏输入学号和密码,点击登录
  4. 验证码自动识别,确认后完成登录
  5. 课程表格自动加载可选课程,支持搜索和翻页
  6. 点击课程行末的"+ 抢"添加抢课目标
  7. 在下方目标表格中用 ↑↓ 调整优先级
  8. 设置并发数(可选)和定时开抢时间(可选)
  9. 点击"开始抢课",实时日志显示抢课进度
  10. 抢到课后可开启"换课监控"自动换高优课

登录原理

GMU 教学管理系统是正方教务系统(新版),登录流程如下:

  1. GET 登录页面 → 获取 csrf_token
  2. GET 公钥接口 → 获取 RSA modulus/exponent
  3. GET 验证码图片 → ddddocr 识别
  4. RSA 加密密码 → POST 登录请求

选课搜索需要额外的 xkkz_xh 参数(页面隐藏字段 firstXkkzXh),已自动处理。

注意事项

  • 仅支持广州航海学院教务系统 (jwx.gzmtu.edu.cn)
  • 选课需在教务系统开放期间使用
  • 建议并发数不超过 3,避免被封
  • 密码仅在内存中使用,不会写入磁盘
  • 本工具仅供学习交流使用

License

MIT

About

基于 Python FastAPI + Vue 3 的网页版正方教务9.0系统自动抢课工具。

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages