凌晨两点,学习宿舍里四个人都没睡。通脚三个在刷学习通视频,本自一个在写脚本。动刷
写脚本那个是视频我。那会儿《形势与政策》挂了六节视频课,学习每节四十五分钟,通脚不能拖进度条,本自不能切后台,动刷每过十分钟弹一次人脸识别。视频我算了算,学习光这一门课就要耗掉我四个半小时。通脚四个半小时够我写完一篇课程论文,本自或者打八把排位,动刷或者睡一个完整的视频觉。
所以我花了二十分钟写了个脚本。
原理不复杂。学习通网页版的视频播放器本质上就是一个HTML5的video标签,进度条能不能拖,取决于前端JS有没有锁死currentTime属性。大部分情况下,它锁了,但锁得不严实。你打开开发者工具,找到那个video元素,在控制台里手动改currentTime,视频画面会跳,但后台记录的学习时长不会跟着跳——它单独在计时。
于是思路就有了:不改进度,改时间流速。
学习通判断你是否在“认真观看”,靠的是几个信号——页面是否可见、是否有鼠标键盘操作、视频是否在播放、播放时长是否累计。脚本要做的事情很朴素:每隔几秒模拟一次鼠标移动事件,保持页面焦点;监听弹窗,检测到人脸识别的时候自动截图(提前准备好一张自己的照片)上传;最核心的一步,把视频播放速率调到16倍速,然后让脚本在后台挂着。
16倍速是个微妙的值。再高,学习通的服务端会检测到异常播放速率,直接判定无效。16倍刚好卡在很多检测阈值的下面。一节四十五分钟的视频,三分钟就跑完了。
我写完脚本的那天晚上,帮室友也挂上了。四个人,四台电脑,屏幕上都是静音播放的视频,画面里老师在讲课,嘴一张一合,像一条缺氧的鱼。我们该干嘛干嘛。
后来这事传开了。隔壁宿舍来问,楼下也有人加我微信。我改了几版脚本,加了自动切换下一节、自动处理弹窗、断网重连的功能。有人拿去挂选修课,有人拿去挂党课,还有人挂完了整个学期的网课。
说实话,我知道这事不对。学习通设计这些限制,是为了让你真的看视频。脚本绕过了这套规则,本质上是一种作弊。但另一个事实是,那些视频课的质量,你我都清楚。四十五分钟里有效信息可能不到五分钟,剩下的全是念PPT和废话。用四个半小时去换五分钟的信息量,这个交换比本身就有问题。
我后来把脚本删了。不是因为良心发现,是因为学习通更新了检测机制,16倍速被识别了。再后来听说有人用虚拟机加模拟器跑,有人直接抓包改请求,道高一尺魔高一丈。
这事没什么结论。脚本能写,课还在那儿,视频还在播。只是每次看到“请认真学习”的弹窗,我都觉得它像在跟空气说话。