暴风解析源码

<?php   
  
echo str_replace(“\/",“/",json_encode(BaoFeng::parse($url)));  
  
class BaoFeng  
{  
  
    public static function parse($url)  
    {  
        preg_match('#play/(.*)/play-(\d+)#’,$url,$ids);  
        $id = $ids[1];  
        $aid = $ids[2];  
        return self::movie_json($id,$aid);  
    }  
    public static function movie_json($id,$aid)  
    {  
        $api = “http://moviebox.baofeng.net/movie_json/newboxp2p/{$id}/{$aid}.js";  
        $html = self::curl($api,COOKIE_BAOFENG);  
  
        $json = str_replace(“var movie_detail=",“",$html);  
        $data = json_decode($json,true);  
        $info_pianyuan = $data[“info_pianyuan"];  
        foreach ($info_pianyuan as $key => $value) {  
            $aid = $value[“aid"];  
            $wid = $value[“wid"];  
            $ispay = $value[“ispay"];//是否付费  
            $hd_type = $value[“hd_type"];  
            switch ($hd_type) {  
                case '480P’:$def = “标清";break;  
                case '720P’:$def = “720P";break;  
                case '1080P’:$def = “1080P";break;  
            }  
            $vurl = self::get_source($wid=13,$aid);  
  
            if (GlobalBase::is_ipad()) {  
                if($hd_type==’1080P’){  
                    $videoinfo[“code"] = 200;  
                    $videoinfo[“data"][“url"] = $vurl;  
                    return $videoinfo;  
                    exit;  
                }  
            }else{  
                if ($hd_type == '1080P’ && $vurl != ") {  
                    $fdata[0]['url’] = $vurl;  
                    $fdata[0]['def’] = '蓝光’;  
                }   
                if ($hd_type == '720P’ && $vurl != ") {  
                    $fdata[1]['url’] = $vurl;  
                    $fdata[1]['def’] = '超清’;  
                }  
                if ($hd_type == '480P’ && $vurl != ") {  
                    $fdata[2]['url’] = $vurl;  
                    $fdata[2]['def’] = '高清’;  
                }   
            }  
        }  
        for ($i=0; $i <= 3 ; $i++) {   
            if ($fdata[$i] == ") {continue;}  
            $key_arrays[]=$fdata[$i];  
        }  
        $videoinfo['code’] = 200;  
        $videoinfo['poster’] = $img;  
        $videoinfo['name’] = $video_info[“coreVideoInfo"][“videoName"];  
        $videoinfo['play’] = 'h5mp4’;  
        $videoinfo[“data"][“url"] = $key_arrays[0]['url’];  
        return $videoinfo;  
    }  
    public static function get_source($wid=13,$aid){  
        $num = $aid % 500;  
        //$api = “http://minfo.baofeng.net/asp_c/{$wid}/{$num}/{$aid}.json";  
        $api = “http://minfo.baofeng.net/source/{$wid}/{$num}/{$aid}.json";  
        $html = self::curl($api,COOKIE_BAOFENG);  
        $json = str_replace(“;",“",str_replace(“var storm_json = “,“",$html));  
        $data = json_decode($json,true);  
        $video_list = $data[“video_list"];  
        $iid = $video_list[0][“iid"];  
        $size = $video_list[0][“size"];  
        $vurl = self::get_video_url($iid,$size);  
        return $vurl;  
    }  
     public static function get_video_url($gcid,$size){  
        $time = number_format(microtime(true),3,",");  
        $api = “http://rd.p2p.baofeng.net/queryvp.php?type=3&gcid={$gcid}&_={$time}&callback=jsonp7";  
        $html = self::curl($api,COOKIE_BAOFENG,PROXY);  
        preg_match(“#’ip’:'(.*?)’#",$html,$_ip);  
        preg_match(“#’port’:'(.*?)’#",$html,$_port);  
        preg_match(“#’path’:'(.*?)’#",$html,$_path);  
        preg_match(“#’key’:'(.*?)’#",$html,$_key);  
        $ip = self::getip($_ip[1]);  
        $port = $_port[1];  
        $path = $_path[1];  
        $key = $_key[1];  
        $vurl =“http://{$ip}:{$port}/{$path}?key={$key}&filelen={$size}";  
        return $vurl;  
    }  
    public static function curl($url,$cookie=“",$proxy=“")  
    {  
        //$data = mb_check_encoding($data,’gbk’)?iconv('gbk’,’utf-8//IGNORE’,$data):$data;//将字符串的编码从gbk转到UTF-8   
        $params[“ua"] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";  
        $params[“ip"] = “119.123.69.232";//伪装为固定IP,否则会报异地登录,会封号,不要更改  
        //$params[“proxy"] = $proxy;//代理地址  
        $params[“cookie"] = $cookie;  
        return GlobalBase::curl($url,$params);  
    }  
    /** 
     * [getip 解密IP地址] 
     * @param  [type] $ip [description] 
     * @return [type]     [description] 
     */  
    public static function getip($ip) {  
        $p2pmap = array(  
            “b"=>“0",“a"=>“1",“o"=>“2",  
            “f"=>“3",“e"=>“4",“n"=>“5",  
            “g"=>“6",“h"=>“7",“t"=>“8",  
            “m"=>“9",“l"=>“.",“c"=>“A",  
            “p"=>“B",“z"=>“C",“r"=>“D",  
            “y"=>“E",“s"=>“F"  
        );  
        $b = explode(“,", $ip);  
        for ($j = 0; $j < count($b); $j++) {  
            $g = $b[$j];  
            $f = “";  
            $h = strlen($g);  
            for ($k = 0; $k < $h; $k++){  
                $f .= $p2pmap[substr($g,$k,1)];  
            }  
        }  
        return $f;  
    }  
}  
 ?>