解析获取优酷视频真实下载地址的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数组一对一替换实现代码
Aug 31 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
php 生成签名及验证签名详解
Oct 26 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 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概率算法实例
2014/04/09 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
js传值 判断
2006/10/26 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python中的引用知识点总结
2019/05/20 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
python中pyqtgraph知识点总结
2021/01/26 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
校长先进事迹材料
2014/02/01 职场文书
家长学校实施方案
2014/03/15 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
css height属性中的calc方法详解
2021/06/03 HTML / CSS
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python