一站式超星学习通自动刷课管理系统,支持多学生、多课程并行学习,提供 Web 管理界面。
- 🎓 多学生管理 — 添加多个学生账号,独立管理各自课程
- 📚 自动刷课 — 自动播放视频任务点,模拟真实学习进度
- 📊 进度追踪 — 实时显示每门课程的完成进度
- 🌐 公网访问 — 内置 Cloudflare Tunnel 穿透,手机随时查看
- 📱 移动适配 — 响应式界面,手机端卡片布局
- 🔐 管理员认证 — JWT 登录保护
chaoxing-web/
├── backend/ # 后端服务
│ ├── main.py # FastAPI 入口 + SPA 路由
│ ├── api/
│ │ ├── auth.py # JWT 认证 (admin/123456)
│ │ ├── students.py # 学生 & 课程 CRUD API
│ │ └── websocket.py # WebSocket 实时推送
│ ├── models/
│ │ └── database.py # SQLAlchemy 模型 + SQLite
│ ├── services/
│ │ ├── chaoxing_service.py # 超星 API 封装 (登录/课程/进度)
│ │ └── study_engine.py # 刷课引擎 (多线程调度)
│ ├── static/ # 前端构建产物 (自动生成)
│ └── requirements.txt
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── main.js # Vue 入口 + Axios 配置
│ │ ├── router/index.js # 路由配置
│ │ └── views/
│ │ ├── Login.vue # 登录页
│ │ ├── Students.vue # 学生列表 (PC表格/手机卡片)
│ │ ├── AddStudent.vue # 添加学生
│ │ └── StudentCourses.vue # 课程详情 + 进度
│ ├── package.json
│ └── vite.config.js
└── start.sh # 一键启动脚本
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.10+ · FastAPI · SQLAlchemy · SQLite |
| 前端 | Vue 3 · Vite · Element Plus |
| 认证 | JWT (python-jose) |
| 刷课 | 调用 chaoxing CLI 子进程 |
| 穿透 | Cloudflare Tunnel (cloudflared) |
浏览器/手机 → cloudflared → FastAPI(:8080)
├── /api/* → REST API
├── /ws/* → WebSocket 推送
└── /* → SPA (Vue)
管理员点击「开始学习」
→ study_engine 启动线程
→ 为每门课生成 config.ini
→ subprocess 调用 chaoxing CLI
→ 轮询进度 → WebSocket 推送前端
- macOS / Linux
- Python 3.10+
- Node.js 18+
- chaoxing CLI 已克隆到同级目录
cd backend
pip3 install -r requirements.txtcd frontend
npm install
npm run build# 启动后端 + 构建前端 + 开启公网穿透
bash start.sh启动后会显示:
╔══════════════════════════════════════════════════════╗
║ 超星刷课管理平台 - 已启动 ║
╠══════════════════════════════════════════════════════╣
║ 📍 本地访问: http://localhost:8080 ║
║ 🌐 公网访问: https://xxx.trycloudflare.com ║
║ 👤 管理员: admin / 123456 ║
╚══════════════════════════════════════════════════════╝
按 Ctrl+C 停止所有服务。
# 复制前端构建产物到后端
cp -r frontend/dist backend/static
# 启动后端
cd backend
python3 -m uvicorn main:app --host 0.0.0.0 --port 8080打开网页,输入管理员账号:
- 用户名:
admin - 密码:
123456
点击「添加」按钮,填写:
- 学生账号: 学号
- 密码: 登录密码
- 登录方式: 机构账号登录 / 手机号登录
系统会自动验证登录并拉取该学生的全部课程。
点击学生姓名进入课程列表:
- 开关: 控制该课程是否参与自动学习
- 全选 / 全不选: 批量操作
- 刷新: 从超星服务器拉取最新进度
- 在学生列表点击「开始学习」
- 或在课程详情页点击「开始」
系统会按顺序学习所有已启用的课程。
- 进度条实时显示完成比例
- 课程状态: 已完成 / 学习中 / 待学习 / 已停用
# 后端服务日志
tail -f /tmp/chaoxing-backend.log
# 刷课引擎日志 (带时间戳)
tail -f /tmp/chaoxing-study.log
# 某个学生某门课的详细日志
tail -f chaoxing/log_student_{学生ID}_{课程ID}.log- 首次启动会自动创建 SQLite 数据库
- 如果开了系统代理,刷课引擎会自动绕过(已内置
trust_env=False) - Cloudflare Tunnel 每次启动地址会变,适合临时使用
start.sh仅在前端源码有变更时才会重新构建
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/login |
管理员登录 |
| GET | /api/students |
学生列表 |
| POST | /api/students |
添加学生 |
| DELETE | /api/students/{id} |
删除学生 |
| GET | /api/students/{id}/courses |
课程列表 |
| PUT | /api/students/{id}/courses/{cid}/toggle |
切换课程开关 |
| PUT | /api/students/{id}/courses/batch-toggle |
批量切换 |
| POST | /api/students/{id}/start |
开始学习 |
| POST | /api/students/{id}/stop |
停止学习 |
| POST | /api/students/{id}/refresh |
刷新进度 |
MIT