刚刚过去的一年,是全网视频聚合破解兴起和消亡的一年,也是我们team最终频临崩溃的一年。当然team的散伙儿主要是上层管理者的决策定位和管理规划的事,与我等底层IT民工无关.仅以此序言开始上一年的工作总结,归纳了目前我们team所做的工作,包括本人搜集的对目前主流视频网站的破解方法,这主要包括如下几大视频网站:
sohu,sina,优酷,tudou,qq,qiyi,cntv,m1905,letv,pptv,funshion,pps,163
视频破解的基本方法
(1)使用闪客精灵反编译视频网站的swf,获取内部交互逻辑和方法;
(2)使用Chrome中的开发者工具抓取http中js特别是XHR部分的交互,搜寻数据交互流程,这个通常在swf中也能得到应征,因为很多请求都是由swf触发的;
主流视频网站使用的共性技术
(1)大量使用js,as3,p2p,cdn等技术,兼容多平台(Windows,Linux,iOS,Android),多屏(PC电脑,平板,手机,智能电视),多终端(PC,android,ios,wp等),多协议(http,rtmp,rtmfp,p2p)
(2)对每部视频来说,有几个关键的描述参数:
albumId 剧集序列的id,比如一部电视剧《火凤凰》的id,包含单集,当然对于单集视频来说,这个参数意义不大.这个参数给出了相关分集的信息,使得剧集自动联播
tvId 某部视频(单集)某种分辨率(默认为high高清)的id,比如《火凤凰》第一集,也写作data-player-videoid
data-player-tvid 某部视频的id,不区分各种分辨率,这个参数便于在视频数据库中定位某部视频的相关信息
channelId(cid) 节目类型id,比如电影,电视剧,动漫,综艺,纪录片,娱乐,MTV等某一类,给出了当前视频网站提供的视频服务的类型
sourceId 某部视频对应的数据来源的id,比如地理位置上的服务器的区分,发送协议上的区分代码等等
(3)每个网站都会将这个视频的vid信息放在url中,因为这样更便于区分,比如youku中<烽火佳人>第一集
http://v.youku.com/v_show/id_XNjU5OTkyNzQ4.html
这里vid是XNjU5OTkyNzQ4,它有个数字的表达方式,这里vid是该数字加密后的字符串.
(4)所有该部视频的很重要的参数,特别是我上面提及的几个参数,都会写到该部视频对应html中的某个<script>标签中,便于网页中的其它js player或flash player加载调用.在视频加载之前,一般都会有一个非常重要的json文件或是xml文件,来具体描述这个视频的很多关键的信息,它一定是使用http协议传送的,我们对该部视频的破解离不开对这个文件的仔细推敲.
(5)每部视频一般都会按照超清,高清,标清,流畅,还有mp4,flv格式等区别来描述不同视频分辨率的视频,而每种分辨率又会分为几个片段(segment),一般是6分钟左右一个片段,如果是超清和高清,可能片段的duration只有3分钟,这样的话,根据不同的视频分辨率来响应用户的http请求,而且使用了CDN和负载均衡技术,不同的片段会被存放到不同地域不同网络运营商的服务器上.在播放视频的时候,会有专门的脚本来测试客户端的网速,以便更好地选择恰当的视频分辨率.如果使用swf和rtmp协议,将会自适应播放视频流,也就是视频分辨率的切换会更加灵活.
破解是不光彩的事情
通过技术手段去破解主流视频网站,从而获取视频片段的url,提供给android等移动端播放,甚至是缓存带有版权的视频,这从知识产权角度来说,是违法的,我不推荐大家这里做,而且,前段时间百度影音,快播等因为干这个事情被曝光并接受了惩罚,所以,这里谈到的视频破解都是纯技术上的交流,包括对网站后台架构的推理,不做商用,也请大家不要使用这里提交的方法,否则,后果自负。