付费视频下载到本地,关于ts与m3u8文件下载后的复盘总结

目录
前言:求助插件You-GetFlash Video DownloaderVideo DownloadHelper
分析网络请求第一步第二步第三步来个小总结
如何处理加密key开始转视频m3u8dl工具youtu-dl 工具ffmpeg 根本地址
最后一步上传到云盘
前言:
一切的起因:因为某个同学在某斯上面的会员快要过期了,想把视频下载到本地观看。 我想这还不简单?愉快的接下了任务,接下来,我想我是笑不出来了,但是走过来还是值得。
求助插件
You-Get
会Python的应该都听说过you-get吧,就是支持大多数视频的下载 这里我直接放上开源地址:https://github.com/soimort/you-get B站的视频你想下载下来直接用这个多线程跑就行了。
Flash Video Downloader
一个在Chrome上的插件,不用说了没用。
Video DownloadHelper
一个在Firefox上的插件,第一次还检测到了 然后刷新页面,哦豁没了,逐渐开始变态起来~
分析网络请求
第一步
打开F12刷新network默认观察的是请求的先后顺序
我选择大小之后,随着视频的播放,逐渐产生新的文件 因为是大小倒序,0.ts,1.ts逐渐出现 那说明了这个视频的播放就是一个个这样的ts组成的
第二步
我接着去请教某位小透明,在他的带领下我明白了,可以找到一个m3u8的文件 这个文件的含义相当于整个视频的总指挥 他里面集合了所有的ts,以及如何加密,密钥来自哪里 那么如何找呢?
第三步
因为他这个涉及登录的,所以肯定会携带token等认证信息,注意留意这个 其次加载一个网页,首先会加载css,js,图片等先将整个网站的样子加载出来 随后就是js的渲染解码的问题,这个时候就会发出请求m3u8 所以根据waterfall来排序,拉到中间,就能发现上图。
进而他在里面说明了是AES-128加密 然后密钥对应的地址是URI中的 当然你直接访问肯定是不行的,自己造包又太麻烦 而网页能播放视频,说明密钥肯定也下发了 然后网站的js根据key和m3u8请求服务器并解密,前端就能观看到视频了
这里有个需要注意的地方,我下面单独说一下
来个小总结
网站是怎么播放视频的呢:
他是拆分成30秒一个的ts文件网站的js会去读取请求来的m3u8文件进而js会根据key解密直接请求m3u8和key是会被服务器拒绝的
综上: 我们要将m3u8和key拉取到本地 用本地的服务器给我们的工具给可以直接访问到的链接 然后我们就能得到我们想要的视频了
如何处理加密key
使用火狐浏览器
这点值得谷歌浏览器学习哈,自动转码
使用hackbar
有的火狐浏览器是不会自动转码的,如果只存在一行,可以直接复制 到hackbar里面的base64_encode拿到
如果存在换行怎么办?
burpsuit抓包 找到这个包的response到解码器里面解右键改包的curl命令,到控制台里面发包处理返回回来的二进制(没试过~)
最后生成key文件
你直接复制是没有用的,二进制当成字符串用~ 如下你会得到对应的key file_put_contents('./key', base64_decode('DQoNCtL+6IOzUNCrR/OBXiRkDek='));
开始转视频
m3u8dl工具
开源地址:https://github.com/nilaoda/N_m3u8DL-CLI 但是这个在这里不是特别好使
youtu-dl 工具
开源地址 : https://github.com/ytdl-org/youtube-dl 最后直接搞定!
ffmpeg 根本
下载地址:https://www.gyan.dev/ffmpeg/builds/
上面的建议都要加入环境变量 而我就比较懒 直接丢到site-pakage里面了事 注意:ffmpeg有很多阉割版,建议用上面的下载地址下载完成版
地址
还记得前面我们说过的,网站上的地址是要token认证的 而软件的使用是直接给个链接 加上有几点我们可以利用
m3u8文件是没有加密的ts文件是直接可以拿下来的
所以我们可以将m3u8拿到本地,给本地连接
这里直接提供几种方式:
XAMPP,PHPstudy等本地开个服务器,丢到里面 python -m http.server
用python搭建一个临时虚拟的服务器 给连接参考下: https://www.cnblogs.com/shenshangzz/p/8318143.html https://juejin.cn/s/python%20http%20server%E6%95%99%E7%A8%8B https://www.pythonf.cn/read/4681
白嫖图床
咳咳咳,小透明大佬的百宝箱中的东西 https://github.com/TransparentLC/free-img 这是个好玩意,大厂们也不差这点
最后一步
# 当前文件夹下打开cmd
$ youtu-dl http://127.0.0.1:8112/index.m3u8
上传到云盘
搞定!