前言
之前在github找到一个python selenium
刷视频和做测验的源码,挂服务器上问题太多了,最近闲下来破解一下网络请求版的刷视频和做测验。
效果图:
学习通担心的主要是秒过视频会造成学习时长过短的情况,为此没有使用秒过 而是持续请求模拟真实进度,虽然和selenium
版的时长差不多,但是更稳定和便捷。
视频时长都是完整的有计算的。
视频播放解密
先抓到记录视频播放的请求
GET 请求
参数全在URL里,rt
,isdrag
,_t
这几个参数没什么作用,不发送也可以获得响应
除了enc
外的参数都可以在其他请求中获得,本文重点分析enc
首先找切入点,这个请求的构造是由播放器产生的,就会存在参数拼接的情况。
我选择参数名isdrag
全局搜索(当然要选特殊的啦,越特殊重复的结果就越少)
_0x473cb3 = [_0x16dd5d[_0x5d818d(0x242)], '/', _0x16dd5d[_0x5d818d(0x1ee)], _0x5d818d(0x44c), _0x16dd5d[_0x5d818d(0x3af)], _0x5d818d(0x26d), _0x1d0594, _0x5d818d(0x396), _0x16dd5d[_0x5d818d(0x2e2)], _0x5d818d(0x20e), _0x8e40c2, _0x5d818d(0x437), _0x16dd5d['objectId'], _0x5d818d(0x36a), _0x16dd5d[_0x5d818d(0x20c)], _0x5d818d(0x3b1), _0x16dd5d[_0x5d818d(0x3ba)], _0x5d818d(0x1ca), _0x16dd5d[_0x5d818d(0x3bd)], '&isdrag=', _0x9aa55, '&view=pc', _0x5d818d(0x1ef), md5(_0x5dcd20), _0x5d818d(0x1ff), _0x16dd5d['rt'], _0x5d818d(0x2d3), _0x5d818d(0x2ab), new Date()[_0x5d818d(0x1d6)]()][_0x5d818d(0x3d8)]('');
按照对应位置的话更直观一点
'&isdrag=', _0x9aa55, '&view=pc', _0x5d818d(0x1ef), md5(_0x5dcd20),
'&isdrag=', 3 , '&view=pc', '&enc', md5(_0x5dcd20),
// enc = f60c04f7cf2820976479ba3758b7d142,
// 32位,典型的md5加密,所以enc=md5(_0x5dcd20)
继续查看_0x5dcd20
var _0x5dcd20 = Ext[_0x5d818d(0x2a0)][_0x5d818d(0x3ae)](_0x56986f, _0x16dd5d[_0x5d818d(0x3af)], _0x16dd5d[_0x5d818d(0x3bd)], _0x16dd5d[_0x5d818d(0x3ba)] || '', _0x16dd5d[_0x5d818d(0x246)], _0x3a88e3, _0x5d818d(0x24b), _0x16dd5d[_0x5d818d(0x2e2)] * 0x3e8, _0x8e40c2)
// 分析: Ext的二维对象里面是一个方法 小括号后面全是参数
打个断点看一下
在511行停下后转去控制台打印一下坐标和索引分别是什么
String format [{0}][{1}][{2}][{3}][{4}][{5}][{6}][{7}] 59831731 199369846 154762960473479 85bf18fc7d1a0e4707c8b4c771580a53 0 d_yHJ!$pdA~5 767000 0_767
// 这里就很明显了,_0x5dcd20就是将一些参数填充到这个字符串的占位符中
// 如下:
Ext[_0x5d818d(0x2a0)][_0x5d818d(0x3ae)](_0x56986f, _0x16dd5d[_0x5d818d(0x3af)], _0x16dd5d[_0x5d818d(0x3bd)], _0x16dd5d[_0x5d818d(0x3ba)] || '', _0x16dd5d[_0x5d818d(0x246)], _0x3a88e3, _0x5d818d(0x24b), _0x16dd5d[_0x5d818d(0x2e2)] * 0x3e8, _0x8e40c2)
'[59831731][199369846][154762960473479][85bf18fc7d1a0e4707c8b4c771580a53][0][d_yHJ!$pdA~5][767000][0_767]'
这个字符串中的参数,有些是固定不变的,会变动的是取这个_0x16dd5d
数组的成员,基本都是可以在其他请求中取到的,没有加密信息。
对这个字符串进行md5加密就可以得到enc
解决无限debugger
我们在对一些网站进行JS逆向分析过程中,很有可能会遇到网站禁止开发人员使用F12进行网页调试,如果你打开就会遇到无限debugger的这个情况,当我们遇到这种情况,我们该如何进行避免无限debugger弹出呢?
解决方法:
可以直接在控制台输入以下代码,可以有效的跳过无限debugger(Chrome浏览器)
Function.prototype.constructor = function(){}
核心代码
while (currentProgress <= video_info.duration)
{
string enc = $"[{CurrentCourse.ClassId}][{vav.defaults.userid}][{point.jobid}][{point.objectId}][{currentProgress}000][d_yHJ!$pdA~5][{video_info.duration}000][0_{video_info.duration}]";
enc = GetMD5(enc);// 32位md5加密
string requestBody = $"clazzId={CurrentCourse.ClassId}&playingTime={currentProgress}&duration={video_info.duration}" +
$"&clipTime=0_{video_info.duration}&objectId={vav.attachments[0].property.objectid}&otherInfo={vav.attachments[0].otherInfo}" +
$"&courseId={CurrentCourse.CourseId}&jobid={vav.attachments[0].property.jobid}&userid={vav.defaults.userid}&view=pc&enc={enc}&dtype=Video";
// 跳过视频
VideoProgressVo jumpVideoResponse = await ($"https://mooc1.chaoxing.com/multimedia/log/a/{vav.defaults.cpi}/{video_info.dtoken}?{requestBody}")
.WithHeader("Referer", "https://mooc1.chaoxing.com/ananas/modules/video/index.html")
.WithHeader("User-Agent", "apifox/1.0.0 (https://www.apifox.cn)")
.WithHeader("Content-Type", "application/json")
.WithCookies(Cookies)
.GetJsonAsync<VideoProgressVo>();
Log($"当前进度值:{currentProgress},总长度:{video_info.duration},状态:{jumpVideoResponse.isPassed}");
if (!jumpVideoResponse.isPassed)
{
if(currentProgress + 60 > video_info.duration)
{
currentProgress = video_info.duration;
}else if(currentProgress == video_info.duration)
{
currentProgress += 1;
}else
{
currentProgress += 60;
}
}else
{
Log("该视频已完成");
currentProgress = video_info.duration + 1;
}
await Task.Delay(60 * 1000);
}
引用
1.JS调试的时候遇到无限debugger怎么办? : https://blog.csdn.net/qq_19309473/article/details/120573903
牛蛙,不愧是大佬,还是喜欢看分析过程
这个有软件吗
牛逼666
软件要自己抓包吗?还是在哪里下载
为什么每次一到做那个章节测试的时候
会出来一个弹窗显示。应用程序中发生了未经处理的异常,如果单击继续应用程序,将忽略此错误并尝试继续,如果单机退出应用程序将立即关闭。我点完那个继续之后还是运行不了
1.已停止维护更新修复,不要骚扰我
2.原贴评论自己看
好的不好意思丫希望大佬能一直更新优秀的作品
作者老大 崇拜已久 想加您联系方式
大佬 请问可以继续更新刷课软件么
我用网页油猴刷一两个小时才刷两三张 实在是赶时间

本人网课受害者。有六门在这个月要搞完,望大佬解决一下刷课弹窗问题 救救大学人叭
我的软件没有问题,是第三方对接的题库 不免费开放了!
我也觉得作者大大写的这个学习通的代刷版本至少优于于我我用过的其他的脚本。
谢谢给我这么高的评价!
大佬 请问还有什么和你这个类似的刷课软件不?
老大 多少钱 我给您报销
来晚了::>_