`
yangdc
  • 浏览: 87923 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

视频网站地址获取原理

阅读更多
视频网站通用的播放原理比较简单:
打开页面首先load一个播放器,然后播放器根据一定的条件向后台请求flv文件并播放。

youku网防止用户下载的几个措施
1 动态创建flv播放器,防止用查看源代码的方式分析其播放器。
2 flv文件分割,将一个较长的文件分割成每段大约为7分钟的几段,其地址不同,甚至有可能在不同的服务器上。
3 动态生成flv文件地址,并且地址有时间限制,过时失效。

这是我目前所知最为费尽心思的加密方式,这方面比tudou作的好。

典型的youku播放地址是这样的:
http://v.youku.com/v_show/id_XMTgzMTg1ODQ=.html
大体上这个页面应该是不存在的,youku应该有一个类似SessionFilter的东西对这些请求地址进行过滤并动态生成页面,当然由于效率原因可能对一些请求频率高的页面进行缓存,这都不在我们讨论范围之内,这里重点是,如果我们的猜想是正确的,youku必然是通过这个地址地址来决定播放的视频,我们应该能够看出 ‘id_XMTgzMTg1ODQ=’这一段应该是与这个视频的id相关的。也就是说,youku应该对每个视频有一个唯一的id,可以通过这个id来找到对应的视频。
不过地址中的这个id是加密的,在页面源文件中搜索:XMTgzMTg1ODQ=
可以找到:
var videoId = '4579646';
var videoId2= 'XMTgzMTg1ODQ=';

我们找到了加密前后的videoid。

我们前面说的播放器通用的播放原理的youku版就是:

1 输入地址
2 根据地址生成页面,load播放器,并且获得播放文件id
3 将id传给播放器,播放器根据视频id获取视频地址。我们前面说的youku视频已被分割,所以这里获取的应该是该视频对应的列表地址。


下面要做的工作是分析flv播放器如何根据id来找到视频的:
使用firebug分析页面,
有这样一个请求:
http://v.youku.com/player/getPlayList/VideoIDS/4579646/version/5/source/video/password/?ran=8639&n=3
这是典型的REST架构阿,其 response如下:
{"data":[{"tt":"0","ct":"c","cs":"2043|2053","logo":"http:\/\/vimg15.youku.com\/11270F1F4647B1CFAEC63F0051AE550CE7D610-8E8B-4C0D-58CB-D44E6653E344"

,"seed":9054,"tags":["\u5927\u72ec\u88c1\u8005","\u6b27\u7f8e\u7535\u5f71","\u5353\u522b\u6797"],"categories"

:"96","streamsizes":{"flv":"291427815"},"streamfileids":{"flv":"56*14*14*7*56*15*1*8*56*56*13*7*64*1

*50*15*57*54*14*64*15*16*56*56*54*1*46*16*54*54*7*16*54*64*56*14*8*61*40*9*7*56*13*40*14*61*64*15*40

*9*10*15*57*40*50*7*10*1*50*46*64*61*56*16*61*14*"},"videoid":"4579646","segs":{"flv":[{"no":"0","size"

:"12756561","seconds":"395"},{"no":"1","size":"12588606","seconds":"396"},{"no":"2","size":"12575477"

,"seconds":"395"},{"no":"3","size":"12589273","seconds":"395"},{"no":"4","size":"12426491","seconds"

:"395"},{"no":"5","size":"12543093","seconds":"395"},{"no":"6","size":"12419380","seconds":"395"},{"no"

:"7","size":"12642058","seconds":"395"},{"no":"8","size":"12560630","seconds":"395"},{"no":"9","size"

:"12754471","seconds":"396"},{"no":"10","size":"12345040","seconds":"395"},{"no":"11","size":"12642647"

,"seconds":"395"},{"no":"12","size":"12685996","seconds":"395"},{"no":"13","size":"12678854","seconds"

:"395"},{"no":"14","size":"12562234","seconds":"395"},{"no":"15","size":"12537914","seconds":"395"},

{"no":"16","size":"12685755","seconds":"395"},{"no":"17","size":"12371695","seconds":"396"},{"no":"18"

,"size":"11860130","seconds":"395"},{"no":"19","size":"13183528","seconds":"394"},{"no":"20","size":"11896514"

,"seconds":"394"},{"no":"21","size":"11055722","seconds":"394"},{"no":"22","size":"12370008","seconds"

:"393"},{"no":"23","size":"5036383","seconds":"171"}]},"fileid":"56*14*14*7*56*15*1*8*56*56*13*7*64*1

*50*15*57*54*14*64*15*16*56*56*54*1*46*16*54*54*7*16*54*64*56*14*8*61*40*9*7*56*13*40*14*61*64*15*40

*9*10*15*57*40*50*7*10*1*50*46*64*61*56*16*61*14*","username":"pk\u6b27\u7f8e\u7535\u5f71","userid":"5353045"

,"title":"\u5927\u72ec\u88c1\u8005","key1":"bd7ed169","key2":"2f67ce4b4901bd2f","seconds":"9271.00","streamtypes"

:["flv"]}],"user":{"id":0}}


这是个JSON对象,指明了播放列表的相关信息。

streamsizes 指明该视频总的大小。
segs对象指明了该视频被分成了22个视频段落,以及每个视频的长度和大小。

与视频地址相关的重要变量为seed,fileid,key1和key2。我们下面细说。

先说下一个请求
http://f.youku.com/player/getFlvPath/sid/122873056861916199103_00/st/flv/fileid/02270F180047B1CF952BFE0051AE557E5B0286-3704-26BF-3DF9-C7D1CAB60E62?K=b4cf663c8307abcb14f9fc6

点击这个链接,浏览器会返回给你一个flv文件,这就是我们需要的文件,那么这个请求地址是如何构造得到的呢?
你点击这个链接可能会提示页面不存在,这是youku的地址时效机制起作用--这个地址已经超时啦。





分享到:
评论
3 楼 string2020 2014-05-10  
好,谢谢。
楼主能不能帮忙分析一下
http://class.baihe.com/index.php?play&vid=256
这个网站的视频下载地址

谢谢
2 楼 tianhandigeng 2013-07-06  
打开页面首先load一个播放器 这个是怎么load的 这个load的播放器在哪 ?
1 楼 千山我独行 2008-12-23  
我也很想知道~

相关推荐

    通过视频地址获取视频缩略图

    4. **使用视频地址获取缩略图的原理**:大多数现代视频格式(如MP4、WebM、FLV等)都支持时间戳查询,允许我们指定视频中的某一时刻来获取该时刻对应的帧作为缩略图。例如,通过HTTP Range请求,我们可以请求视频...

    网站视频下载地址获取工具

    网站视频下载地址获取工具是一种专门用于从互联网上提取视频流链接的应用程序,它允许用户将在线视频保存到本地计算机以便离线观看。这类工具广泛应用于教育、娱乐和工作场景,尤其是当用户需要反复查看某个视频或者...

    C# onvif获取摄像头rtsp视频流地址和抓拍图片地址

    本教程主要探讨如何使用C#编程语言通过ONVIF协议获取网络摄像头的RTSP视频流地址和抓拍图片的地址。 首先,我们需要了解ONVIF的工作原理。ONVIF协议基于SOAP(简单对象访问协议)和XML,它定义了服务接口、设备管理...

    获取视频时长demo

    在IT领域,获取视频时长是一项常见的任务,特别是在多媒体处理和数据分析中。本文将深入探讨如何使用FFmpeg,一个强大的开源跨平台多媒体处理工具,来获取视频文件的时长。我们将基于FFmpeg 4.0版本进行讲解,该版本...

    网页视频地址获取工具

    此外,由于网络环境和网站结构的不断变化,视频获取工具可能需要定期更新以保持其功能的有效性。 总结来说,“网页视频地址获取工具”是帮助用户便捷获取网页中视频源URL的利器,它结合了HTML解析、JavaScript执行...

    视频帧获取工具_getVideoFrame

    "视频帧获取工具_getVideoFrame"就是这样一个专用于提取视频文件帧数据并将其转化为静态图像的实用工具。在这个项目中,它能够将视频的每一帧画面转换成.jpg格式的图片,这对于视频分析、动画制作或者简单的预览视频...

    视频播放的基本原理详解

    ### 视频播放基本原理详解 #### 一、视频播放器概述 视频播放器是用于解码和播放视频文件的应用程序。随着互联网技术的发展,视频播放器已经成为了人们日常生活中不可或缺的一部分。本文将通过分析VLC播放器的工作...

    随机漂亮的小姐姐短视频网站源码

    源码是程序员用编程语言编写的原始代码,它是软件或网站的核心组成部分,通过它可以了解程序的工作原理和实现方式。在这个项目中,源码包含了实现随机播放短视频、分类展示、以及视频下载等功能的所有细节。 1. **...

    C#获取MJPEG视频流源代码

    MJPEG视频流的工作原理是将每一帧JPEG图片连续发送,接收端再按照时间顺序重新组合成视频。这种格式简单且易于实现,但可能不那么高效,因为每帧都是独立编码的。 在C#中获取MJPEG视频流,首先你需要理解HTTP协议的...

    vlc 视频播放的基本原理

    ### VLC视频播放的基本原理 #### 一、视频播放器架构概览 在深入解析VLC视频播放器的工作原理之前,我们需要先对视频播放的基本架构有一个大概的了解。无论是VLC、MPlayer还是Xine,甚至是DirectShow等播放器,在...

    SORA视频生成原理剖析.pptx

    根据提供的信息,我们可以深入探讨关于“SORA视频生成原理”的几个关键方面,包括其技术特点、应用场景以及潜在的发展方向。 ### 1. SORA视频生成技术概述 #### 官网解读: - **效果预览**:官网提供了SORA生成...

    通过java获取土豆视频

    // 获取视频播放地址 String content = doc.html(); int beginLocal = content.indexOf("<script>document.domain"); int endLocal = content.indexOf("</script>"); content = content.substring(beginLocal, end...

    视频播放器原理

    1. **Access(访问)**:负责获取或接收视频源,比如通过网络、文件系统或其他来源。 2. **Demux(解复用)**:将混合在一起的音频、视频和可能的文字信息分离。 3. **Decode(解码)**:对音频和视频流进行解码,将...

    OpenCV从视频文件中获取图像

    OpenCV(开源计算机视觉库)是一个强大的工具,用于处理图像和视频数据。在这个主题中,我们将探讨如何使用OpenCV从视频文件中提取图像,并将它们保存到特定的文件夹中。这个过程对于视频分析、帧处理、特征检测或...

    视频播放器的原理及设计流程

    其设计原理和流程涉及多个技术领域,包括编码解码、流媒体处理、用户界面交互等。以下是关于这个主题的详细阐述: 首先,视频播放器的核心是解码器。解码器负责将数字媒体文件中的压缩数据转换为原始的音频和视频...

    视频分析技术的原理.docx

    视频分析技术的原理是基于背景分离(背景减除)技术,对视频帧与基准背景图像进行比较,检测出图像变化的区域,并进一步处理、跟踪、识别目标,获取包括目标位置、尺寸、形状、速度、停留时间等基本形态信息和动态...

    音视频同步的原理及实现方案

    ### 音视频同步的原理及实现方案 #### 一、引言 音视频同步是多媒体技术中的一个重要概念,尤其在视频会议、在线教育、直播、短视频等领域中扮演着至关重要的角色。良好的音视频同步效果能够极大地提升用户体验,...

    gsoap 获取视频流 源代码 Onvif 实时视频监控

    在本项目中,`gSOAP`被用来获取视频流,实现Onvif协议的实时视频监控功能。Onvif(开放网络视频接口论坛)是一个国际标准,定义了网络视频设备和服务之间的接口,使得不同厂商的设备能无缝集成。 首先,我们要了解`...

    flvdownloader网页视频地址嗅探器 网页流媒体地址嗅探器

    总的来说,网页视频地址嗅探器是一种实用的工具,它能帮助用户绕过视频网站的限制,获取并下载视频内容。尽管随着技术的发展,嗅探方式也在不断进化,但其核心目标始终是揭示隐藏在网络流量背后的视频资源。

Global site tag (gtag.js) - Google Analytics