吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7789|回复: 106
收起左侧

[Web逆向] 某网络学院学习的”偷懒“思路分析

  [复制链接]
wanglaihuai 发表于 2023-2-16 14:56
前几日接到求助,帮朋友完成20课时的网络学习。
我想都没想就接下了,寻思找个接口直接把学习时间提交上去,易如反掌。
最不济最不济,咱还能16x播放,也简单的很。



然鹅,当我登陆的时候,发现自己还是太天真。
首先,不能多开窗口。打开第二个播放窗口后,就会弹出:





其次,倍速播放不管用……无论多快的播放速度,获取学习时长的间隔还是一样的。
经过分析,这个学习,是通过每隔一段时间,通过post请求上报视频播放时间,而不是上报播放时长。





这已经是我见过防作弊做的最好的站了(除了人脸识别上课)。

于是有两个思路来“偷懒”:

1,直接post播放时长。

按照请求格式,把session_time字段写的长一写(甚至直接写成本节课的时长,我没测试。)然后提交,就可以获得学习时长。






但是,这个方法太暴力,不知是否会出发后台警报(之前测试一个学习平台,post请求发出去,返回了“账号作弊已记录,拉黑……”巴拉巴拉的)。

2,窗口多开。

稳妥一点的还是老老实实的挂课,多窗口学习。
搜索“停止计时”,发现多窗口检查居然是通过一个xhr请求的返回值1/2来判断。那我们可以拦截并修改这个请求,即可绕过检测。




这里我用的油猴脚本,也没啥技术含量,就几行简单的代码:


[JavaScript] 纯文本查看 复制代码
(function() {
    'use strict';
    const originOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function (method, url) {
    if (url.indexOf("checkcourse.do")>-1) {
        this.addEventListener("readystatechange", function () {
            if (this.readyState === 4) {
            const res = JSON.parse(this.responseText);
            Object.defineProperty(this, "responseText", {
            writable: true,
       });
       this.responseText = "1";
           console.log(this.responseText);
      }
    });
  }
  originOpen.apply(this, arguments);
};
})();


总结:
虽然写来简单,但是过程还挺曲折的,作为一个js小白,绕了不少弯路,也学习到了不少新东西。大佬勿喷。

免费评分

参与人数 19吾爱币 +21 热心值 +15 收起 理由
giy + 1 热心回复!
blkLock + 1 + 1 谢谢@Thanks!
无敌小王 + 1 + 1 我很赞同!
evarn + 1 + 1 谢谢@Thanks!
paidaxing2049 + 1 鼓励转贴优秀软件安全工具和文档!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
zuishi + 1 谢谢@Thanks!
hackerxj + 1 要是代码有过程解析就完美了
bbsv + 1 用心讨论,共获提升!
1MajorTom1 + 1 热心回复!
wxue + 1 + 1 没仔细看,以为加速可搞掂,惭愧!
lsy832 + 2 + 1 用心讨论,共获提升!
Bob5230 + 1 谢谢@Thanks!
meilidemm + 1 谢谢@Thanks!
wanfon + 1 + 1 热心回复!
破竹而入 + 1 + 1 用心讨论,共获提升!
xyl52p + 1 谢谢@Thanks!
zk20120707 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

eeyou 发表于 2024-3-9 22:09
https://v4.21tb.com/的平台是学习课时的。但真的时长太多,这个倍速能解决一部分 但他有个实际开始播放的累积真实时间统计,试过了逻辑上是测试本地播放的真实时间 ,如何修改这个数值让本地能放行倍速的成果上传啥的,因为光有倍速后这个时间如果不达到时长要求也是不行的,而这个时长要求是直接显示的 和视频的总时长相关非常少。

1

1


