正文

暴风解析源码

暴风解析源码

  1. <?php   
  2.   
  3. echo str_replace(“\/",“/",json_encode(BaoFeng::parse($url)));  
  4.   
  5. class BaoFeng  
  6. {  
  7.   
  8.     public static function parse($url)  
  9.     {  
  10.         preg_match('#play/(.*)/play-(\d+)#’,$url,$ids);  
  11.         $id = $ids[1];  
  12.         $aid = $ids[2];  
  13.         return self::movie_json($id,$aid);  
  14.     }  
  15.     public static function movie_json($id,$aid)  
  16.     {  
  17.         $api = “http://moviebox.baofeng.net/movie_json/newboxp2p/{$id}/{$aid}.js";  
  18.         $html = self::curl($api,COOKIE_BAOFENG);  
  19.   
  20.         $json = str_replace(“var movie_detail=",“",$html);  
  21.         $data = json_decode($json,true);  
  22.         $info_pianyuan = $data[“info_pianyuan"];  
  23.         foreach ($info_pianyuan as $key => $value) {  
  24.             $aid = $value[“aid"];  
  25.             $wid = $value[“wid"];  
  26.             $ispay = $value[“ispay"];//是否付费  
  27.             $hd_type = $value[“hd_type"];  
  28.             switch ($hd_type) {  
  29.                 case '480P’:$def = “标清";break;  
  30.                 case '720P’:$def = “720P";break;  
  31.                 case '1080P’:$def = “1080P";break;  
  32.             }  
  33.             $vurl = self::get_source($wid=13,$aid);  
  34.   
  35.             if (GlobalBase::is_ipad()) {  
  36.                 if($hd_type==’1080P’){  
  37.                     $videoinfo[“code"] = 200;  
  38.                     $videoinfo[“data"][“url"] = $vurl;  
  39.                     return $videoinfo;  
  40.                     exit;  
  41.                 }  
  42.             }else{  
  43.                 if ($hd_type == '1080P’ && $vurl != ") {  
  44.                     $fdata[0]['url’] = $vurl;  
  45.                     $fdata[0]['def’] = '蓝光’;  
  46.                 }   
  47.                 if ($hd_type == '720P’ && $vurl != ") {  
  48.                     $fdata[1]['url’] = $vurl;  
  49.                     $fdata[1]['def’] = '超清’;  
  50.                 }  
  51.                 if ($hd_type == '480P’ && $vurl != ") {  
  52.                     $fdata[2]['url’] = $vurl;  
  53.                     $fdata[2]['def’] = '高清’;  
  54.                 }   
  55.             }  
  56.         }  
  57.         for ($i=0; $i <= 3 ; $i++) {   
  58.             if ($fdata[$i] == ") {continue;}  
  59.             $key_arrays[]=$fdata[$i];  
  60.         }  
  61.         $videoinfo['code’] = 200;  
  62.         $videoinfo['poster’] = $img;  
  63.         $videoinfo['name’] = $video_info[“coreVideoInfo"][“videoName"];  
  64.         $videoinfo['play’] = 'h5mp4’;  
  65.         $videoinfo[“data"][“url"] = $key_arrays[0]['url’];  
  66.         return $videoinfo;  
  67.     }  
  68.     public static function get_source($wid=13,$aid){  
  69.         $num = $aid % 500;  
  70.         //$api = “http://minfo.baofeng.net/asp_c/{$wid}/{$num}/{$aid}.json";  
  71.         $api = “http://minfo.baofeng.net/source/{$wid}/{$num}/{$aid}.json";  
  72.         $html = self::curl($api,COOKIE_BAOFENG);  
  73.         $json = str_replace(“;",“",str_replace(“var storm_json = “,“",$html));  
  74.         $data = json_decode($json,true);  
  75.         $video_list = $data[“video_list"];  
  76.         $iid = $video_list[0][“iid"];  
  77.         $size = $video_list[0][“size"];  
  78.         $vurl = self::get_video_url($iid,$size);  
  79.         return $vurl;  
  80.     }  
  81.      public static function get_video_url($gcid,$size){  
  82.         $time = number_format(microtime(true),3,",");  
  83.         $api = “http://rd.p2p.baofeng.net/queryvp.php?type=3&gcid={$gcid}&_={$time}&callback=jsonp7";  
  84.         $html = self::curl($api,COOKIE_BAOFENG,PROXY);  
  85.         preg_match(“#’ip’:'(.*?)’#",$html,$_ip);  
  86.         preg_match(“#’port’:'(.*?)’#",$html,$_port);  
  87.         preg_match(“#’path’:'(.*?)’#",$html,$_path);  
  88.         preg_match(“#’key’:'(.*?)’#",$html,$_key);  
  89.         $ip = self::getip($_ip[1]);  
  90.         $port = $_port[1];  
  91.         $path = $_path[1];  
  92.         $key = $_key[1];  
  93.         $vurl =“http://{$ip}:{$port}/{$path}?key={$key}&filelen={$size}";  
  94.         return $vurl;  
  95.     }  
  96.     public static function curl($url,$cookie=“",$proxy=“")  
  97.     {  
  98.         //$data = mb_check_encoding($data,’gbk’)?iconv('gbk’,’utf-8//IGNORE’,$data):$data;//将字符串的编码从gbk转到UTF-8   
  99.         $params[“ua"] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";  
  100.         $params[“ip"] = “119.123.69.232";//伪装为固定IP,否则会报异地登录,会封号,不要更改  
  101.         //$params[“proxy"] = $proxy;//代理地址  
  102.         $params[“cookie"] = $cookie;  
  103.         return GlobalBase::curl($url,$params);  
  104.     }  
  105.     /** 
  106.      * [getip 解密IP地址] 
  107.      * @param  [type] $ip [description] 
  108.      * @return [type]     [description] 
  109.      */  
  110.     public static function getip($ip) {  
  111.         $p2pmap = array(  
  112.             “b"=>“0",“a"=>“1",“o"=>“2",  
  113.             “f"=>“3",“e"=>“4",“n"=>“5",  
  114.             “g"=>“6",“h"=>“7",“t"=>“8",  
  115.             “m"=>“9",“l"=>“.",“c"=>“A",  
  116.             “p"=>“B",“z"=>“C",“r"=>“D",  
  117.             “y"=>“E",“s"=>“F"  
  118.         );  
  119.         $b = explode(“,"$ip);  
  120.         for ($j = 0; $j < count($b); $j++) {  
  121.             $g = $b[$j];  
  122.             $f = “";  
  123.             $h = strlen($g);  
  124.             for ($k = 0; $k < $h$k++){  
  125.                 $f .= $p2pmap[substr($g,$k,1)];  
  126.             }  
  127.         }  
  128.         return $f;  
  129.     }  
  130. }  
  131.  ?>