解析获取优酷视频真实下载地址的PHP源代码

 更新时间:2013年06月26日 12:04:22   作者:  
本篇文章是对获取优酷视频真实下载地址的PHP源代码进行了详细的分析介绍,需要的朋友参考下
复制代码 代码如下:

<?php
//--调用方法/demo.php?url=http://v.youku.com/v_show/id_XMzkyODA2NTEy.html
echo getYoukuFlv($_GET['url']);

function getYoukuFlv($url){
    preg_match("#id_(.*?)\.html#",$url,$out);
    $id=$out[1];
    $content=get_curl_contents('http://v.youku.com/player/getPlayList/VideoIDS/'.$id);
    $data=json_decode($content);
    foreach($data->data[0]->streamfileids AS $k=>$v){
    $sid=getSid();
    $fileid=getfileid($v,$data->data[0]->seed);
    $one=($data->data[0]->segs->$k);
    if($k == 'flv' || $k == 'mp4') return "http://f.youku.com/player/getFlvPath/sid/{$sid}_00/st/{$k}/fileid/{$fileid}?K={$one[0]->k}";
    continue;
    }

function get_curl_contents($url, $second = 5){
    if(!function_exists('curl_init')) die('php.ini未开启php_curl.dll');
    $c = curl_init();
    curl_setopt($c,CURLOPT_URL,$url);
    $UserAgent=$_SERVER['HTTP_USER_AGENT'];
    curl_setopt($c,CURLOPT_USERAGENT,$UserAgent);
    curl_setopt($c,CURLOPT_HEADER,0);
    curl_setopt($c,CURLOPT_TIMEOUT,$second);
    curl_setopt($c,CURLOPT_RETURNTRANSFER, true);
    $cnt = curl_exec($c);
    $cnt=mb_check_encoding($cnt,'utf-8')?iconv('gbk','utf-8//IGNORE',$cnt):$cnt; //字符编码转换
    curl_close($c);
    return $cnt;
}
function getSid() {
    $sid = time().(rand(0,9000)+10000);
    return $sid;
}
function getkey($key1,$key2){
    $a = hexdec($key1);
    $b = $a ^ 0xA55AA5A5;
    $b = dechex($b);
    return $key2.$b;
}
function getfileid($fileId,$seed) {
    $mixed = getMixString($seed);
    $ids = explode("*",$fileId);
    unset($ids[count($ids)-1]);
    $realId = "";
    for ($i=0;$i < count($ids);++$i) {
    $idx = $ids[$i];
    $realId .= substr($mixed,$idx,1);
    }
    return $realId;
}
function getMixString($seed) {
    $mixed = "";
    $source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890";
    $len = strlen($source);
    for($i=0;$i< $len;++$i){
    $seed = ($seed * 211 + 30031) % 65536;
    $index = ($seed / 65536 * strlen($source));
    $c = substr($source,$index,1);
    $mixed .= $c;
    $source = str_replace($c, "",$source);
    }
    return $mixed;
}
?>

相关文章

  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    联动菜单的数据存在数据库,可以随时通过对数据库添加删除修改改变菜单数据,而不需修改代码,同时,实现了2级后,也可以实现3级,4级。。。等关联菜单
    2014-05-05
  • php获取远程文件大小

    php获取远程文件大小

    这篇文章主要介绍了php获取远程文件大小的方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 用PHP实现递归循环每一个目录

    用PHP实现递归循环每一个目录

    很多时候我们要遍历一个文件夹里面的所有目录,列出里面所有的文件,PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。
    2010-08-08
  • PHP开发过程中常用函数收藏

    PHP开发过程中常用函数收藏

    此中将收藏我在工作中用到的一些PHP函数。有自己写的,也会有网上收集的。此文不断更新中
    2009-12-12
  • PHP n个不重复的随机数生成代码

    PHP n个不重复的随机数生成代码

    PHP n个不重复的随机数生成代码,原理就是将数组顺序随即打乱 ,然取该数组中的某一段
    2009-06-06
  • 使用PHP获取汉字的拼音(全部与首字母)

    使用PHP获取汉字的拼音(全部与首字母)

    本篇文章是对使用PHP获取汉字的拼音(全部与首字母)实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 利用PHP判断文件是否为图片的方法总结

    利用PHP判断文件是否为图片的方法总结

    最近在工作中遇到一个需要,要判断一个文件是否为图片的功能,通过查找相关的资料找到了几种方法,包括利用getimagesize函数获取图片信息,然后进行判断或读取图片的前2个字节等方法。下面来一起看看详细的介绍吧,需要的朋友可以参考下。
    2017-01-01
  • 抓取YAHOO股票报价的类

    抓取YAHOO股票报价的类

    实时抓取YAHOO股票报价的函数,大家可以学习一下思路跟具体的代码,自己可以拓宽下。
    2009-05-05
  • PHP简单处理表单输入的特殊字符的方法

    PHP简单处理表单输入的特殊字符的方法

    这篇文章主要介绍了PHP简单处理表单输入的特殊字符的方法,涉及PHP中trim(),strip_tags(),htmlspecialchars()及addslashes()等函数的使用技巧,需要的朋友可以参考下
    2016-02-02
  • PHP项目多语言配置平台实现过程解析

    PHP项目多语言配置平台实现过程解析

    这篇文章主要介绍了PHP项目多语言配置平台实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论