暴风解析源码(参考)

技术文章 无标签

只提供参考,自行测试更多资源交流群516722628

<?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;
    }
}
 ?>

Comments (0)