既然客户端是在 web 上的,那么首先要干的当然是按一下 f12 看看弹窗的实现代码。然后我便发现了这么一个东西:
![捕获.PNG][1]
光看这个东西,凭借我为数不多的 javascript 知识,已经知道了大概的原理:新建一个变量来存储播放的秒数,每隔 1 秒累加一次,然后当变量累加到一定值时弹出题目。我看了看后台,和我预想的原理确实差不多:
![捕获.PNG][2]
在最开始时,我本来是想在控制台里面直接定义值的,但我发现即使我将所有值定义为 0,还是会照常弹出值,看来这条路是走不通的,控制台定义的变量与网页读取的变量不是一个值。
当我还想继续研究的时候,我继续往下翻,结果发现了这个东西:
![捕获.PNG][3]
当我看到这段代码时,我一度以为我发现了一劳永逸的终极解决方案,赶忙开搞。但无论我在控制台直接执行这个方法,还是写了个脚本直接 post 这个接口,刷新课程列表仍然显示未完成。可能是因为服务器端有时间校验算法,也有可能是我没有仔细研究脚本,但无论怎么样,这条路是走不通的,我也不是专门研究 js 的,没法看懂全部代码。那么只能走最后的一条路:直接修改代码,让定时器失效。
在经过一段时间的查找后,我发现 chrome 是有办法直接替换网页内容的。具体操作如下:
按下 f12,进入 “源代码” 页面,点击替代,选中 “启用本地替代”:
![捕获.PNG][4]
我这边已经添加好了,如果是第一次添加会显示 “选择放置替换项的文件夹”,随便新建一个文件夹然后选中就好,选中后会提示请求权限,直接允许。
这一步做完后,我发现 f12 显示的源代码可以直接编辑了。于是我开始将定时器改造成了这样:
![捕获.PNG][5]
按下 ctrl+s 保存,然后再刷新一下网页,控制台便变成了这样:
![捕获.PNG][6]
经过测试本次改造完美达成了目标,不仅不会弹出题目,在看完视频后课程列表也显示了已完成。
终于可以放下电脑快乐刷小破站了。
2022.3.6
[1]: https://my.toho.red/usr/uploads/2022/03/98944978.png
[2]: https://my.toho.red/usr/uploads/2022/03/1414410636.png
[3]: https://my.toho.red/usr/uploads/2022/03/4248933191.png
[4]: https://my.toho.red/usr/uploads/2022/03/1057079627.png
[5]: https://my.toho.red/usr/uploads/2022/03/2544401216.png
[6]: https://my.toho.red/usr/uploads/2022/03/496899477.png