青马自动刷课助手(党课)
自动完成 hnqmgc.17el.cn 平台课程,高速播放+倍速控制+静音+自动循环
Total Installs
180
Today's New
+4
User Rating
5.0 / 5.0 (1)
Current Version
3.1.5
青马在线自动刷课助手
简介
自动完成 湖南青马在线 平台所有培训课程的浏览器脚本。支持视频课和文章课两种类型,高速播放、自动切换小节/倒计时、自动循环课程,全程无需手动操作。
基于脚本猫浏览器扩展运行。
安装
- 在浏览器中安装脚本猫扩展
- 打开脚本猫管理面板 → 新建脚本(或导入脚本文件)
- 将
auto-study.user.js的全部内容粘贴进去 - 保存并启用脚本(开关为 ON)
使用
- 登录 https://hnqmgc.17el.cn/ ,进入个人中心
- 页面右上角会出现控制面板
- 选择倍速(默认16x),确认静音状态,建议使用1X,否则平台不计数
- 点击 "开始自动刷课"
- 脚本自动循环刷完所有课程
控制面板
| 控件 | 功能 |
|---|---|
⠿⠿ 标题栏 |
拖拽移动面板位置(位置自动保存到本地) |
| 状态栏 | 显示当前运行状态(就绪/运行中/学习中/等待倒计时等) |
▶ 开始自动刷课 / ⏸ 停止自动刷课 |
启动/停止自动循环 |
1x 2x 4x 8x 16x |
倍速选择,点击即时生效并持久保存 |
静音中 / 有声音 |
静音切换,持久保存 |
重置已完成记录 |
清空所有进度和日志,从头开始(测试用途) |
📋 刷课日志 (N门) |
查看已完成的课程名称、ID 和完成时间(最近20条) |
课程平台结构
个人中心 (grzx)
└─ iframe: 课程列表 (53 门课,6 页分页)
└─ 每门课 → 课程播放页 (coursePlay)
├─ [视频课] iframe: 播放器 (xgplayer) → 若干学习小节
└─ [文章课] iframe: 文章内容 (qmwbkc) → 倒计时按钮
自动化流程
个人中心 → 找未完成课程 → 翻页遍历所有分页
└─ 找到未完成课 → 同窗口跳转课程播放页
├─ [视频课] 16x 播放 → 小节结束 → 自动下一节
│ └─ 所有小节完成 → 标记完成 → 跳回个人中心
└─ [文章课] 等待倒计时 → 自动点击"完成学习"
└─ 提交成功 → 标记完成 → 跳回个人中心
└─ 自动找下一门 → 循环
└─ 全部完成 → 弹窗提示 + 自动停止
技术实现
视频课 - 反作弊破解
| 网站限制 | 源码位置 | 破解方式 |
|---|---|---|
| 倍速上限 1.5x | play_xxx.html timeHandler |
劫持 playbackRate getter 返回 1.5,setter 写入真实速度 |
| 拖拽进度检测 | play_xxx.html timeHandler |
16x 播放时每250ms推进约4秒,不触发5秒阈值 |
| 倍速警告弹窗 | alert("未学完请勿倍速播放视频") |
拦截 window.alert,吞掉含"倍速""拖动"的消息 |
| 进度拖拽警告 | layer.msg("不允许拖动视频进度") |
拦截 layer.msg 和 layer.alert,吞掉含"拖动"的消息 |
| 小节切换弹窗 | layer.alert("是否进入下一节") |
重写 currentFinish() 跳过弹窗,直接调用 playByJid() |
| 视频会话冲突 | 服务端限制 | 课程间9秒延迟 + 检测到错误15秒后自动刷新重试 |
| 网络波动黑屏 | xgplayer xgplayer-is-error |
每5秒巡检 CSS 类,发现后点击刷新+3秒后整页刷新 |
小节自动推进(三重保障)
| 优先级 | 机制 | 触发条件 |
|---|---|---|
| 1 | currentFinish 重写 |
心跳 AJAX 成功 → 直接跳下一节 |
| 2 | 看门狗巡检 | 每2-4秒检测视频 .ended / .paused 状态 → 强制跳/恢复 |
| 3 | MutationObserver | 弹窗出现 → 自动点击"是"按钮 |
后台播放保持(浏览器最小化不暂停)
| 机制 | 说明 |
|---|---|
| 500ms 播放心跳 | 每0.5秒遍历所有 video,paused 则 play() |
| 实例级 pause 劫持 | 每个 video 实例单独拦截 pause(),页面隐藏时拒绝暂停 |
| visibilitychange 监听 | 页面恢复可见时立即恢复所有视频播放 |
| 看门狗加速 | 页面隐藏时巡检频率从4秒提速到2秒,暂停仅3秒即恢复 |
文章课 - 自动完成
| 步骤 | 说明 |
|---|---|
| 1. 等待按钮 | 等待 #kwbtn(点击完成学习)按钮出现 |
| 2. 等待倒计时 | 每1秒检查按钮 disabled 状态,面板显示剩余时间 |
| 3. 点击完成 | 倒计时归零按钮启用后自动点击 → 触发 wykw() AJAX 提交 |
| 4. 关闭弹窗 | 自动处理"提交成功"弹窗 |
| 5. 返回列表 | 标记完成 → 跳回个人中心继续下一门 |
架构
- 课程列表页:劫持
goPlayCourse改为同窗口重定向,遍历表格和分页,防误判全部完成 - 播放器页:重写
currentFinish自动跳节,看门狗巡检视频状态兜底,网络错误自动恢复 - 文章页:监听倒计时按钮,自动点击完成
- GM存储:跨页面共享完成记录、倍速、静音、自动模式、面板位置等配置
数据存储
所有数据通过脚本猫 GM_setValue 存储在浏览器本地:
| 键 | 内容 |
|---|---|
cfgSpeed |
播放倍速 (1-16) |
cfgMuted |
静音状态 |
autoMode |
自动循环开关 |
doneCourses |
已完成课程日志 [{kcid, name, time}] |
panelPos |
面板拖拽位置 |
常见问题
刷完一门课不自动下一门?
等待3-9秒会自动跳转(含服务端会话过期等待)。如果页面显示"视频观看程序已开启",脚本会拦截弹窗并在15秒后自动刷新重试。
视频黑屏显示"请刷新试试"?
网络波动导致 xgplayer 进入错误状态。脚本每5秒检测 .xgplayer-is-error CSS类,发现后先点击刷新按钮,3秒后整页刷新。
小节结束不自动切换?
三重保障:currentFinish 重写 → 看门狗强跳(4秒巡检) → 弹窗自动点击。三者任一触发即可跳转。
浏览器最小化后视频暂停?
500ms 播放心跳持续强制 play(),配合 visibilitychange 和实例级 pause 劫持,最小化也能正常播放。
文章课卡住了?
文章课有倒计时,面板会显示"文章课 - 倒计时 MM:SS",倒计时归零后自动点击完成按钮。
想重新刷?
点击面板"重置已完成记录",然后"开始自动刷课"。
倍速怎么调?
面板上直接点击 1x/2x/4x/8x/16x 按钮。16x 是实际播放速度,网站以为只有 1.5x(已绕过检测)。注意:平台计学时需要1x播放。