当前位置: 代码迷 >> 综合 >> 如何快速刷网课——直接修改学习状态为“已学完”
  详细解决方案

如何快速刷网课——直接修改学习状态为“已学完”

热度:62   发布时间:2023-09-06 13:11:50.0

问题背景

在某教师培训平台上刷网课,之前破解了其进度条无法拖动的限制:破解网课视频进度条无法拖动问题

但就算进度条能拖动了,还得等视频缓存后才能拖过去。有时缓存很慢,仍然比较麻烦。于是开始探索如何不再看视频,直接将状态修改为“已学完”。

思路是:找到视频播放结束的触发事件,手动模拟一个结束事件。

解决方法

以其中一页视频列表为例,其中有4个未学完的,先选择第一个视频,不用播放。
如何快速刷网课——直接修改学习状态为“已学完”
F12进入开发者模式,查看后台网页代码,看到其中有一大段内嵌的JavaScript代码。
如何快速刷网课——直接修改学习状态为“已学完”
在其中搜索“end”,找到了有意思的一段代码,命名十分规范易懂?。通过阅读前后代码,发现它就是结束事件,关键是一个jQuery的$.get方法:

function endedHandler() {isPlay = false;$.get('index.php?course-app-course-endstatus&type=video&courseid=2351&score=0.5&csid=13&'+Math.random());}

复制这段代码(注意其中courseid=2351字段可能不同,需要修改为具体视频对应的id):
$.get('index.php?course-app-course-endstatus&type=video&courseid=2351&score=0.5&csid=13&'+Math.random());

到console中执行:
如何快速刷网课——直接修改学习状态为“已学完”
对每个未学完视频都进行如上操作(使用同一条指令,只需修改courseid),再刷新列表,发现视频学习状态已变成“已学完”:

如何快速刷网课——直接修改学习状态为“已学完”

操作步骤

  1. 打开网课视频学习页面,选择某个视频。
  2. 按F12进入开发者模式,打开Elements标签,CTRL-F查找“ended”定位到结束代码(这个关键字仅适用于本文破解的网站)。
  3. 复制其中关键代码:$.get('index.php?course-app-course-endstatus&type=video&courseid=2351&score=0.5&csid=13&'+Math.random());到console中执行。
  4. 选择下一个视频,重复步骤2和3(每次只需更改指令中的courseid=XXX即可)。

结论

通过查看后台代码,找到了网课视频学习结束的触发事件代码。在console中复制执行这段代码,即实现了“学习结束”事件的模拟。

形象来讲,我告诉它学完了,它就信以为真了。

  相关解决方案