解析获取优酷视频真实下载地址的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&amp;MYSQL留言板源码
Jul 19 PHP
php数组应用之比较两个时间的相减排序
Aug 18 PHP
PHP关联链接常用代码
Nov 05 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
PHP数据过滤的方法
Oct 30 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
php查询ip所在地的方法
Dec 05 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
php封装的smarty类完整实例
Oct 19 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 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年10月第2期TV动画制作组换血!
2020/03/06 日漫
php split汉字
2009/06/05 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
基于php-fpm的配置详解
2013/06/03 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
《三峡》教学反思
2014/03/01 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
中学生运动会广播稿
2015/08/19 职场文书