好友
阅读权限10
听众
最后登录1970-1-1
|
一. 查看上报学习时间的逻辑这里一般会分为好几种情况 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,方式三的代码写了用户名和密码在里面。 如果有需要参考和学习的话可以留言,到时候处理一下再发也可以 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|