弃油猴,上云端。把你的刷课程序丢到服务器上跑。
🔥 超星学习通 · 智慧树 · WE Learn · 雨课堂 — 部署到云服务器,跑完微信通知你
油猴脚本好用,但浏览器一关就停、电脑一合就断、手机一锁屏就被杀。
把刷课程序部署到云服务器上,crond 定时执行,跑完微信通知你。全程不用管。
┌─────────────────────────────────────────────────────┐
│ │
│ 你的电脑(以前) 云服务器(现在) │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ 浏览器+油猴 │ │ Python 刷课程序 │ │
│ │ 挂后台怕被杀 │ → │ crond 定时调度 │ │
│ │ 合盖就断 │ │ 24h 不关机 │ │
│ └──────────────┘ └────────┬─────────┘ │
│ │ │
│ 跑完触发│ │
│ ▼ │
│ ┌──────────────┐ │
│ │ PushPlus │ │
│ │ 微信推送通知 │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ 手机收到消息 │
│ "今日进度:5/10 ✅" │
│ │
└─────────────────────────────────────────────────────┘
| 对比 | 油猴脚本(浏览器) | 云服务器方案 |
|---|---|---|
| 运行条件 | 必须开着浏览器 | 24h 在线,无需操作 |
| 被杀后台 | 容易,合盖/锁屏就断 | systemd 保活,稳 |
| 同时跑多个 | 一个浏览器标签一个 | Docker 多容器并行 |
| 通知 | 需额外配置 | PushPlus 直接推微信 |
| 成本 | 免费 | 最低 ¥10/月(轻量云) |
适合人群: 有云服务器闲置的学生、不想一直开着电脑刷课的、想体验服务器部署的。
本项目不包含刷课核心代码(尊重原作者),提供部署框架。支持以下开源项目:
| 平台 | 项目 | 说明 |
|---|---|---|
| 超星学习通 | sheshuyu/fuckCourse | 四合一,支持答题/视频/直播/签到 |
| 超星学习通 | Samueli924/chaoxing | Flask+Celery 版,支持 Docker |
| 智慧树 | VermiIIi0n/fuckZHS | 专攻智慧树 |
| 多平台 | ocsjs/ocsjs | 桌面版应用 |
你可以选一个部署,或多个同时跑。
- 一台云服务器(腾讯云/阿里云/华为云 最低配即可,¥10-30/月)
- 一个 PushPlus token(免费注册)
# 下载部署脚本
wget https://raw.githubusercontent.com/ZaZ712/cloud-course-automation/main/deploy.sh
bash deploy.sh
# 进入项目目录
cd /opt/course-auto
# 克隆刷课程序(以 fuckCourse 为例)
git clone https://github.com/sheshuyu/fuckCourse.git scripts/
# 安装依赖
source venv/bin/activate
pip install -r scripts/requirements.txt
# 配置账号信息
cp scripts/config_template.ini config/config.ini
vim config/config.ini # 填入你的账号密码# 下载配置
git clone https://github.com/ZaZ712/cloud-course-automation.git
cd cloud-course-automation
# 设置推送 token
export PUSHPLUS_TOKEN="你的token"
# 启动
docker compose up -d
# 手动执行一次
docker exec course-auto bash -c "cd /app/scripts && python main.py"crontab -e
# 添加(参考 crontab.example):
0 8 * * * cd /opt/course-auto && source venv/bin/activate && python scripts/main.py >> logs/course.log 2>&1每天早上 8 点自动开刷,日志存到 logs/course.log。
刷完自动推送到微信(需配置 PushPlus token):
export PUSHPLUS_TOKEN="你的token"
python push.example.py "刷课完成" "今日进度 5/10"效果:
📚 刷课进度通知
━━━━━━━━━━━━━━━
课程:习近平新时代中国特色社会主义思想
进度:5/10(50%)
时间:14:30
━━━━━━━━━━━━━━━
继续加油 💪
集成到你用的刷课程序中,在刷课完成后调用 push() 即可。
| 文件 | 作用 |
|---|---|
deploy.sh |
服务器初始化脚本(装 Python/依赖/crond) |
docker-compose.yml |
Docker 部署模板 |
crontab.example |
定时任务配置参考 |
push.example.py |
微信推送示例代码 |
fix_notification.py |
为刷课项目添加 PushPlus 微信推送支持的补丁脚本 |
大多数刷课开源项目(如 fuckCourse、chaoxing)内置通知框架,支持 ServerChan/Qmsg/Bark/Telegram,但没有 PushPlus。
本仓库提供补丁脚本,一键添加 PushPlus 支持:
# 1. 下载补丁
wget https://raw.githubusercontent.com/ZaZ712/cloud-course-automation/main/fix_notification.py
# 2. 对刷课项目打补丁
python3 fix_notification.py /path/to/fuckCourse/chaoxing/api/notification.py
python3 fix_notification.py /path/to/chaoxing/api/notification.py
# 3. 在 config.ini 中配置
# [notification]
# provider = PushPlus
# url = 你的PushPlusToken之后每次刷课完成或出错,自动推送到微信。
- 使用专用服务器,不要给他人 root 权限
- 定期修改密码
- 配置文件不要提交到 git(已在 .gitignore)
如果你也在用云服务器做这些事,欢迎交流。觉得有用点个 ⭐ 。
以下以超星 Python 刷课程序(如 Samueli924/chaoxing)为例。平台不同细节有差,思路通用。
- 命令行加
--force即复习模式:无视任务点"已完成/绿点",把已通过的视频从 0 整段重播、逐步上报,累计真实观看秒数(speed=1才安全)。 - 油猴版对应该功能的开关一般叫「复习模式」。
- 章节里很多 mp4 是非任务点内容视频(卡片附件
job: null),默认解析会整个丢掉 → 程序秒跑完、你以为刷了,其实观看时长一个字没涨。 - 现象:日志全是
空页面任务完成。判断:--force跑完几十秒就结束、没出现强制重刷视频: xxx。 - 处理:把
job: null且type=video的附件在--force下也收进来再播;这类卡片的otherInfo里常带&courseId=,上报前要先切掉(否则进度上报接口会报错)。
- 不带账号跑、又没
-c指定配置时,程序会走input()问手机号/密码 → 在 nohup/cron 下EOFError崩溃(还容易变成无限重试循环)。 - 必须
python3 main.py -c config.ini --force(账号/课程/倍速/jobs/开关全放 config.ini),或显式-u 手机 -p 密码。
- 别排 0–6 点:超星对凌晨学习敏感,易标记、甚至清进度。优先 21–23 点窗口。
- 同一账号手机端一打开就会把服务器 session 顶掉(403)。应对:任务脚本加单实例锁 + 失败自动重跑(每次重跑都重新登录,能自愈),或约定刷课时手机别登同账号。
- 长任务 = 多支视频 1 倍速整播,可能跑数小时,预留时间别跨凌晨。
- config
count_per_chapter = true:每真正打开处理完一章,调一次计次 API(studentstudyAjax+setlog),轻量不停留。 - 想要慢速带心跳的完整「刷学习次数」循环,用独立的
-lc/--add-learning-count。
config.ini含账号密码 + 题库 token,绝不提交进 git / 公共仓库。.gitignore至少配:config.ini config.ini.* *.log logs/ *.bak* cookie* __pycache__/
- 推送前扫一眼,别把课程 ID、手机号、服务器 IP、token 带进公开库。
如果你也在用云服务器做这些事,欢迎交流。觉得有用点个 ⭐ 。