今天早上走亲戚的时候,我去亲戚家拜访,家里人打算与亲戚一起出去玩,但我想宅在这边,不想出门。于是亲戚便给了我一个任务:让我帮忙刷网课做任务。如果只是刷网课的话,放着不管就好了,为什么要找个人看着呢?我一开始也是这么想的,但这个系统有个很恶心的地方:每隔大概10分钟就会弹一道题出来,如果不答完题就会一直暂停,所以放着不管是没办法一直刷的。但是我是不可能认真看网课的,而且我也不喜欢守着电脑每隔几分钟就答一次题的感觉。因此我便开始研究有什么办法可以一劳永逸。

既然客户端是在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