今天在外面的时候有个朋友发QQ消息问我斗鱼上的视频怎么下载,并丢给了我一个网址;我起初以为之前的那几个工具(youtube-dl、You-Get、IDM、猎影等等)就能搞定,但他说试过了不行;等晚上回来后我发现确实出了一个新的斗鱼视频Beta,之前的工具都不能解析了;经过一番摸索,找到了一个有效的通用解决方案;于是想借此契机把我现在常用的几种方法总结一下分享给大家
解析类下载工具 代表作——猎影
猎影主界面
【2017年7月23日更新】
由于国内视频网站加密算法经常更改,导致现有的视频下载方法过不了多久就会失效,猎影这款软件虽然从去年12月开始已经停止更新,官网也不再提供服务。(最后一个版本是2016年12月5日,在上面的百度网盘链接里有)。不过强强开发的解析插件一直在更新,集成了YKDL、You-Get、爱奇艺移动端TS接口等解析模块,非常方便。
资源嗅探类工具 代表作——IDM
IDM就是大名鼎鼎的Internet Download Manager,是一款国外流行的下载工具,功能极其强大,可谓是下载神器
在选项里设置好监视的浏览器以及浮动条,以后在看视频的时候就会在视频旁边出现一个浮动条,点击即可调用IDM下载该视频
大多数情况下,只要是网页视频都能通过IDM下载,并不局限与那些视频网站
多种方法综合使用 关键点——M3U8
如果视频网站的加密工作做的比较到位的话,使用现有的下载工具并不能直接下载网页视频,即使是IDM这样的神器也会有无能为力的时候;
但是到目前为止,加密的再好的视频,只要是用户能够在网页上看到的,就一定有办法下载下来;因为网站需要向浏览器传送视频数据,就一定会留下该视频源的相关信息;这里介绍一种我知道的方法,如果大家有更好的方法,欢迎在评论区留言分享~
在介绍M3U8之前,我们首先来认识一下审查元素
审查元素
浏览器都有一个审查元素的功能,快捷键是F12
通过审查元素,我们可以找到当前页面上每一个元素对应的网址;比如目前国内一些网址开始尝试的HTML5播放器的视频是未加密存储的,利用审查元素下载这类视频就非常方便啦(实际上这类视频利用IDM下载更为方便,这里仅仅是为了讲解需要)
以V电影这个视频为例,我们按F12然后根据网页上的方框指引层层进入目标位置,或者直接在视频上右键>审查元素,即可快速定位到播放器区域对应的代码位置;如果视频是未加密存储的,在这里就可以直接看到视频文件的真实地址,复制下来然后用任意下载器下载即可
但是对于一些使用Flash Player播放器的网页视频,由于视频源的真实地址是加密的,通过审查元素无法查看到,所以需要用到审查元素的Network(网络)功能来监察视频网站的与浏览器之间传输了哪些数据
其实IDM是可以检测到这个视频的,但是由于服务器拒绝了第二次请求,按照提示框对IDM进行了设置并没有什么效果,还是没能够把这个视频下载下来
IDM测试我们现在首先看看它的审查元素,发现是Flash Player播放器的视频,这里并不能获取视频源的真实地址
斗鱼视频切换到Network,刷新一下网页,我们可以看到已经传输的媒体流(音视频数据)
Network这种链接里带有.ts
的就是真实的视频数据了,我们将这个右键copy一下,然后用浏览器的下载器下载,发现的确可以下载
这些都是视频网站切割成的小分段,为了更高效的缓冲以及在线播放;理论上来说,如果我们将缓冲的这些片段一个一个下载下来然后再无损合并到一起就相当于下载到一个完整的视频了;
但是这些片段实在是太多了,我们不可能人工一个一个去下载然后合并,如果电脑能自动完成这些事情就好了
于是我们请出了M3U8
M3U8简介
M3U8文件是指UTF-8编码格式的M3U文件
M3U是HLS的索引文件。HLS全称HTTP Live Streaming,是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案,主要用于PC和Apple终端的音视频服务。包括一个M3U(8)的索引文件,TS媒体分片文件和key加密串文件。
我们来看一下移动端在线播放视频的大概过程:
视频网站首先将一个完整视频分成多个TS视频文件,M3U文件记录了每个TS片段的索引信息,用户在播放在线视频时,服务器会给浏览器发送一个对应的M3U8文件,浏览器则根据M3U8的索引找到对应的音视频文件的网络地址进行在线播放
目前有很多工具可以利用M3U8文件下载相应的源视频并自动合并成一个完整的文件,比如FFmpeg、M3U8 Downloader等等,所以如何抓取M3U8是关键
获取M3U8的方法有很多,这里介绍两种简单可行的方法
M3U8地址获取方法一
错综复杂——利用审查元素里面的Network进行抓取
既然移动端是利用M3U8播放在线视频的,那么获取M3U8最简单的一个方法就是修改浏览器的User-Agent(用户代理),将电脑浏览器伪装成手机;
以Chromium为例,我们按F12打开审查元素后,点击左上角的手机图标,就可以在上面选择不同的移动设备,切换到Network,然后刷新,就可以看到Network里面出现了.m3u8
地址
另外我们也可以使用Google应用商店里一款名为User-Agent Switcher的扩展来随时切换User-Agent,这里的机型更多一些
User-Agent Switcher我们复制上面得到的.m3u8
地址,然后使用任意一款支持M3U8视频下载的工具即可下载到源视频
FFmpeg下载示例
FFmpeg可以使用下面的命令来下载
ffmpeg -i "M3U8_URL" -c copy VIDEO_NAME.ts
M3U8地址获取方法二
简单高效——利用硕鼠解析直接获取M3U8地址
有时候硕鼠虽然不能直接下载视频,但是它能解析到视频对应的M3U8地址,这比我们通过审查元素慢慢找要方便的多;经测试,该方法对斗鱼上的视频有效,测试如下
斗鱼视频示例 硕鼠解析示例点击上面的复制地址
按钮,然后使用M3U8 Downloader下载
一般情况下上述几种方法应该都能搞定,如果大家还有更好的方法或者有新的问题需要讨论,欢迎在评论区留言~