本文仅供学习交流,请勿用于任何违法行为,转载时请注明出处
Classin是我见过的这些网课平台里面较为优秀的一个,不仅有自习室,老师上课还有很多功能可以使用
关于抓包问题,下面是我个人的探索经验,总结一下
问题起源
网课期间学校使用Classin平台上网课响应国家号召,但是我发现学校会删除一个星期前的网课视频来节省存储空间
(毕竟classin是个收费平台),无法进行以前课程的二次复习,这我就觉得很无奈,于是就想着抓包尝试下载
问题解决过程
当时在Windows端下载时,用Fiddler抓包发现根本没用(win7 win10我都测试过没用),下载了半天发现根本没用,只好转到万能的安卓端下载
(后来才发现Classin根本不走代{过}{滤}理)
我最现在我自己的手机上测试,我用的是没有ROOT的手机,在安卓上用HTTPCanary抓包发现Classin抓包抓不到什么东西,唯一的一个网址还是测试网址 sayhello
而且播放页面还会提示加载失败
IMG_20220727_091340.png
IMG_20220727_091353.png
后来在抓包错误区发现是自己的设备已经是安卓7了,不信任HttpCanary的根证书,后面用ROOT的手机才抓到了包
(默认会提示Handshake failed,原因是根证书不被信任),去异常区才发现又有这么多包失败
IMG_20220727_091605.png
IMG_20220727_091243.png
问题解决方法
注意了
Classin抓包要ROOT!!
(手机不方便ROOT的可以在电脑上使用网上的安卓模拟器,这个可以自行百度,能用ROOT就行)
(自己试过平行空间,发现根本没用,抓的东西还是跟主机一样的没用)
其次,因为安卓7以后系统默认不再信任用户安装的CA证书,要将HTTPCanary的根证书移动至系统CA,具体过程看图
Screenshot_20220807-113314.png
Screenshot_20220807-113331.png
Screenshot_20220807-113337.png
>如果你是手机端4.4.5之前的版本
本人亲测就算你添加到了系统CA,进入播放页面还是没有什么东西,网课视频还是加载不出来
但后面发现这个网课链接不是m3u8,而是就像B站那样的直接视频链接+ 204 partial content模式,看多少请求多少文件
但我们可以绕过最开始的握手,就是先播放了一段时间后,再打开抓包,回到Classin播放后,就可以获得网课链接了
注意先不要开抓包播放一段时间后,再开抓包回到播放页调到视频结尾(让应用请求新视频),加载完成之后就可以去抓包去看结果了
Screenshot_20220727-092710.png
Screenshot_20220727-092732.png
下载方面,随便把链接拖到浏览器里或是IDM直接下载就可以了
(注意下载的时候要把亲测要把抓包软件关掉,否则只会报错无响应)
>如果你是手机端4.4.5以后的版本
那就方便多了,新版本貌似没有那么严格的请求机制,这是我最近几次才发现的,最近新版本甚至能抓到出网课数据结构的json
能够直接下载
直接打开HTTPCanary 打开Classin 》》 点击你要下载的网课视频》》 等待加载一段时间会提示加载失败,没事,这时候就可以去抓包去看看结果了
(虽然网课视频还是无法加载)(我也不知道为啥)
嫌麻烦的可以吧版本更新到最新版本,可以直接抓取
(注意下载的时候要把亲测要把抓包软件关掉,否则只会报错无响应)
Screenshot_20220807-120524.png
Screenshot_20220807-120613.png
Screenshot_20220807-121216.png
这是我抓到的json文件包(部分隐私信息已经屏蔽)
里面的内容还是很详细的,但我们主要是要网课链接
[JavaScript] 纯文本查看 复制代码
{ "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": "程序正常执行" }}