一. 查看上报学习时间的逻辑这里一般会分为好几种情况1.播放完毕、暂停、退出后自动上报 后端无校验 2. 播放开始,完毕、暂停、退出后自动上报 后端有校验,会根据开始时间和结束时间做对比,结束时间不能小于开始时间+视频时长 3.定时上报,1分钟上报一次本人有幸这三种都遇到过。 二. 应对方法情况一: 在20年初,公司有网络安全学习需要我们学,不能拖动进度条,需要看看完,就是用的第一种,直接burp抓包,改包,三分钟完事。情况二:就是前几天帮我老父亲刷课时的,本来一看,没有定时上报,应该直接改包就可以,先从1,改到100,保存成功,改成200,也保存成功。 但是,就是在 最大时间值(比如视频时长 20 分钟),我传20 * 60 * 1000, 会报错,提示不能拖动进度条,各种review前端代码,发现没什么问题,在20分钟后,上报成功,学习完成。 这种方式需要写代码了, 获取课程列表的接口,找出未学习的课程调用开始学习的接口,然后设置定时器,定时器的时间就是课程时长 + 2分钟重复步骤1,2 这里有些情况可能会登录失效,所以,根据需要刷课时的时间来看,一般几个小时的课程,cookie 啥的不会过期情况三:方式三最为麻烦,需要定时上报,我也是通过写代码的方式,这里推荐两个Node.js库,playwright 和 Puppeteer。 通过代码模拟打开浏览器打开浏览器后进入课程学习获取dom元素,判断哪个元素还没学习进入学习,这里有一个复杂点,判断学习完成的结束,我上一个就是使用的腾讯的sdk,找方法找了半天,感觉过于复杂,于是就选择了10分钟刷新一次页面,如果学习完毕后,返回的html是不一样的。这个都做成定时上报了,所以肯定有失效过去的方式,大概2小时左右过期一次,于是我对程序的设定就是1小时40分钟重新执行 1,2,3,4 我也看过有人获取视频时长,然后通过定时器轮询,1分钟上报一次,这个和情况二的代码基本一致,无非就是把循环逻辑改一下,如果获取视频学习时间和信息等方式过于麻烦,其实也可以通过上述这种模拟操作的方式来做,更简单粗暴,且可以应对所有情况。 项目代码的话就没有开源出来,有的代码里写了cookie,方式三的代码写了用户名和密码在里面。 如果有需要参考和学习的话可以留言,到时候处理一下再发也可以 方式, 代码
十一大魔王i 发表于 2022-11-23 14:58 同样遇到这种类型的,弹验证,弹题,自动结束播放,本想着抓包直接改,结果似乎有验证,本地和云端的数据 ... 曾经被判作弊的路过。 当时啊学习时长刷到70多了,但是在线时长只有几个小时,所以被管理员判定作弊了。然后把那个在线时长也刷了。 现在各种学习网站都是越来越难刷啊,技术人员总是不断改进中。最后弄得一节课不管大小需要抓10多次包,修改数据10多次,最后弄的我都懒得刷了。老老实实挂。
我觉得模拟发包是首选,其次是油猴脚本模拟操作,最低端就是按键精灵了! 这是我做学习助手的经验。虽然我是从按键精灵起步的,但是后来看到抓包分析,用PHP模拟发包,遇到无法解决的加密参数,就先用油猴脚本解决。模拟发包可以做到批量,油猴脚本基本就是本人自助使用。