摘自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网页,就能实现播放。
注意两个关键参数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文件,看下内容

<?xml version="1.0" encoding="utf-8" ?>
- <data>
  <videoInfo parameter="videoId" parameter2="userid">http://bugu.cntv.cn</videoInfo>
  <interactiveInfo parameter="videoId" parameter2="userid">http://www.ibugu.cn/getInteractiveInfo.php</interactiveInfo>
  <rankingList>http://bugu.cntv.cn/hot/index.shtml</rankingList>
  <dig parameter="articleId" parameter2="oper" parameter3="url">http://ia.apps.cntv.cn/act/platform/subDCGrade.jsp</dig>
  <rate parameter="articleId" parameter2="gradeNum" parameter3="title" parameter4="type" parameter5="sorts" parameter6="url" parameter7="sysSource">http://ia.apps.cntv.cn/act/platform/subGrade.jsp</rate>
  <favorite parameter="videoid" parameter2="userid">http://www.ibugu.cn/favorite.php</favorite>
  <buguList parameter="videoid" parameter2="userid">http://www.ibugu.cn/buguList.php</buguList>
  <suggestion parameter="title" parameter2="content" parameter3="userId">http://bugu.cntv.cn/help_fankui/index.shtml</suggestion>
  <adplayer>http://player.cntv.cn/ad/cntvAdPlayer.swf</adplayer>
  <pauseAdplayer>http://player.cntv.cn/ad/cntvPauseAdPlayer.swf</pauseAdplayer>
  <adplayer>http://player.cntv.cn/adplayer/cntvAdPlayer.swf</adplayer>
  </data>

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

<videoInfo parameter="videoId" parameter2="userid">http://bugu.cntv.cn</videoInfo>
  <interactiveInfo parameter="videoId" parameter2="userid">http://www.ibugu.cn/getInteractiveInfo.php</interactiveInfo>

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

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

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

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

CNTV视频深入挖掘分析相关推荐

  1. 爱奇艺、优酷、腾讯视频竞品分析报告2016(二)

    接上一篇<爱奇艺.优酷.腾讯视频竞品分析报告2016(一)> http://milkyqueen520.blog.51cto.com/11233158/1760192 2.4 产品设计与交 ...

  2. 爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

    1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报 ...

  3. B站科普区优质科普(技术区)UP主挖掘分析

    B站科普区优质UP主挖掘分析 爬虫的代码(在这里感谢贾老师)有兴趣的可以私聊我- 数据获取方式: 公众号:YOLO的学习进阶日常 回复:B站 注意:本数据集没有粉丝数,粉丝数需要另外一个API,这里我 ...

  4. Tesla T4视频编码性能分析

    Tesla T4视频编码性能分析 从开普勒开始的所有 NVIDIA GPUs 都支持完全加速的硬件视频编码: GPUs 支持完全加速的硬件视频解码.最近发布的图灵硬件提供了张量核心和更好的机器学习性能 ...

  5. 关键词热度分析工具_亚马逊卖家: 产品关键词挖掘分析必备工具!

    做亚马逊的应该都知道,亚马逊的大部分流量都是来自于产品关键词的搜索,一个好的关键词可以大大的提高你的产品曝光,促进成交,还可以节省时间和成本,是增加流量最好的一个方法. 无论你是发布产品,还是优化Li ...

  6. 数据分析(7)路径挖掘分析法 行为序列分析法

    在之前的文章里,我们聊了7种数据分析的方法,分别是对比分析法.多维度拆解法.漏斗观察法.分布分析法和用户留存分析法.用户画像分析法和归因查找法,这篇文章我们来聊聊常见的数据分析方法中的最后两个:路径挖 ...

  7. 樱花动漫视频数据表分析樱花动漫

    昨天有个朋友问我樱花动漫中的视频怎么下载,那么今天我就写篇文章来专门分析下樱花动漫中的视频是怎么下载的,先分析樱花动漫中的视频下载数据表. 樱花动漫视频数据表分析1.还是打开我们的视频助手,来分析樱花 ...

  8. 短视频行业内情分析-今抖云创

    目前短视频行业是一个很好的行业,也带来了很多流量红利,下面今抖云创就跟大家分享一下短视频是怎么赚钱的. 短视频供应商也就是内容制作人.内容制作人使用短视频平台的目的通常是通过在平台上赚钱的方式在平台上 ...

  9. 视频监控ai分析系统 yolo

    视频监控ai分析系统借助yolo+opencv网络对现场画面中人员行为及物体状态信息进行实时分析检测识别.YOLO的结构非常简单,就是单纯的卷积.池化最后加了两层全连接,从网络结构上看,与前面介绍的C ...

  10. 创新案例分享 | 统计数据管理与挖掘分析平台助力民生统计

    统计的基本任务是对国民经济和社会发展情况进行统计调查.统计分析,提供统计信息和咨询意见,实现统计监督,为各级政府部门的决策提供依据. 其实质是围绕统计核心业务,综合运用现代统计学和信息科学的有关原理, ...

最新文章

  1. git diff 比较文件_使用Python创建你自己的diff工具
  2. EasyTransaction 1.3.0 发布,一站式分布式事务解决方案
  3. 易传媒CTO程华奕:搭建私有DMP 你必须知道的几件事
  4. c++ 基本数据类型字节数
  5. pageX/Y, offset(), position(), scrollTop(), screenX/Y, clientX/Y, pageX/Y
  6. 2021年必备 Python 插件!
  7. placeholder=请输入用户名(六位数字加英文字母)
  8. leetcode面试题 17.15. 最长单词
  9. 转载:tcpdump抓包和Wireshark解包
  10. 【java基础知识】swagger组件常用命令
  11. Asp.net Boilerplate 源码无法打开——找不到.net core sdk
  12. Python+OpenCV:姿态估计(Pose Estimation)
  13. 机器学习案例系列教程——优化方法总结(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)
  14. css float属性 与 clear属性 的深入了解
  15. Linux三剑客--grep
  16. 《图算法》第五章 中心性算法-2
  17. MySQL 字符串删除表情符_字符串中Emoji表情处理
  18. x390yoga 关掉触控屏幕_八代酷睿变形金刚:ThinkPad X390 Yoga变形本带你飞
  19. week2-二分和二分搜索
  20. android studio(自带SDK)安装教程

热门文章

  1. 海风教育荣获“中国(行业)典范品牌”
  2. 手机文件上传ftp服务器,安卓手机文件上传 ftp服务器
  3. Typora加超链接实现页内跳转的三种方法
  4. 计算机课代表总结与反思,生物课代表总结与反思(38页)-原创力文档
  5. 【ES系列五】——集群搭建(多机集群单机多节点集群)
  6. Dubbo之手写RPC框架
  7. 他因“上帝粒子”获诺奖,却火速搬到乡下:它毁了我的生活
  8. 上帝视角-我是一个线程『转』
  9. 2011移动互联网企业评优
  10. 深度学习训练中噪声减小吗_深度学习中噪声标签的影响和识别