解析获取优酷视频真实下载地址的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 相关文章推荐
域名查询代码公布
Oct 09 PHP
php截取后台登陆密码的代码
May 05 PHP
基于php无限分类的深入理解
Jun 02 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
Laravel如何实现自动加载类
Oct 14 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 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循环跳出的问题
2013/07/01 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
基于python实现操作redis及消息队列
2020/08/27 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
办公室主任先进事迹
2014/01/18 职场文书
报社实习生自荐信
2014/01/24 职场文书
婚纱店策划方案
2014/05/22 职场文书
英语专业自荐书
2014/06/13 职场文书
七一党日活动总结
2014/07/08 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
店铺转让协议书
2014/12/02 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
学风建设主题班会
2015/08/17 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL