领军教育西安总部电话:CNTV视频深入挖掘分析

来源:百度文库 编辑:九乡新闻网 时间:2024/04/26 01:31:49

话说CNTV曾经有几个视频想要下载,才疏学浅,一直找不到原视频地址,在缓存中找文件的方法对CNTV不管用了。这两天再次分析了一下,虽然最终还是没能找到方法,但还是有点收获的。

以http://bugu.cntv.cn/life/science/kejizhiguang/classpage/video/20100808/100432.shtml页面为例,先不要急着看源文件,播放器以及提供了站外引用的关键代码.


直接复制就行了。内容如下:

是个标准的视频引用代码,如果把它保存为htm网页,就能实现播放。
注意两个关键参数src和flashvars,src是视频地址,flashvars是参数。不要以为src指向的http://player.cntv.cn/standard/cntvOutSidePlayer.swf?v=0.171.5.4就是视频地址了,它只是个flash播放器,用来播放视频文件。将src和flashvars这两个字符串组合在一起(注意中间用&连接),得到如下网址:

http://player.cntv.cn/standard/cntvOutSidePlayer.swf?v=0.171.5.4&videoId=20100808100432&filePath=/life/science/kejizhiguang/classpage/video/&url=http://bugu.cntv.cn/life/science/kejizhiguang/classpage/video/20100808/100432.shtml&tai=bugu&configPath=http://bugu.cntv.cn/nettv/Library/ibugu/player/config.xml&widgetsConfig=http://bugu.cntv.cn/nettv/Library/ibugu/player/widgetsConfig.xml&languageConfig=http://bugu.cntv.cn/nettv/Library/ibugu/player/zh_cn.xml&hour24DataURL=&outsideChannelId=channelBugu&videoCenterId=281683144ff646bfd0849aa9deff0e42

用IE打开,会看到什么?视频直接播放了。

看到这个长长的网址,你能联想到什么吗,反正我是想的了asp、php、jsp等动态网页,只不过这里变成了swf,后面"&xxxx="之类的就是参数,它们决定了cntvOutSidePlayer.swf播放器的各个属性,当然包括播放什么视频。

其中有几个参数不是必要的,有没有都不影响播放。经过测试,简化如下:

http://player.cntv.cn/standard/cntvOutSidePlayer.swf?v=0.171.5.4&videoId=20100808100432&configPath=http://bugu.cntv.cn/nettv/Library/ibugu/player/config.xml&widgetsConfig=http://bugu.cntv.cn/nettv/Library/ibugu/player/widgetsConfig.xml&videoCenterId=281683144ff646bfd0849aa9deff0e42

而其中决定播放哪个视频的是videoId这个参数。解释一下其他参数意义,v应该是播放器的版本,去掉也能播放;videoId当然就是视频Id了,configPath和widgetsConfig指向两个xml文件,很明显是决定了播放器配置属性,第一个待会说,第二个看了一下,貌似是决定的两侧的显示条目,如下图。videoCenterId应该是决定视频分类Id。


关于cntvOutSidePlayer.swf如何找到视频的原地址,我想到三种可能:
1.cntvOutSidePlayer.swf内部包含一个算法,把videoId这些参数经过一系列运算还原为真实地址,就类似迅雷快车这些专用地址,一转换就得到源地址。不过这里感觉可能性极小。如果是这样,可行解决方法是将swf反编译,看看算法流程。至于如何反编译,查了点资料,权当补充点课外知识了,写在下一篇文章。
2.受asp、php、jsp动态页面启发,这里也可能是将参数构造成数据库查询语句,带入数据库查询,得到视频地址。可能性比较大。如果真是这样,可行解决方法是将swf反编译,看看如何构造的语句,然后我们自己制作一个swf甚至asp、php页面来构造查询,然后显示地址。
3.提到前面的第一个xml文件,看下内容

 
-
  http://bugu.cntv.cn
  http://www.ibugu.cn/getInteractiveInfo.php
  http://bugu.cntv.cn/hot/index.shtml
  http://ia.apps.cntv.cn/act/platform/subDCGrade.jsp
  http://ia.apps.cntv.cn/act/platform/subGrade.jsp
  http://www.ibugu.cn/favorite.php
  http://www.ibugu.cn/buguList.php
  http://bugu.cntv.cn/help_fankui/index.shtml
  http://player.cntv.cn/ad/cntvAdPlayer.swf
  http://player.cntv.cn/ad/cntvPauseAdPlayer.swf
  http://player.cntv.cn/adplayer/cntvAdPlayer.swf
 

我对xml文件不了解,但其中这两行似乎很那什么

  http://bugu.cntv.cn
  http://www.ibugu.cn/getInteractiveInfo.php

应该大概也许可能是这样,swf将参数传入getInteractiveInfo.php(英语不过关,还特意百度了一下Interactive的意思,百度告诉我,这个单词的意思是交互,嘻嘻,看来这个也面就是“得到交互信息”),页面返回视频地址给播放器,这样和第二种假设差不多了,只不过多了一个环节,播放器把构造查询的任务交给了getInteractiveInfo.php。这个可能性应该相当大了。而userid可能由播放器传入,用来供getInteractiveInfo.php判断是谁来要视频文件,如果是swf,就给,如果是其他人,比如直接访问,就不给返回。这只是我的猜测。

分析暂时到此结束,有空再继续。

另外还有两点:
现在优酷,酷6这些视频站也都是类似向swf播放器传参数来播放视频文件,但是可以在缓存中找到视频文件,不知CNTV用了什么技术,就不行了,可能类似流媒体吧。这时迅雷的swf监视功能就不给力了,这样下载的只是swf播放器,视频文件得不到。

现在有一些影音嗅探软件,用了可能会有效果,但我一般不喜欢用一些乱七八糟的东西,就不测试了。