解析获取优酷视频真实下载地址的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 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
php除数取整示例
Apr 24 PHP
php读取csc文件并输出
May 21 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
php创建无限级树型菜单
Nov 05 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
laravel 时间格式转时间戳的例子
Oct 11 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/05/15 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
python如何统计序列中元素
2020/07/31 Python
python 随机森林算法及其优化详解
2019/07/11 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
jupyter 导入csv文件方式
2020/04/21 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
最新大学生自我评价
2013/09/24 职场文书
小小的船教学反思
2014/02/21 职场文书
高中军训感想300字
2014/03/04 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
施工安全责任书范本
2014/07/24 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书