|
MaxLucky
| 来自北京
最早以前这种流媒体播放都是缓存在硬盘里面的,这样你下次播放的时候就不用再下载,直接从硬盘缓存中提取播放。比如你看了一 段视频,看完了,关闭了,第二天再进那个页面看,那么就不用再消耗网络了,直接可以看,不联网都可以看。那么就可以从浏览器缓存中找到视频。
不过后来为了迎合视频网站老板们的需求,流媒体服务器有了一些特别设置,比如不再缓存了。视频网站老板当然不希望你看了一次就断网看,或者从缓存中取出来天天看,他希望你第二次看的时候再联网,再看看他们免费赠送的广告。于是现在看一段视频,已经加载完了,你不小心关闭了,再开,那么又需要重新加载。
然后说一下优酷的视频为什么分段,其实这是一种比较好的策略,因为流媒体好像会一直加载缓存(下载缓存在内存,不写硬盘了,写的话也加密),如果一部剧集45分钟,现在网络好的话,你看到1分钟估计把整部剧都下载完成了,如果你会看完倒是无所谓,万一是烂片,或者你有事要离开,看了一分钟就把页面关闭了,那整部剧的下载流量不是白白浪费了,还白白消耗了视频服务器的资源。分段以后就不会有这种情况了,45分钟的话,标清分成6分钟,超清分成3分钟,你看到这个片段的末尾时会帮你加载下一个片段,这样保证视频连续。如果还是上面的情况只看了一分钟,那么你最多也就下载了第一段,这样可以减轻视频服务器的负担。
优酷的视频地址隐藏得蛮深,媒体服务器还会检测参数对不对决定给不给你下载。因为html5的视频很难隐藏,所以优酷的手机端网页好多视频没有,一些热门视频只能看开始片段,看完要会员好像。
下面说一下如果靠浏览器获取优酷的视频链接。
以谷歌浏览器Google Chrome为例,当然火狐也有类似功能。
1.打开谷歌浏览器,打开优酷视频页面
2,在视频页面下点击chrome的主菜单,选择 更多工具-开发者工具,然后会在页面右半边会出现开发者工具界面。
3,在开发者工具界面点击network标签,这会嗅探当前页面的所有网络请求。下面会不断的滚动刷新各种请求。
4,在请求列表里面找视频的求,flv,mp4,如果请求太多难找,可以在filter那输入flv|mp4,后面的regex打勾,这样就只显示带有flv和mp4的请求了。里面有些视频是广告来的,不过目前看来优酷视频的命名都是0300这样开头的,其他名字的都是广告。
5,让右键点击某个0300开头的请求,选择copy-copy link address。这个地址拷贝到剪切板,这个地址就是你当前页面视频的地址,根据你当前选择的清晰度,标清超清为flv格式,高清为mp4格式。回到第一步,如果你网速太快的话,打开开发者工具之前视频地址已经请求过了,就不会出现在列表中了,这时候你到视频页面那里切换一下清晰度,那么他就会重新请求。
6,把地址拷贝出来是类似这样的
http://27.221.35.85/youku/67724384B463A832A85426470E/030002010058452938355108BD4F54B8B7F134-0AF8-C69F-471B-1F9C9B95DC3B.flv?sid=050441045206412af13e8&ctype=12&ccode=0401&duration=171&expire=18000&psid=8843fa55743b3339f283f888ea5106a3&ups_client_netip=27.38.29.21&ups_ts=1504410452&ups_userid=138355130&utid=vrpED2zCSwMCATo8Iz54ySjh&vid=XMTg1MTk0NTIxNg%3D%3D&vkey=A4b95d50e6285c8c31c7addc003e78bbe&nk=59117637559_25073503288&ns=0_216384&special=true,你直接放到下载工具下载的话只能下载到几十k这样,是因为后面的参数告诉服务器只下载那么多。把.flv问号后面的参数全部去掉,可以说之前可以,前几个月还行,现在不行了。
那么好把从&nk开始的全部去掉,变成下面这样就可以顺利下载了。
http://27.221.35.85/youku/67724384B463A832A85426470E/030002010058452938355108BD4F54B8B7F134-0AF8-C69F-471B-1F9C9B95DC3B.flv?sid=050441045206412af13e8&ctype=12&ccode=0401&duration=171&expire=18000&psid=8843fa55743b3339f283f888ea5106a3&ups_client_netip=27.38.29.21&ups_ts=1504410452&ups_userid=138355130&utid=vrpED2zCSwMCATo8Iz54ySjh&vid=XMTg1MTk0NTIxNg%3D%3D&vkey=A4b95d50e6285c8c31c7addc003e78bbe另外有一种形式是这样的,以start=xxx结尾
http://vali.cp31.ott.cibntv.net/69758F285314871C4B1BB3768/030002070059A80B240152011BA6A9C003B67F-163A-5950-B1CB-A5E9546AE4DC.flv?ccode=0401&duration=394&expire=18000&psid=a203c6e9e70cd16f0df066a6a886d591&ups_client_netip=27.38.29.15&ups_ts=1504281369&ups_userid=138355130&utid=vrpED2zCSwMCATo8Iz54ySjh&vid=XMzAwMDMzMjI4MA%3D%3D&vkey=A15551672f8580f78a51a3e899146a753&start=11这种把后面的start=xxx都改成start=0就行了。
7,分段的视频怎么办,上面只能下其中一段,方法1,你可以把进度条拖到第二段位置,让他请求第二段的视频地址,用上面的流程把第二段下来,以此类推。方法2,发现他们的命名是有规律的,服务器好像大部分一样,那么只要有了第一段的地址,改下地址就能下后面的段了。
命名都是文件名第10位递增一,比如上面的 03002070059A8xxx(太长省略),10位是0说明这是第一段,第二段就是03002070159A8xxxx,三段就是03002070259xxx以此类推。所以只要在第一段的地址链接改这个数就能下载到后面的段落了。
(另外我上面的事例那几个网址你直接复制可能下不了,因为优酷视频地址隔一段时间就会变的,估计是怕其他网站永久盗链吧。)
我自己也下了不少视频,以前觉得有些小视频很有意思,几十秒几分钟的,当我再去看的时候他送我2分钟的广告,广告完了,看到一半再送15秒。。。优酷老板你给我粗来。
这答案要是让优酷官方看到他们估计又会采取新的措施防下载了,哈哈。
17/10/19更新一下
这段时间上去优酷发现已经抛弃了flash模式,接口也大换血,但是上面的嗅探还是依然有效的,那个下载片段的好像不能直接改名字下后面的,估计后面的参数有些不一样吧,拖进度条一段一段的嗅探还是可以的。
我自己用c#做了个小程序waker,可以解析出优酷视频的下载地址,把优酷某视频的播放页面网站复制到url框然后点击get youku,就可以把该视频的各种分辨率的全部分段的下载地址列出来。然后可以框选你喜欢的分辨率的全部分段用工具下载了。
之后合并,我这顺便做了个ffmepg的gui,方便那些不会用命令行的朋友,打开ffmepggui。exe,然后合并-添加视频-开始合并,几秒钟后信息栏不滚动了就合并好了,合并文件以merge_开头就在源文件的目录里面。
ffmpeggui链接:http://pan.baidu.com/s/1hrV0aws 密码:ckkx
大家低调使用,觉得有用默默点歌赞就行,多人用了被发现后那边改下接口这里就失效了。
就说那么多了,还有两车的砖没搬呢...
20171201跟新,优酷有变动,walker已经不能用了。
地址信息是靠某个请求获取的,但是现在这个后面参数太多,而且未知,我是没法模拟了,这个请求是jsv开头的,所以大家可以用谷歌浏览器开发者工具网络那里在filter输入jsv来筛选出这个请求,点击这个请求,右边会出现一些信息框,选择preview或者respone可以看到返回的信息,地址就在里面,量比较大仔细找一下吧,我之前是用正则分离出单独的地址的。
20180411更新:上面171201的估计会一直有效,搜jsv没出来的可能是网络太快,在你打开开发者工具之前就请求过了,所以没有被嗅探到,不在列表中,刷新一下就可以了。
重发一下那个合并工具,修正了之前的空格问题,视频列表上移下移错误,转换部分修剪时间不正确的问题。
ffmpegguiv0.2
https://pan.baidu.com/s/111UF0VD1EE9760rEAGbVOQ 密码:p9xp |
|