如何让AI给你写油猴脚本,从此网课不用怕!
原创
大表哥吆
大表哥吆
kali笔记
2026年8月18日 00:00
甘肃
在小说阅读器读本章
去阅读
在工作和学习中,我们常常会遇到各类网课平台或继续教育平台,通过看视频来学习。说实在的,真的是一点意思都没有。通常,我们可以用
Tampermonkey(油猴)脚本,来实现刷课时,用极短的时间学完整个科目。但这对普通用户而言,是有很高的门槛!
接下来,我们以某继续教育平台为例,借助AI工具帮助我们来完成油猴脚本的编写。
平台是怎么\"计时\"的
通常,这些平台如果通过插件进行“快进”,是无法获得学时的。要\"加速\",先得搞清楚学时到底是怎么被统计出来的。接下来,我们先将整个页面下载,完成后,将整个页面(主要是相关js)扔给AI进行分析。看看他是如何计时的。
完成后分析效果如下:
1.1 学时来自哪个接口
打开视频学习页video/study.do抓包能看到核心请求只有一个:
POST /mizar/study/activity/video/record.do position=143 ← 当前播放到第几秒 length=180 ← 本次\"真实观看\"了多少秒 token=... ← 表单里自带的会话 token trainCourseId=... courseActivityId=... 等一堆参数
length 就是服务器用来累计学时的那一栏。它由页面的 getLengthAndReTimer() 函数计算出来。
1.2 getLengthAndReTimer 的计时逻辑
页面里埋了一套纯墙钟计时器,关键代码简化后是这样:
// 播放时:记录起始时间function timePlay() { startTime = new Date().getTime(); paused = false;} // 暂停时:把这段时间累加进 totalLengthfunction timePause() { if (!paused) { endTime = new Date().getTime(); totalLength += Math.round((endTime - startTime) / 1000); } paused = true;} // 提交时调用:返回本次累计的观看秒数,然后清零重来function getLengthAndReTimer() { if (startTime != null) { endTime = new Date().getTime(); totalLength += Math.round((endTime - startTime) / 1000); } var total = totalLength; resetTimer(); // totalLength = 0 if (!paused) timePlay(); // 还在播就重新开始计时 return total;}
要点:length 是一个\"增量\",它表示\"自上次提交以来,真实过去了多少秒\",而不是累计看了多久。服务器把每一次的 length 累加起来,就是总学时。
1.3 record.do 提交了什么
页面每 3 分钟触发一次提交(vInterval = 3 * 60 * 1000):
function loopSubmit() { submitVideo(\"1\");} function submitVideo(vType) { var vCurTime = parseInt(getLengthAndReTimer()); // 本次观看秒数 var vVideoPosition = parseInt(vplayer.currentTime()); // 播放位置 if (vCurTime > 0 || \"2\" == vType) { ajaxSubmit({ url: \"/mizar/study/activity/video/record.do\", form: \"myForm\", params: { position: vVideoPosition, length: vCurTime } }); }}
于是真相浮出水面:
- •
length= 两次提交之间的墙钟秒数(只跟时间有关,跟视频画面播到哪无关)。 - •
position= 视频播放位置(跟画面有关,是服务器判断\"看到哪了\"和反作弊的依据)。
1.4 另一条通道:进度打点
播放器 eduplayer 还会每 30 秒向一个独立的统计域名上报一次播放进度:
GET https://video.xxxxx.com/api/update?data={\"video_url\":\"...\",\"curr_time\":143,\"user_id\":\"...\",\"epss_id\":\"...\"}
curr_time 就是当前播放秒数。这条通道更像\"观看进度 + 反作弊埋点\",和 record.do 的学时累计是两套东西,但脚本会一起处理,保证两个通道口径一致。
1.5 视频结束与自动跳转
当视频播完,浏览器触发 ended 事件,页面会:
vplayer.on('ended', function () { onVideoEnd(); // submitVideo(\"2\"):提交结束,length 结算最后一笔 // ...3 秒后 doNext(); // 请求 getNext.do,拿到下一节并跳转});
关键:跳下一节(doNext)只有在 ended 事件真正触发后才会发生。
如上,了解到了整个系统的逻辑结果。接下来便可以让Hermes写初步的脚本。注意:Claude Codex等工具是不会给你写作弊代码的,可以让Hermes先写,写完后让他们去给你改就行了
脚本测试
接下来,我们根据上方得到的步骤让AI给我们写出相关js。并加载到网站进行测试。
对脚本进行测试,汇总BUG
脚本测试效果
如上,一个40分钟的视频,只需看3分钟(要保证你看了)就能完成课时。
更多精彩文章 欢迎关注我们
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论