以下代码是右侧属性那的,观察下来应该是上面箭头处的数值被哪里赋值了,如何修改可以平掉这里的限制?我感觉是本地的脚本统计出来的,但因为我是小白仅喜欢折腾,不知道方向和手法方法,请大佬们指点下如何下手?
  • accessKey: ""
  • attributeStyleMap: StylePropertyMap {size: 4}
  • attributes: NamedNodeMap {0: style, style: style, length: 1}
  • autocapitalize: ""
  • autofocus: false
  • baseURI: "https://v4.21tb.com/courseSetting/coursePlay/30a02b3d65a64b4a9a1507f614f4833d%26knjd%2630a02b3d65a64b4a9a1507f614f4833d%2647d8de32dba94754be6e6b2d5e0c5ef2"
  • childElementCount: 0
  • childNodes: NodeList [text]
  • children: HTMLCollection []
  • classList: DOMTokenList(0)
    • length: 0
    • value: ""
    • [[Prototype]]: DOMTokenList
  • className: ""
  • clientHeight: 0
  • clientLeft: 0
  • clientTop: 0
  • clientWidth: 0
  • contentEditable: "inherit"
  • dataset: DOMStringMap {}
  • dir: ""
  • draggable: false
  • elementTiming: ""
  • enterKeyHint: ""
  • firstChild: text
  • handwriting: true
  • hidden: false
  • id: ""
  • inert: false
  • innerHTML: "(观看时长不少于10:44,您已学习10:44)"
  • innerText: "(观看时长不少于10:44,您已学习10:44)"
  • inputMode: ""
  • isConnected: true
  • isContentEditable: false
  • lang: ""
  • lastChild: text
  • localName: "span"
  • namespaceURI: "http://www.w3.org/1999/xhtml"
  • nextElementSibling: span#ultraClearOperate
  • nextSibling: span#ultraClearOperate
  • nodeName: "SPAN"
  • nodeType: 1
  • nonce: ""
  • offsetHeight: 0
  • offsetLeft: 0
  • offsetTop: 0
  • offsetWidth: 0
  • outerHTML: <span class="object-value-string value" title="(观看时长不少于10:44,您已学习10:44)" style="box-sizing: border-box; min-width: 0px; min-height: 0px; white-space-collapse: preserve; unicode-bidi: -webkit-isolate; color: var(--sys-color-token-property-special);">"<span style=\"line-height: 38px; color: rgb(255, 255, 255); font-size: 14px; float: left;\">(观看时长不少于10:44,您已学习10:44)</span>"
  • outerText: "(观看时长不少于10:44,您已学习10:44)"
  • ownerDocument: document
  • parentElement: div.extra-operate.hide
  • parentNode: div.extra-operate.hide
  • part: DOMTokenList [value: '']
  • scrollHeight: 0
  • scrollLeft: 0
  • scrollTop: 0
  • scrollWidth: 0
  • slot: ""
  • spellcheck: true
  • style: CSSStyleDeclaration {0: 'line-height', 1: 'color', 2: 'font-size', 3: 'float', accentColor: '', additiveSymbols: '', alignContent: '', alignItems: '', alignSelf: '', …}
  • tabIndex: -1
  • tagName: "SPAN"
  • textContent: "(观看时长不少于10:44,您已学习10:44)"
  • textprediction: true
  • title: ""
  • translate: true
  • virtualKeyboardPolicy: ""
zty001 发表于 2023-2-17 13:05
有点需求,每年要参加继教,不能倍数不能多开都算了,不在乎这一两天,慢慢挂就是,关键是学习几分钟就弹个窗口出来,有时候喊答题,有时候需要点继续学习之类的,不然就停止学习了,简直离不开人,上班又忙,没时间管,回家挂,照看娃儿也没时间去关,24个课时,挂了一个星期都没挂完,领导同事什么的,还会让帮他一起挂了,简直要疯掉
随风飘摇 发表于 2023-2-16 15:04
smorfia 发表于 2023-2-16 15:15
感谢楼主,谢谢楼主的知识!!
lfer 发表于 2023-2-16 15:18
“偷懒”,才是人类进步的最大源动力。感谢分享。
与时俱进 发表于 2023-2-16 15:34
做个成品吧
 楼主| wanglaihuai 发表于 2023-2-16 15:40

最后已经是成品了,放到油猴就能多开窗口。
Pwaerm 发表于 2023-2-16 15:42


如果记词和判断在后端。这样不会有实际的效果。
侃遍天下无二人 发表于 2023-2-16 15:42
这个我好像见过,我的解决办法是挂到云主机上放几天不管
alilongyaxi 发表于 2023-2-16 15:49
感谢分享
 楼主| wanglaihuai 发表于 2023-2-16 15:50
侃遍天下无二人 发表于 2023-2-16 15:42
这个我好像见过,我的解决办法是挂到云主机上放几天不管

问题在于,每节课都要点开才能学,还不能多开窗口。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 21:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表