解析获取优酷视频真实下载地址的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 相关文章推荐
初学CAKEPHP 基础教程
Nov 02 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
PHP开发需要注意的安全问题
Sep 01 PHP
php HandlerSocket的使用
May 02 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
smarty模板数学运算示例
Dec 11 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
用Juery网页选项卡实现代码
2011/06/13 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
js如何实现元素曝光上报
2019/08/07 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
mac系统安装Python3初体验
2018/01/02 Python
python Django 创建应用过程图示详解
2019/07/29 Python
Python连接Impala实现步骤解析
2020/08/04 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
美术教学感言
2014/02/22 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书