当前位置: 首页 > news >正文

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

接到求助,帮朋友完成20课时的网络学习。
我想都没想就接下了,寻思找个接口直接把学习时间提交上去,易如反掌。
最不济最不济,咱还能16x播放,也简单的很

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

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

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

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

1,直接post播放时长。

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

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

2,窗口多开。

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

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

(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);
};
})();

 总结:
简单记录下

相关文章:

  • swift语言下SurfGen库做的爬虫是什么样的 ?
  • Stable Diffusion源码调试(二)
  • Spring Cloud学习(一)【SpringCloud介绍/服务远程调用】
  • springcloud商城源码
  • 数字图像处理 基于numpy库的傅里叶变换
  • 工程(十二)Ubuntu20.04LSD_SLAM运行
  • 计算机毕业设计java+springboot+vue的旅游攻略平台
  • 【广州华锐互动】VR综合布线虚拟实验教学系统
  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
  • 二叉树的前序、中序、后序、层序遍历
  • 【深度学习】Yolov8 区域计数
  • HCIE-CCE
  • LeetCode热题100——链表
  • 【Mquant】6:构建价差套利(二)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • 【EOS】Cleos基础
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • angular学习第一篇-----环境搭建
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • isset在php5.6-和php7.0+的一些差异
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node.js
  • Promise初体验
  • Python学习之路16-使用API
  • React中的“虫洞”——Context
  • Spring Boot快速入门(一):Hello Spring Boot
  • TCP拥塞控制
  • Tornado学习笔记(1)
  • Vue2 SSR 的优化之旅
  • 大主子表关联的性能优化方法
  • 服务器从安装到部署全过程(二)
  • 观察者模式实现非直接耦合
  • 通过几道题目学习二叉搜索树
  • 问题之ssh中Host key verification failed的解决
  • 追踪解析 FutureTask 源码
  • C# - 为值类型重定义相等性
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragam once 和 #ifndef 预编译头
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (bean配置类的注解开发)学习Spring的第十三天
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (南京观海微电子)——COF介绍
  • .NET CLR Hosting 简介
  • .net core 6 集成和使用 mongodb
  • .Net 路由处理厉害了
  • .net/c# memcached 获取所有缓存键(keys)
  • .net中的Queue和Stack
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ??myeclipse+tomcat
  • @EnableConfigurationProperties注解使用
  • @Transactional 详解
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择