因为网页里看到的播放器,并不等于真实视频文件。
这类平台通常采用:
网页播放器
↓
JavaScript 加载
↓
请求后台接口
↓
返回课程播放信息
↓
获取真实视频 CDN 地址
↓
播放 mp4 文件
解决方法:
通过浏览器开发者工具,找到播放器请求的视频地址。
操作步骤
第一步:打开视频网页
打开视频页面。
例如:
https://live.eeo.cn/m.html?lessonKey=b18f5317c1e0175f
第二步:打开开发者工具
Chrome 浏览器,摁F12
打开开发者工具。
进入:
网络(Network)
第三步:筛选接口请求
点击:
Fetch/XHR
因为视频地址通常不是直接写在网页源码里,而是由 JavaScript 请求接口获取。
第四步:寻找播放数据接口
在请求列表中寻找:
。。。。。getLessonWebcastData
在这个案例,是
https://dynamic.eeo.cn/saasajax/webcast.ajax.php?action=getLessonWebcastData
这个接口负责返回课程播放数据。
第五步:查看接口返回内容
点击:
响应(Response)
找到:
Playset
里面会出现:
{
"Definition":"0",
"Url":"https:\/\/playback.eeo.cn\/xxxx\/f0.mp4"
}
其中:
https:\/\/playback.eeo.cn\/xxxx\/f0.mp4
就是视频真实地址。
第六步:处理地址转义
接口返回的是 JSON 格式。所以:
https:\/\/playback.eeo.cn\/xxxx\/f0.mp4
实际地址是:
https://playback.eeo.cn/xxxx/f0.mp4
只需要把:
\/
替换成:
/
即可。
第六步:下载视频
得到真实地址后:
直接浏览器打开:
https://playback.eeo.cn/xxxx/f0.mp4
整个流程总结
打开视频网页
↓
F12
↓
网络(Network)
↓
Fetch/XHR
↓
寻找 getLessonWebcastData
↓
查看 Response
↓
找到 Playset.Url
↓
还原 https:\/\/
↓
得到真实 mp4 地址
↓
下载视频
有一个叫「便捷下载」的 安卓 app 可以直接下载,可惜需要会员且只可以绑定一台安卓机子,我之前帮朋友下载后,还得通过邮箱把大文件分享给朋友,比较繁琐。一些电脑端的下载工具,如浏览器插件、视频嗅探工具、通用下载器,都没办法。最后用上诉流程搞定了。