Youku 视频绝对地址获取的方法详解

  次阅读 作者:智能小宝 来源:互联网 2016-03-02 15:32 我要评论(0)

前一阵子为了研究 KnLiveCommentary 而进行了一系列的关于视频站点的研究。由于KnLiveCommentary需要能够获取充足的视频源进行测试,所以我们选取了 Youku(优酷)一个比较大的视频网站来进行测试。

其实开始研究解析绝对地址也是为了研究Youku 的自带播放器,顺便去除广告什么的。后来我们就把Youku 的播放器用 ASV6 (ActionScript Viewer 6)“反编译”了一下,达到了惊人的效果。

Youku的视频采取了加密+动态的获取方式,视频地址需要访问网站动态获取,而结果则还需经过解密等操作。

复制代码 代码如下:

$base_url = 'http://v.youku.com/player/getPlayList/VideoIDS/'; //获取视频信息的地址 基地址

$_VIDEO_ID = $_GET['vid'];//从GET里面把Video Id提取

if($_VIDEO_ID=='')

$_VIDEO_ID = 'XMjY0ODE1MDA0'; //我比较懒,测试的时 候就固定了一个

$ch = curl_init(); //开启cURL对象

curl_setopt($ch, CURLOPT_URL, $base_url . $_VIDEO_ID);//获取这个视频的信息的地址

curl_setopt($ch, CURLOPT_HEADER, 1);//要 HEADER

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_REFERER, 'http://v.youku.com/v_show/id_' . $_VIDEO_ID);//给一个假的"REFERER"

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //把现在的浏览器User Agent传递给服务器

curl_setopt($ch, CURLOPT_NOBODY, 0);

$content = curl_exec($ch);//执行!!!

curl_close($ch); /*下面解析*/

preg_match(‘~”seed”s*:s*(d+)s*,~iUs',$content,$seed);

preg_match(‘~{s*”(flv|mp4)”s*:s*”(.*)”s*}~iUs',$content,$encoded);

preg_match(‘~”key1″s*:s*”(.*)”s*,~iUs',$content,$key1);

preg_match(‘~”key2″s*:s*”(.*)”s*,~iUs',$content,$key2);

//从返回的JSON串中提取必要信息 seed, encoded_url, key1, key2

class decoder{

var $randomSeed = 0;

var $cg_str=”";

function __construct($seed){

$this->randomSeed = $seed;

}

function ran(){

$this->randomSeed = (($this->randomSeed * 211)+30031)%65536;

return ($this->randomSeed / 65536);// 根据旧的 Seed 计算新的Seed,并且返回一个Seed的比例位置 [0,1)

}

function cg_hun(){//估计这个叫 “CG混”,反正ASV解的函数就是这个名字

$this->cg_str="";

$sttext = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/:._-1234567890';//默认字符串(最大)

$len = strlen($sttext);//获取其长度

for($i=0;$i<$len;$i++){

$cuch = (int)($this->ran()*strlen($sttext));//获取字符串 Seed比例 位置的字符下标

$this->cg_str.=$sttext[$cuch];//把字母读出来

$sttext = str_replace($sttext[$cuch],”,$sttext);//删掉这个读出来的字母(到 0 就停)

}

}

function decode($string){

$output=”";

$this->cg_hun();

$expl = explode(‘*',$string);//把 1*23*34*45*56* 这个字符串打散

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...