解析获取优酷视频真实下载地址的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语法速查表
Dec 06 PHP
PHP Ajax实现页面无刷新发表评论
Jan 02 PHP
PHP学习之数组值的操作
Apr 17 PHP
PHP中的strtr函数使用介绍(str_replace)
Oct 20 PHP
PHP测试程序运行时间的类
Feb 05 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
PHP程序员基本要求和必备技能
May 09 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
php使用ftp实现文件上传与下载功能
Jul 21 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 工厂模式使用方法
2010/05/18 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
django2 快速安装指南分享
2018/01/05 Python
python读取LMDB中图像的方法
2018/07/02 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python 操作excel表格的方法
2020/12/05 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
电焊工岗位工作职责
2014/07/09 职场文书
技能培训通讯稿
2015/07/18 职场文书
Python入门之基础语法详解
2021/05/11 Python