解析获取优酷视频真实下载地址的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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
完美解决PHP中文乱码
Nov 26 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
yii2的restful api路由实例详解
May 14 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 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引用的调用方法分析
2016/04/25 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
Python编程实现的简单Web服务器示例
2017/06/22 Python
Python3中详解fabfile的编写
2018/06/24 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
pycharm实现猜数游戏
2020/12/07 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
高中生的自我鉴定范文
2014/01/24 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
新闻通讯稿范文
2015/07/22 职场文书
外出听课学习心得体会
2016/01/15 职场文书
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis