青马自动刷课助手(党课)

Created at 6 days ago
Updated at 5 days ago
自动完成 hnqmgc.17el.cn 平台课程,高速播放+倍速控制+静音+自动循环
Total Installs
180
Today's New
+4
User Rating
5.0 / 5.0 (1)
Current Version
3.1.5
Script Details

青马在线自动刷课助手

简介

自动完成 湖南青马在线 平台所有培训课程的浏览器脚本。支持视频课文章课两种类型,高速播放、自动切换小节/倒计时、自动循环课程,全程无需手动操作。

基于脚本猫浏览器扩展运行。

安装

  1. 在浏览器中安装脚本猫扩展
  2. 打开脚本猫管理面板 → 新建脚本(或导入脚本文件)
  3. auto-study.user.js 的全部内容粘贴进去
  4. 保存并启用脚本(开关为 ON)

使用

  1. 登录 https://hnqmgc.17el.cn/ ,进入个人中心
  2. 页面右上角会出现控制面板
  3. 选择倍速(默认16x),确认静音状态,建议使用1X,否则平台不计数
  4. 点击 "开始自动刷课"
  5. 脚本自动循环刷完所有课程

控制面板

控件 功能
⠿⠿ 标题栏 拖拽移动面板位置(位置自动保存到本地)
状态栏 显示当前运行状态(就绪/运行中/学习中/等待倒计时等)
▶ 开始自动刷课 / ⏸ 停止自动刷课 启动/停止自动循环
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.msglayer.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,pausedplay()
实例级 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播放。