暴风解析源码
- <?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;
- }
- }
- ?>