摘自Crazy Code:话说CNTV曾经有几个视频想要下载,才疏学浅,一直找不到原视频地址,在缓存中找文件的方法对CNTV不管用了。这两天再次分析了一下,虽然最终还是没能找到方法,但还是有点收获的。以http://bugu.cntv.cn/life/science/kejizhiguang/classpage/video/20100808/100432.shtml页面为例,先不要急着看源文件,播放器以及提供了站外引用的关键代码. 直接复制就行了。内容如下: <embed id='v_player_cctv' width='666' height='500' flashvars='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' allowscriptaccess='always' allowfullscreen='true' menu='false' quality='best' bgcolor='#000000' name='v_player_cctv' src='http://player.cntv.cn/standard/cntvOutSidePlayer.swf?v=0.171.5.4' type='application/x-shockwave-flash' lk_mediaid='lk_juiceapp_mediaPopup_1257416656250' lk_media='yes'/> 是个标准的视频引用代码,如果把它保存为htm网页,就能实现播放。 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播放器的各个属性,当然包括播放什么视频。 其中有几个参数不是必要的,有没有都不影响播放。经过测试,简化如下: 而其中决定播放哪个视频的是videoId这个参数。解释一下其他参数意义,v应该是播放器的版本,去掉也能播放;videoId当然就是视频Id了,configPath和widgetsConfig指向两个xml文件,很明显是决定了播放器配置属性,第一个待会说,第二个看了一下,貌似是决定的两侧的显示条目,如下图。videoCenterId应该是决定视频分类Id。
<?xml version="1.0" encoding="utf-8" ?> 我对xml文件不了解,但其中这两行似乎很那什么 <videoInfo parameter="videoId" parameter2="userid">http://bugu.cntv.cn</videoInfo> 应该大概也许可能是这样,swf将参数传入getInteractiveInfo.php(英语不过关,还特意百度了一下Interactive的意思,百度告诉我,这个单词的意思是交互,嘻嘻,看来这个页面就是“得到交互信息”),页面返回视频地址给播放器,这样和第二种假设差不多了,只不过多了一个环节,播放器把构造查询的任务交给了getInteractiveInfo.php。这个可能性应该相当大了。而userid可能由播放器传入,用来供getInteractiveInfo.php判断是谁来要视频文件,如果是swf,就给,如果是其他人,比如直接访问,就不给返回。这只是我的猜测。 分析暂时到此结束,有空再继续。 另外还有两点: 现在有一些影音嗅探软件,用了可能会有效果,但我一般不喜欢用一些乱七八糟的东西,就不测试了。 |