如何快速的刷完学习星上的网课

疫情原因,春季开学就只能在家上网课了,本来也没啥,就是社会科学方法论要看好多的视频,然后我自己弄巧成拙,发现怎么快速的看完视频的方法。

首先先贴一个链接(https://mp.weixin.qq.com/s/0DK2TwX3C2EcP3h0NUVNFA),哈哈。这是浩昌写的文章,赞颂我的伟大功绩。

先说说自己的发现过程吧,本来看周五下午就是这个课,老师让我们看视频,最开始的时候这个网站的视频只要你鼠标移开后就会自动暂停,但是这个还是比较好解决的,因为我最近在建站嘛,这个暂停应该通过js来监控鼠标的移动,我打开控制台看了看就找到监听事件了,解决了这个自动暂停的问题,就挂在那自己放视频了。

解决视频自动暂停

通过这个暂停的事件,我找到了网站的js文件,我自己也在建站嘛,就知道,大部分js要不然是自己写的,要不然是网上的。所以我就在想,这个暂停的功能肯定不是网上的,人家干嘛搞我们一手心态,肯定是学习星网站他们写的,那他们写的所有js应该都在这个"all-classes.js"文件中,于是我就点开研究研究。

js文件内容

可以看到,这个文件却是挺难看的,就一行,完全不是给人看的,但是还好在开头就给了我个错误的提示,就是这个"Ext._startTime=new Date().getTime();",英文还是很好懂的吧,就是说开始时间是getTime,这个开始时间一下子让我想到的视频开始播放的时间。知道什么时候开始放视频,然后在之后再次获取时间,这么一减,不就是我看了多久的视频吗?于是我就想着怎么改动这个函数,在getTime后面再减个一天的时间,这样就算我看的好久了。但是遇到个问题就是,从网上下的js,我刷新下又回重新下载了,不会用到我改的,我还搜了搜怎么办,说是下个插件去拦截。但是我也没那么去试。我还特意去给这个js分行,以便我去观察,但是分了一阵子之后,就放弃了,太多了,分了行也看不懂,变量都是些什么"a,b,c,d",天知道这是代表什么意思,人都没了。

研究js文件失败后,看了一会视频后,我发现有时候没有看完就显示我完成了,我就想研究研究怎么回事,刚好最近在研究get和post,就打开看看网站的Network了。我发现,在视频播放时,一直会有两个请求。

播放视频时会有的两个请求

那个"monitor"应该是服务器出问题了,之前是好的返回200。名称上就很明显,这个是在告诉服务器我在看视频,另一个是告诉服务器我看的是那个视频。然后我就想着是用python写个程序,就是一直发送这个链接请求,让服务器以为我一直在看视频。但是我看了看链接后面的参数,“monitor"这个请求的链接后面的参数比较简单,最后的_t是时间戳,前面的一个参数看了js文件后知道是一个随机数,就没啥了。主要是另一个看视频的请求,这里参数比较多,研究了一阵。

主要的两个请求链接

主要的两个请求链接

视频请求的大部分参数还是很容易看懂或者是猜到的,但是只有一个enc这个参数就不知道是啥了,而且一直在变,如果我自己乱写一个,请求就出错了,这我就陷入了僵局。这个链接会返回”{isPassed: true}",这个返回的结果也很容易猜到,就是说我这个视频看没看完,我这里是看完了,所以显示的是true,没看完就是false。然后就陷入僵局了,不知道enc怎么生成的话,我发的请求是会出错。我就想着就用这链接,改改再发送看看可不可以。刚开始是改前面的参数,应为前面的参数是说我看到哪了嘛,但是改了改发现没啥用,于是我就从后面的参数改了。后面有重要的参数isdrag和rt,就是是否拖动和看了视频多少算完成,因为这个0.9很容易让我想到是看完90%就算完成,而且我正常看完视频后也验证了我这个猜想。我想着把这个rt调低点,再把isdarg改成1,因为现在没完成视频时,不能拖动进度调。试了几下后,果然返回了true,但是我这视频也是在挂着,快到0.9了,但我用计算器算了下,应该是没有到0.9,我这个改链接成功了。

之后我用下一个视频去试验,发现真的可以。我还把这个发到了课程群里,但是没说是干嘛的。晚上我回来继续完善这个方法,其实只要吧rt改成0,并且在发送这个请求前发送个"monitor"请求,告诉服务器我在看视频,之后看了0%就算完成,服务器就会认为我看完视频了。感觉自己还是很有成就感的。

使用 Hugo 构建
主题 StackJimmy 设计