Emeraldsheep 发表于 2022-8-10 11:07

关于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-18 10:53

本帖最后由 Emeraldsheep 于 2022-8-30 20:20 编辑

关于有人说可以用Fiddler抓包,我当时就是电脑上搞了很久没抓成功,网上查了很久也没有什么方法
这篇主要是我自己的经验分享,当时就是因为Fiddler抓半天包没一点用才去安卓端抓包的
(如果有哪位大神可以用Fiddler抓包的也可以分享下方法)
直接批量暂时还没发现请求头有什么规律,只能手动抓包后批量下载

7Wen 发表于 2022-9-2 19:58

Emeraldsheep 发表于 2022-8-30 20:22
支持大佬
发这篇帖子主要是当时自己有下载需求而网上一直没有方法,自己探索了一点点才总结出来的
我是 ...

哈哈,也是学生党。。回头有空发一下吧,最近有点忙。难点在于360的壳,不过也可以取巧的方式过了

jimmyzang 发表于 2023-6-6 22:14

jango93 发表于 2023-6-6 14:13
大佬,你在2020年的那个文章写作工具还能发一下下载吗,下不了了。。。

用ChatGPT吧,比我那个好用。我的工具地址:
链接: https://pan.baidu.com/s/185BHwp9SXRXo8Q1WEEVBtQ?pwd=9aki 提取码: 9aki

xixicoco 发表于 2022-8-10 17:05

主要就一个抓包嘛

vr4u 发表于 2022-8-11 14:13

classin里面是什么课程

odium 发表于 2022-8-12 01:48

很有借鉴意义,谢谢楼主!

hua111 发表于 2022-8-12 09:22

Emeraldsheep 发表于 2022-8-12 10:29

vr4u 发表于 2022-8-11 14:13
classin里面是什么课程

classin是个中立的技术平台,就和钉钉网课差不多
课程只是学校自己录制的

Lazarus123 发表于 2022-8-14 20:30

非常好啊

平淡 发表于 2022-8-19 22:20

还没弄过classin的课程,改天去看看热闹

GMaxx 发表于 2022-8-26 14:27

可以帮忙下载吗,考研党:1没时间2没动手能力,可以开个新帖挂悬赏。
页: [1] 2 3 4 5 6 7
查看完整版本: 关于Classin网课回放的下载研究(2022.07)