对某在线教育网站的刷课检测对抗之旅

由于疫情原因,只能呆在家里上网课,很多时候需要在线上慕课学习,网站对进行各种检测以防止用户作弊。

起因

我想睡觉,我不想上网课,起初只是随便看看,不想搞事情,但是看着看着,打开了控制台,发现了奇怪的东西。

同学,我们已经发现您具有相应的网络知识,了解浏览器的调试模式,这挺好的,以下是要对您说的一些警告信息。

警告:请不要以任何取巧方式进行作弊刷课或帮助其他人刷课,系统已对所有课时的真实性进行统计计算评估,收集数据包括不限于(浏览器头,版本,播放器记录,登录时长,cookie,referer,ip追踪,终端平台,是否符是您的账号,登录过多少个账号,历史登录记录.. 等各种操作数据及ajax随机埋点),一经发现作弊轻则取消学时,重则取消成绩。

我勒个去,真的这么牛逼吗?我就越发想试试了。

各种姿势

1、发包法

一些网课通过开始和记录开始播放视频和停止播放视频作为事件监听,从而可以模拟发包,从而判断是否学习完毕,这个办法在以前可以,但是现在不太适用,现在会在视频中间随机发送请求,判断你到底看了多久,还会检测你的的存活状态。

2、改包

既然你会检测,那我我就改一下我看了多久,举个例子,一般的网课平台都会记录你看了多久,如果看了一半没看完,意外退出了,就从上次的检查点继续播放,那么这里就涉及到了两个容易出现逻辑漏洞的地方,第一点就是视频暂停,一般就会向服务器发送一个请求,记录你这个视频看到哪儿了,下次就接着这个时间点,继续观看,这时候你就可以抓包,把视频往后延长,比如一个视频300秒,time=15 你只看了15秒,你就暂停,抓包改成295,那么有可能你下次就只要看5秒。第二点就是改相应包,点击播放的时候,http请求中一定会有一个带着时间的参数,把他改到快结束的位置,说不定就真的可以快速看完当前视频。当然,有时候可能会有简单时间验证,判断你提交的时间和请求时间之差,如果你的看一段5分钟的视频,但是你提交的间隔是一分钟,就可能会判断你快进了,当然这时候你就应该相应地把提交的时间戳间隔改大就行。但是这个平台比较严格,是服务器判断时间,所以我翻车了,有丶意思,所以我就真的杠上了。

3、判断检测方法

一般来说,网站检测都是JS检测,所以这时候你就需要看看网页源代码的JS,来判断他是怎么检测的。

以这个网站为例,我们一个个分析他的JS,终于在一个JS中发现了他们的检测方法。

简单分析了一下,前端的判断就是看每个视频前要你输入验证码,顺便监测你的鼠标移动,如果没有变化就说明可能是自动化程序,然后定时提交学习时间。

思路

所以我们需要解决的就是以上几个问题。

自动化控制游览器

直接控制游览器,这里我们直接调用谷歌游览器。

网上有很多,这里推荐一个没有特征检测的工具:Miniblink

直接用这个框架进行判断和控制,就是一个普通的游览器,只需要获取播放地址已经播放时间然后自动下一个视频,就行了。

里面还有一个验证码,直接调用识别就好了,网上程序一找一大堆。

至于鼠标验证,也很简单,定时自动移动鼠标就行了。

基本上没有什么大问题,具体风控请自己拿号试验,至于具体实现过程代码,我就不发出来了,仅供内部学习使用。

但是没想到52破解上有老哥也写了一份,但是发现的时候已经凉了。

并且已经跟老哥联系上了,已经解决所有问题,包括自动鼠标轨迹提交,请务必保证前台运行,否则无法获取到轨迹。

52pojie论坛页面:https://www.52pojie.cn/thread-1138951-1-1.html

最新版本下载地址:https://www.lanzous.com/b03sjvhsh