今天有个人让我帮忙下载执业课程教学视频,说是再过一个月她的账号就到期了,又要花钱买,于是乎就想把自己已经购买的课程下载下来,放到自己的电脑、云盘里,可以方便自己长期学习。缙哥哥成功将其下载,并将过程及思路写下,分享给大家。
解决思路
那到手第一时间先用 Via 浏览器查看,因为她发我账号密码的时候我在用手机,而刚好缙哥哥之前分享的《【力荐】速度与简约共存的手机浏览器,支持广告拦截插件定制》支持资源嗅探功能。
结果发现浏览器不支持MediaSourceExtension
,提示错误H0x10005
,算了,毕竟 Via 浏览器不到2M,不支持也正常,或许是我自己没有打开媒体设置也说不定,反正手机办公无效率,待会儿用电脑操作更加方便快捷。
至于下载其 APP 进行嗅探抓包我就懒得操作了,电脑能用干嘛用手机?
资源嗅探
有空之后打开电脑,使用 Edge 浏览器(此类内核的都可以)打开课程进行查询资源,发现其为m3u8
切片视频,通过 ping 其地址反馈,可以得知用的是腾讯云的相关服务。
这里通过嗅探到了 m3u8 文件地址:
https://******.play.bo**cc.com/flvs/*/*/*.m3u8?t=*&key=*&tpl=*&tpt=*
这里为了防止反向查询,隐藏部分内容。单纯分析一下这个网址:
https://*.m3u8
这个链接是 m3u8 的文件地址,而直接访问该地址则被拒绝,显然做了一些权限防止直接请求访问。
而后面的查询参数 t, key, tpl, 和 tpt 通常是用于访问受保护的媒体资源时的一种安全措施。
- t (Timestamp):
这个参数通常表示时间戳,用于验证请求的时间有效性。它通常是一个 Unix 时间戳,表示请求的生成时间或过期时间。在这个例子中,t=1726842687 表示的是一个 Unix 时间戳,转换成标准时间格式为 2024年9月20日 21:11:27(UTC)。这种时间戳常用于防止重放攻击,即确保请求是在有效时间内发送的。 - key (Security Key):
这个参数通常是一个安全密钥,用于加密或签名请求。服务器端会使用相同的密钥来验证请求的有效性。在这个例子中,key=*********** 可能是一个用于验证请求来源合法性的密钥。不同的请求可能会有不同的密钥值,以增加安全性。 - tpl (Template ID):
这个参数可能表示模板 ID,用于指定请求所使用的配置模板。不同的模板可能对应不同的编码格式、分辨率或其他媒体属性。在这个例子中,tpl=66 可能指定了一个特定的媒体流配置。 - tpt (Template Type):
这个参数可能表示模板类型,进一步细化了 tpl 参数所指定的配置。例如,不同的模板类型可能对应不同的传输协议或播放器兼容性设置。在这个例子中,tpt=88 可能指定了具体的传输类型或播放器设置。
这些参数共同作用,确保只有合法的请求能够访问受保护的媒体资源,从而提高系统的安全性。简而言之就是没买课程你就看不了,但是这还不够,只要有一个人买了,就可以从中获取相对应的视频文件,这个防护只能防止普通人,当然,大部分医药行业里的人对于计算机不是很了解。
资源下载
将嗅探到的资源链接复制到迅雷下载到本地,发现是一个 m3u8 的文件夹,像迅雷看看播放器可以直接打开 m3u8 文件进行观看视频。
但是我想她既然用手机发我应该是要手机里看,还是给她整合成一个 mp4 文件比较好。
切片整合
由于之前研究过《Windows 操作系统下安装 FFmpeg 环境教程》,将视频切片成 ts 格式的碎片视频,再通过 m3u8 进行排列读取,以便降低 CDN 的使用。那么我们反其道而行,通过 m3u8 文件将 ts 视频碎片一键整合成视频文件即可。
想偷懒的话随便在网上找一个 m3u8 下载器,将 m3u8 文件丢进去,直接就给你合成一个了,这里就懒得赘述了。
总结
还是那句话,只要能看到的资源,就放不住别人下载。哪怕是特定播放器、需要密码、防止录屏,也会有办法解决的。
Chrome的插件随便就给你解决了
给不懂的人一个思路,我自己能解决。