解析获取优酷视频真实下载地址的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下使用SMTP发邮件的代码
Jan 10 PHP
PHP开发负载均衡指南
Jul 17 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
php发送post请求函数分享
Mar 06 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
php需登录的文件上传管理系统
Mar 21 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
PHP序列化操作方法分析
2016/09/28 PHP
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
js中replace的用法总结
2013/12/27 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
python递归计算N!的方法
2015/05/05 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
表达自我的市场:Society6
2018/08/01 全球购物
工艺工程师工作职责
2013/11/23 职场文书
小学母亲节活动方案
2014/03/14 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
大学毕业生个人总结
2015/02/28 职场文书
二婚主持词
2015/06/30 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
Java 数据结构七大排序使用分析
2022/04/02 Java/Android