加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP嗅探youku视频的真实flv文件地址

发布时间:2022-02-19 03:48:19 所属栏目:PHP教程 来源:互联网
导读:认识几个做视频网站的站长他们的视频电影都是来自于我们国内的几大视频网站了,有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下. 这个是借力打力,只是抓去朋友网的内容,不过相当
  认识几个做视频网站的站长他们的视频电影都是来自于我们国内的几大视频网站了,有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下.
 
  这个是借力打力,只是抓去朋友网的内容,不过相当好用,代码如下:
 
  <?php
  $videourl='http://v.youku.com/v_show/id_XMjA5MjQ0OTQ0.html';
  function get_content($url ,$data){
   if(is_array($data)){
    $data = http_build_query($data, '', '&');  
   }
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_URL,$url);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   $result = curl_exec($ch);
   return $result;
  }
  $str = get_content('http://share.pengyou.com/json.php?mod=usershare&act=geturlinfo',array('url'=>$videourl));
  $str=json_decode($str);
  var_dump($str);
  ?>
  这个测试出来的只是swf文件并不是我们要的flv文件了,后来参考一站长的写法进行了改进,核心代码如下:
 
  <?php  
  function fetch_youku_flv($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);  
      } //开源软件:Cuoxin.com
      return $mixed;  
  }  
  ?>
  调用方法,代码如下:
 
  $url='http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html';
 
  echo fetch_youku_flv($url);
 
  访问:http://xiaomizhou.net/demo/flv.php?url=http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html
 
  输出的结果是:http://f.youku.com/player/getFlvPath/sid/138035737110468_00/st/flv/fileid/03000201004F97EF4A2E350467A09DB266E872-5522-225F-DC45-40B4E1F9BE49?K=c2a4327df2bb5a65261d40ea
 
  这个是可以直接下载的.

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!