0%

记录一次网络分析

Itheima课程资源简单分析

1、背景介绍

2、工具准备

3、抓取并分析网络请求

4、注意事项

5、总结

6、声明

1、背景介绍

Itheima是我们在学习路上的一座绕不开的丰碑,升值我们的大学课本都是采用黑马家的,Java课程更是其最核心的内容,就解决了不少我学习上的困惑,秉持学习的态度,我抓包其课程的内容,希望可以有所收获。

1
https://m.boxuegu.com/class/outline-1112

图中的courseId即课程名,返回的响应体是JSON类型的

格式化一下返回的JSON

可以看出返回的是所有课程大纲,有几个比较重要的关键字需要提取一下moduleIdisTry=1sectionId就是请求到的比较重要的字段,有了这些字段,继续后面的请求分析

2、工具准备

项目 描述
itheima网站 我们需要抓包的网站
Firefox 调试所使用的浏览器
Thor+Anubis+在线工具 手机上抓包+重放+正则+去重
Postman 接口批量测试

3、抓包调试

获取全部课程大纲moduleId

1、向服务器请求,并获取到返回的JSON数据

1
https://m.boxuegu.com/portalApp/bxg/course/v2/1112/chapter?courseId=1112

2、处理返回的JSON

  • 正则匹配出moduleId

    • 正则表达式:moduleId": \d+匹配出 moduleId: 105695
    • 再一次正则匹配\d+获得纯数字的moduleId如:105695
  • 去重,去除返回的JSON中有重复的部分

  • 制作成moduleId.txt备用

获取全部课程名

1、点击可以试看的内容进行观看,获取试看视频的数据包进行分析
2、查找到关键的链接,进行分析

关键链接1

1
https://www.boxuegu.com/ccVideo/getCcVerificationCode?type=D&studentId=xxxx&videoId=10178456&courseId=1112&moduleId=105695&sign=xxxx

关键字段1:studentId,分配的学生id

关键字段2:vedioId,视频的id

关键字段3:courseId,课程id,对于本课程来说id值为1112

关键字段4:moduleId,大纲的moduleId,用来请求大纲下的具体课程内容

关键字段5:sign,用来鉴权的加密字段,为MD5加密(32位小写字母加数字组成)在cookie中可以提取

作用

响应体中包含着,用来获取到视频播放的鉴权值verificationcode,==>后面将变成vc拼接到具体视频播放的URL中,非常关键。

关键链接2

1
https://m.boxuegu.com/portalApp/coursePlay/getCourseKnowledgeTree?studentId=xxxxx&moduleId=102659&courseId=1112&type=PATH&isTry=false&sign=xxxxxxx

关键字段1:isTry,就用鉴权是否为试看用户,如果isTry=true就表示:试看用户,服务器返回的JSON数据就不会包含全部课程信息,只需要在请求的时候isTry=false即可。

作用

用来获取大纲下的全部课程的课程名

如下:

格式化后的JSON

关键字段1ccVideoId,课程id加密之后的字段,只需要获取到全部即可

数据处理

  • 正则匹配[A-Z0-9]{32}
  • 结果存储在videoId.txt文件中

获取真实的视频播放链接

请求地址:

1
https://p.bokecc.com/servlet/getvideofile?vid=9BE07F17C38EFAE89C33DC5901307461&siteid=78665FEFxxxxxxxx&vc=xxxxxxx

分析:

请求拼接了vid+siteid+vc,其中这些数据在前面已经获取到,按需拼接即可。

处理之后的响应体内容:

1
{"playurl":"http://cd15-ccd1-2.play.bokecc.com/flvs/78665FEF083498AB/2020-05-11/9BE07F17C38EFAE89C33DC5901307461-20.m3u8?t=1605160103&key=1808B08473AAA7F5225DF2CB9CB8BE72&tpl=10&tpt=231","mediatype":1,"desp":"高清","backupurl":"http://cd11-ccd1-2.play.bokecc.com/flvs/78665FEF083498AB/2020-05-11/9BE07F17C38EFAE89C33DC5901307461-20.m3u8?t=1605160103&key=1808B08473AAA7F5225DF2CB9CB8BE72&tpl=10&tpt=231","quality":20}

关键字段1:playurl+backurl,播放链接

关键字段2:-20.m3u8或者-30.m3u8,这是播放清晰度,部分视频无超清画质

关键字段3:t=1605160103,时间戳,链接失效的时间

关键字段4:key,m3u8的解密密钥

服务器返回了playurlbackurl两份播放链接,选择其一,正则表达式,将内容匹配出来即可。

  • 正则表达式匹配播放的URL
1
2
3
4
5
#高清
http://cd15-ccd1-2.play.bokecc.com/flvs/[A-Z0-9]*/\d{4}-\d{2}-\d{2}/[A-Z0-9]{32}-20.m3u8\?t=\d{10}\&\key=[A-Z0-9]{32}\&tpl=\d{2}\&tpt=\d{3}

#超清
http://cd15-ccd1-2.play.bokecc.com/flvs/[A-Z0-9]*/\d{4}-\d{2}-\d{2}/[A-Z0-9]{32}-30.m3u8\?t=\d{10}\&\key=[A-Z0-9]{32}\&tpl=\d{2}\&tpt=\d{3}

4、注意事项

1、抓取课程需要在调试界面将设备改为模拟移动设备,或者在移动设备上抓包。

2、需要开启设备需要https解密,并且信任证书。

3、获取的部分关键字段生存时间短

5、总结

1、用户鉴权最好是云端校验

2、m3u8加密并直接携带解密的key

3、对于异常的IP请求要做处理

4、接口的鉴权再完善些

6、声明

仅供学习研究使用,不得将上述内容用于商业或者非法用途,否则一切后果请自负。