关于Classin网课回放的下载研究(2022.07)
本帖最后由 Emeraldsheep 于 2022-8-19 08:32 编辑本文仅供学习交流,请勿用于任何违法行为,转载时请注明出处
Classin是我见过的这些网课平台里面较为优秀的一个,不仅有自习室,老师上课还有很多功能可以使用
关于抓包问题,下面是我个人的探索经验,总结一下
问题起源
网课期间学校使用Classin平台上网课响应国家号召,但是我发现学校会删除一个星期前的网课视频来节省存储空间
(毕竟classin是个收费平台),无法进行以前课程的二次复习,这我就觉得很无奈,于是就想着抓包尝试下载
问题解决过程
当时在Windows端下载时,用Fiddler抓包发现根本没用(win7 win10我都测试过没用),下载了半天发现根本没用,只好转到万能的安卓端下载
(后来才发现Classin根本不走代{过}{滤}理)
我最现在我自己的手机上测试,我用的是没有ROOT的手机,在安卓上用HTTPCanary抓包发现Classin抓包抓不到什么东西,唯一的一个网址还是测试网址 sayhello
而且播放页面还会提示加载失败
后来在抓包错误区发现是自己的设备已经是安卓7了,不信任HttpCanary的根证书,后面用ROOT的手机才抓到了包
(默认会提示Handshake failed,原因是根证书不被信任),去异常区才发现又有这么多包失败
问题解决方法
注意了
Classin抓包要ROOT!!
(手机不方便ROOT的可以在电脑上使用网上的安卓模拟器,这个可以自行百度,能用ROOT就行)
(自己试过平行空间,发现根本没用,抓的东西还是跟主机一样的没用)
其次,因为安卓7以后系统默认不再信任用户安装的CA证书,要将HTTPCanary的根证书移动至系统CA,具体过程看图
>如果你是手机端4.4.5之前的版本
本人亲测就算你添加到了系统CA,进入播放页面还是没有什么东西,网课视频还是加载不出来
但后面发现这个网课链接不是m3u8,而是就像B站那样的直接视频链接+ 204 partial content模式,看多少请求多少文件
但我们可以绕过最开始的握手,就是先播放了一段时间后,再打开抓包,回到Classin播放后,就可以获得网课链接了
注意先不要开抓包播放一段时间后,再开抓包回到播放页调到视频结尾(让应用请求新视频),加载完成之后就可以去抓包去看结果了
下载方面,随便把链接拖到浏览器里或是IDM直接下载就可以了
(注意下载的时候要把亲测要把抓包软件关掉,否则只会报错无响应)
>如果你是手机端4.4.5以后的版本
那就方便多了,新版本貌似没有那么严格的请求机制,这是我最近几次才发现的,最近新版本甚至能抓到出网课数据结构的json
能够直接下载
直接打开HTTPCanary>> 打开Classin 》》 点击你要下载的网课视频》》 等待加载一段时间会提示加载失败,没事,这时候就可以去抓包去看看结果了
(虽然网课视频还是无法加载)(我也不知道为啥)
嫌麻烦的可以吧版本更新到最新版本,可以直接抓取
(注意下载的时候要把亲测要把抓包软件关掉,否则只会报错无响应)
这是我抓到的json文件包(部分隐私信息已经屏蔽)
里面的内容还是很详细的,但我们主要是要网课链接
{
"data": {
"lessonId": "476634xxxxx",
"lessonName": "2022B四月份网课 xxx班数学(1/8)",
"lessonData": {
"lessonStatus": 1,
"vodList": [
],
"fileList": [
{
"CIDExt": "",
"CreateTime": "2022-04-19 09:43:10",
"Duration": 7201,
"EndTime": "2022-04-19 09:43:06",
"FileId": "387702302xxxxxxx",
"FileName": "",
"Message": "Operation succeeded",
"Playset": [
{
//注意这里的PlaySet就是网课视频的地址 playback.eeo.cn域名
// 还有默认抓到的包里是有反斜杠转义符的 比如https:\/\/playback这种,注意要把反斜杠去掉
"Definition": "0",
"Url": "https://playback.eeo.cn/794b4a11vodbj125241xxxx/xxxxxxxxxxxxxxxxxxxx/f0.mp4"
}
],
"Size": "293289461",
"SourceType": 0,
"StartTime": "2022-04-19 07:43:08",
"Status": "2"
},
{
"CIDExt": "",
"CreateTime": "2022-04-19 10:12:48",
"Duration": 1780,
"EndTime": "2022-04-19 10:12:44",
"FileId": "387702302xxxxxxxxxx",
"FileName": "",
"Message": "Operation succeeded",
"Playset": [
{
"Definition": "0",
"Url": "https://playback.eeo.cn/794b4a11vodbj1252xxxxx/aadfd0eexxxxxxxxxxxxxxx/f0.mp4"
}
],
"Size": "82364417",
"SourceType": 0,
"StartTime": "2022-04-19 09:43:06",
"Status": "2"
}
]
},
"lessonStarttime": "1655595600",
"lessonEndtime": "1655604600",
"courseLogo": "",
"courseName": "2022B四月份网课 xxx班数学(1/8)",
"courseIntroduce": "",
"lessonIntroduce": "",
"schoolLogo": "/upload/images/20190425/24a56ee4xxxxxxxxxxx.png",
"schoolName": "网课1区",
"showClassVideo": "1",
"avoidRecordReplay": "0",
"teacherId": "5086xxxx",
"teacherName": "xx",
"teacherAvatar": "",
"teacherBio": "",
"chatroomStatus": "0",
"playNum": 0,
"likeNum": 0,
"onlineNum": 0,
"lessonCode": 1,
"lessonStatus": 1,
"userType": 1,
"lessonType": "1"
},
"error_info": {
"errno": 1,
"error": "程序正常执行"
}
}
本帖最后由 Emeraldsheep 于 2022-8-30 20:20 编辑
关于有人说可以用Fiddler抓包,我当时就是电脑上搞了很久没抓成功,网上查了很久也没有什么方法
这篇主要是我自己的经验分享,当时就是因为Fiddler抓半天包没一点用才去安卓端抓包的
(如果有哪位大神可以用Fiddler抓包的也可以分享下方法)
直接批量暂时还没发现请求头有什么规律,只能手动抓包后批量下载 Emeraldsheep 发表于 2022-8-30 20:22
支持大佬
发这篇帖子主要是当时自己有下载需求而网上一直没有方法,自己探索了一点点才总结出来的
我是 ...
哈哈,也是学生党。。回头有空发一下吧,最近有点忙。难点在于360的壳,不过也可以取巧的方式过了 jango93 发表于 2023-6-6 14:13
大佬,你在2020年的那个文章写作工具还能发一下下载吗,下不了了。。。
用ChatGPT吧,比我那个好用。我的工具地址:
链接: https://pan.baidu.com/s/185BHwp9SXRXo8Q1WEEVBtQ?pwd=9aki 提取码: 9aki 主要就一个抓包嘛 classin里面是什么课程
很有借鉴意义,谢谢楼主! vr4u 发表于 2022-8-11 14:13
classin里面是什么课程
classin是个中立的技术平台,就和钉钉网课差不多
课程只是学校自己录制的 非常好啊 还没弄过classin的课程,改天去看看热闹 可以帮忙下载吗,考研党:1没时间2没动手能力,可以开个新帖挂悬赏。