解析获取优酷视频真实下载地址的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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
PHP $_SERVER详解
Jan 16 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
zend framework中使用memcache的方法
Mar 04 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 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
一个多文件上传的例子(原创)
2006/10/09 PHP
PHP生成静态页面详解
2006/11/19 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
python如何为创建大量实例节省内存
2018/03/20 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python3中zip()函数使用详解
2018/06/29 Python
Python常用的json标准库
2019/02/19 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
pymysql的简单封装代码实例
2020/01/08 Python
python的Jenkins接口调用方式
2020/05/12 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
运动会表扬稿大全
2014/01/16 职场文书
原材料检验岗位职责
2014/03/15 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2014年仓库工作总结
2014/11/20 职场文书
关于召开会议的通知
2015/04/15 职场文书
投资申请报告
2015/05/19 职场文书
springcloud整合seata
2022/05/20 Java/Android