Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

☁️ 云服务器刷课

弃油猴,上云端。把你的刷课程序丢到服务器上跑。

Python Platform Last Commit Stars

🔥 超星学习通 · 智慧树 · 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   # 填入你的账号密码

方式二:Docker 部署

# 下载配置
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 微信推送支持的补丁脚本

集成 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 版补充:复习模式 & 常见坑

以下以超星 Python 刷课程序(如 Samueli924/chaoxing)为例。平台不同细节有差,思路通用。

1. 复习模式 = 重播已绿视频,涨真实观看时长

  • 命令行加 --force 即复习模式:无视任务点"已完成/绿点",把已通过的视频从 0 整段重播、逐步上报,累计真实观看秒数(speed=1 才安全)。
  • 油猴版对应该功能的开关一般叫「复习模式」。

2. 最容易踩的坑:内容视频是「非任务点」

  • 章节里很多 mp4 是非任务点内容视频(卡片附件 job: null),默认解析会整个丢掉 → 程序秒跑完、你以为刷了,其实观看时长一个字没涨。
  • 现象:日志全是 空页面任务完成。判断:--force 跑完几十秒就结束、没出现 强制重刷视频: xxx。
  • 处理:把 job: null 且 type=video 的附件在 --force 下也收进来再播;这类卡片的 otherInfo 里常带 &courseId=,上报前要先切掉(否则进度上报接口会报错)。

3. 后台/cron 启动必带账号或 -c

  • 不带账号跑、又没 -c 指定配置时,程序会走 input() 问手机号/密码 → 在 nohup/cron 下 EOFError 崩溃(还容易变成无限重试循环)。
  • 必须 python3 main.py -c config.ini --force(账号/课程/倍速/jobs/开关全放 config.ini),或显式 -u 手机 -p 密码。

4. 定时建议

  • 别排 0–6 点:超星对凌晨学习敏感,易标记、甚至清进度。优先 21–23 点窗口。
  • 同一账号手机端一打开就会把服务器 session 顶掉(403)。应对:任务脚本加单实例锁 + 失败自动重跑(每次重跑都重新登录,能自愈),或约定刷课时手机别登同账号。
  • 长任务 = 多支视频 1 倍速整播,可能跑数小时,预留时间别跨凌晨。

5. 附带小功能:每章刷 1 次学习次数

  • config count_per_chapter = true:每真正打开处理完一章,调一次计次 API(studentstudyAjax + setlog),轻量不停留。
  • 想要慢速带心跳的完整「刷学习次数」循环,用独立的 -lc/--add-learning-count。

6. 安全红线(重要)

  • config.ini 含账号密码 + 题库 token,绝不提交进 git / 公共仓库。
  • .gitignore 至少配:
    config.ini
    config.ini.*
    *.log
    logs/
    *.bak*
    cookie*
    __pycache__/
  • 推送前扫一眼,别把课程 ID、手机号、服务器 IP、token 带进公开库。

如果你也在用云服务器做这些事,欢迎交流。觉得有用点个 ⭐ 。

About

☁️ 云服务器刷课框架 — 弃油猴上云端. Docker/crond/微信推送. 适配超星学习通/智慧树/雨课堂/WE Learn. 附 PushPlus 补丁

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages