解析获取优酷视频真实下载地址的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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
NT IIS下用ODBC连接数据库
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
PHP安全防范技巧分享
Nov 03 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
Jun 25 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
php实现三级级联下拉框
Apr 17 PHP
PHP文件操作实例总结
Sep 27 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
浅析PHP开发规范
Feb 05 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
PHP生成器简单实例
2015/05/13 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
实例讲解php实现多线程
2019/01/27 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
Python isinstance函数介绍
2015/04/14 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python如何生成各种随机分布图
2018/08/27 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
银行职员思想汇报
2013/12/31 职场文书
2014庆六一活动方案
2014/03/02 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
活动总结书怎么写
2015/05/11 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python