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


Posted in PHP onJune 26, 2013
<?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; 
} 
?>
PHP 相关文章推荐
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
实例讲解php实现多线程
Jan 27 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 #PHP
解析php 版获取重定向后的地址(代码)
Jun 26 #PHP
php连接函数implode与分割explode的深入解析
Jun 26 #PHP
解析PHP正则提取或替换img标记属性
Jun 26 #PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 #PHP
关于PHP自动判断字符集并转码的详解
Jun 26 #PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 #PHP
You might like
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
Python 元类使用说明
2009/12/18 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Django使用rest_framework写出API
2020/05/21 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
车辆维修工自我评价怎么写
2013/09/20 职场文书
本科生求职简历的自我评价
2013/10/21 职场文书
工作中个人的自我评价
2013/12/31 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
社区文艺活动方案
2014/08/19 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
小学家长通知书评语
2014/12/31 职场文书
人事局接收函
2015/01/30 职场文书
公司联欢会主持词
2015/07/04 职场文书