华数TV解析源码

作者 : King 本文共16个字,预计阅读时间需要1分钟 发布时间: 2024-10-4 共549人阅读

华数TV解析源码

华数TV解析源码

  1.  echo str_replace(“\/”,“/”,json_encode(Wasu::parse($url)));
  2. /**
  3. */
  4. class Wasu
  5. {
  6.     public static function parse($url)
  7.     {
  8.         /*if(GlobalBase::is_ipad()){
  9.             if(strstr($url,”www.wasu.cn/Play/”)==true){
  10.                 $url = str_replace(“Play”,”wap/Play”,$url);
  11.             }
  12.             $content = self::curl($url);
  13.             preg_match(“#’vid’\s*:\s*'(\d+)’,#”,$content,$playId);
  14.             preg_match(“#’key’\s*:\s*'(.*)’,#”,$content,$playKey);
  15.             preg_match(“#’url’\s*:\s*'(.*)’,#”,$content,$playUrl);
  16.             $ids['vid’] = $playId[1];
  17.             $ids['key’] = $playKey[1];
  18.             $ids['vurl’] = $playUrl[1];
  19.             $ids['url’] = $url;
  20.             $data = self::get_wap_videos($ids);
  21.         }else{ */
  22.             if(strstr($url,“www.wasu.cn/wap/”)==true){
  23.                 $url = str_replace(“/wap”,“”,$url);
  24.             }
  25.             $content = self::curl($url);
  26.             preg_match(“#var\s*_playId\s*=\s*'(\d+)’,#”,$content,$playId);
  27.             preg_match(“#_playKey\s*=\s*'(.*)’,#”,$content,$playKey);
  28.             preg_match(“#_playUrl\s*=\s*'(.*)’,#”,$content,$playUrl);
  29.             preg_match(“#_playUrlHls\s*=\s*'(.*)’,#”,$content,$playUrlHls);
  30.             preg_match(“#_playpic\s*=\s*'(.*)’,#”,$content,$posters);
  31.             preg_match(“#_sid_=(.*),_cid#”,$content,$playId2);
  32.             $ids['vid’] = isset($playId[1]) ? $playId[1] : $playId2[1];
  33.             $ids['poster’] = isset($posters[1]) ? $posters[1] :  ;
  34.             $ids['key’] = $playKey[1];
  35.             $ids['url’] = $url;
  36.             $ids['vurl’] = $playUrl[1];
  37.             $ids['hurl’] = $playUrlHls[1];
  38.             //print_r($ids);exit;
  39.             $data = self::get_videos($ids);
  40.         /*} */
  41.         return $data;
  42.     }
  43.     public static function get_videos($ids)
  44.     {
  45.         $api = “https://www.wasu.cn/Api/getPlayInfoById/id/{$ids['vid’]}/datatype/xml”;
  46.         $ids['ref’] = 'https://www.wasu.cn/Play/show/id/’.$ids['vid’];
  47.         $ids['ua’] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36’;
  48.         $data = self::curl($api,$ids);
  49.         $txt = $data;
  50.         $pa = '%<!\[CDATA\[(.*)\]\]>%si’;//正则表达式
  51.         preg_match_all($pa,$txt,$matches);
  52.         $xml = simplexml_load_string($data);
  53.         $json = json_decode(json_encode($xml),true);
  54.         $mp4 = $json[“mp4″];
  55.         foreach ($mp4 as $_key => $value) {
  56.             switch ($_key) {
  57.                 case 'hd0’:$def = “标清”;break;
  58.                 case 'hd1’:$def = “高清”;break;
  59.                 case 'hd2’:$def = “超清”;break;
  60.                 case 'hd3’:$def = “720P”;break;
  61.                 case 'hd4’:$def = “1080P”;break;
  62.             }
  63.             $value = base64_encode(base64_decode($value));
  64.             //$value = base64_encode(str_replace('.mp4′,’/playlist.m3u8’,base64_decode($value)));
  65.             $vurl = self::streamCode(self::get_code($ids['vid’],$ids['key’],$value));
  66.             if (GlobalBase::is_ipad()) {
  67.                 if ($_key == 'hd2’ && $vurl != ) {
  68.                     $fdata[2]['url’] = $vurl;
  69.                     $fdata[2]['def’] = '高清’;
  70.                 }
  71.                 if ($_key == 'hd1’ && $vurl != ) {
  72.                     $fdata[3]['url’] = $vurl;
  73.                     $fdata[3]['def’] = '流畅’;
  74.                 }
  75.                 if ($_key == 'hd0’ && $vurl != ) {
  76.                     $fdata[4]['url’] = $vurl;
  77.                     $fdata[4]['def’] = '流畅’;
  78.                 }
  79.             } else {
  80.                 if ($_key == 'hd4’ && $vurl != ) {
  81.                     $fdata[0]['url’] = $vurl;
  82.                     $fdata[0]['def’] = '蓝光’;
  83.                 }
  84.                 if ($_key == 'hd3’ && $vurl != ) {
  85.                     $fdata[1]['url’] = $vurl;
  86.                     $fdata[1]['def’] = '720P’;
  87.                 }
  88.                 if ($_key == 'hd2’ && $vurl != ) {
  89.                     $fdata[2]['url’] = $vurl;
  90.                     $fdata[2]['def’] = '高清’;
  91.                 }
  92.                 if ($_key == 'hd1’ && $vurl != ) {
  93.                     $fdata[3]['url’] = $vurl;
  94.                     $fdata[3]['def’] = '流畅’;
  95.                 }
  96.                 if ($_key == 'hd0’ && $vurl != ) {
  97.                     $fdata[4]['url’] = $vurl;
  98.                     $fdata[4]['def’] = '流畅’;
  99.                 }
  100.             }
  101.         }
  102.         for ($i=0; $i <= 5 ; $i++) {
  103.             if ($fdata[$i] == ) {continue;}
  104.             $key_arrays[]=$fdata[$i];
  105.         }
  106.         $videoinfo['code’] = 200;
  107.         $videoinfo['poster’] = $json['snapshot’];
  108.         $videoinfo['name’] = isset($matches[1][0]) ? $matches[1][0] : ;
  109.         $videoinfo['play’] = 'h5mp4’;
  110.         $videoinfo['data’]['url’] = $key_arrays[0]['url’];
  111.         return $videoinfo;
  112.     }
  113.     public static function get_wap_videos($ids)
  114.     {
  115.         $api = “http://clientapi.wasu.cn/Phone/vodinfo/id/{$ids['vid’]}”;
  116.         $data = self::curl($api,$ids);
  117.         $json = json_decode($data,true);
  118.         $vods = $json[“vods”];
  119.         $host = parse_url(base64_decode($ids['vurl’]))[“host”];
  120.         foreach ($vods as $key => $value) {
  121.             $def = $value[“hd”];
  122.             $vurl = $value[“url”];
  123.             $vurl = str_replace(parse_url($vurl)[“host”],$host,$vurl);
  124.             $vurl = str_replace('.mp4′,’/playlist.m3u8’,$vurl);
  125.             $vurl = self::streamCode(self::get_code($ids['vid’],$ids['key’],base64_encode($vurl)));
  126.             $video[0] = $vurl;
  127.             $video[1] = “video/m3u8″;
  128.             $video[2] = $def;
  129.             $video[3] =  $def ==“1080P”? 10 : $def ==“高清”?10:0;
  130.             $videoinfo[“video”][$key] = $video;
  131.         }
  132.         return $videoinfo;
  133.     }
  134.     public static function get_code($vid,$key,$url)
  135.     {
  136.         $api = “https://apiontime.wasu.cn/Auth/getVideoUrl?id={$vid}&mode=1&key={$key}&url={$url}”;
  137.         $data = self::curl($api);
  138.         preg_match(“#\[CDATA\[(.*)\]\]#”,$data,$video);
  139.         return $video[1];
  140.     }
  141.     public static function curl($url,$ids=)
  142.     {
  143.         $params[“ua”] = isset($ids['ua’]) ? $ids['ua’] : “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36″;
  144.         return GlobalBase::curl($url,$params);
  145.     }
  146.     //=======================================================================================================================================
  147.     public static function streamCode($string$operation = 'DECODE’, $key = 'wasu!@#48217#$@#1’, $expiry = 0){
  148.         $ckey_length = 4;
  149.         $key = md5($key ? $key : '12345678’);
  150.         $keya = md5(substr($key, 0, 16));
  151.         $keyb = md5(substr($key, 16, 32));
  152.         $keyc = $ckey_length ? $operation == 'DECODE’ ? substr($string, 0, $ckey_length) : substr(md5(microtime()), –$ckey_length) : ;
  153.         $cryptkey = $keya . md5($keya . $keyc);
  154.         $key_length = strlen($cryptkey);
  155.         $string = $operation == 'DECODE’ ? base64_decode(substr($string$ckey_length)) : sprintf('%010d’, $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;
  156.         $string_length = strlen($string);
  157.         $result = ;
  158.         $box = range(0, 255);
  159.         $rndkey = array();
  160.         for($i = 0; $i <= 255; $i++){
  161.             $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  162.         }
  163.         for($j = $i = 0; $i < 128; $i++){
  164.             $j = ($j + $box[$i] + $rndkey[$i]) % 128;
  165.             $tmp = $box[$i];
  166.             $box[$i] = $box[$j];
  167.             $box[$j] = $tmp;
  168.         }
  169.         for($a = $j = $i = 0; $i < $string_length$i++){
  170.             $a = ($a + 1) % 128;
  171.             $j = ($j + $box[$a]) % 128;
  172.             $tmp = $box[$a];
  173.             $box[$a] = $box[$j];
  174.             $box[$j] = $tmp;
  175.             $result .= chr(ord($string[$i]) ^ $box[($box[$a] + $box[$j]) % 128]);
  176.         }
  177.         if($operation == 'DECODE’){
  178.             if((substr($result, 0, 10) == 0 || substr($result, 0, 10) – time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)){
  179.                 return substr($result, 26);
  180.             }else{
  181.                 return ;
  182.             }
  183.         }else{
  184.             return $keyc . base64_encode($result);
  185.         }
  186.     }
  187.     public static function _streamCode($enstr$token = “wasu!@#48217#$@#1″) {
  188.         $klen = 4;
  189.         if (strstr($enstr,“.mp4″)) {
  190.             return $enstr;
  191.         }
  192.         $token = md5($token);
  193.         $tm = $_SERVER['REQUEST_TIME’];
  194.         $key1 = md5(substr($token, 0, 16));
  195.         $key2 = md5(substr($token, 16, 32));
  196.         $key3 = substr($enstr, 0, $klen);
  197.         $key4 = $key1.md5($key1.$key3);
  198.         $keylen = strlen($key4);
  199.         $enstr = base64_decode(substr($enstr$klen));
  200.         $l16 = 0;
  201.         $l14 = array();
  202.         $l15 = array();
  203.         $local13 = strlen($enstr);
  204.         while ($l16 < 128){
  205.             $l14[$l16] = $l16;
  206.             $l15[$l16] = ord(substr($key4$l16 % $keylen, 1)) & 0xff;
  207.             $l16++;
  208.         }
  209.         $l16 = 0;
  210.         $l17 = $l16;
  211.         while ($l16 < 128) {
  212.             $l17 = (($l17 + $l14[$l16]) + $l15[$l16]) % 128;
  213.             $l19 = $l14[$l16];
  214.             $l14[$l16] = $l14[$l17];
  215.             $l14[$l17] = $l19;
  216.             $l16++;
  217.         }
  218.         $l16 = 0;
  219.         $l20 = array();
  220.         $l17 = $l16;
  221.         $l18 = $l17;
  222.         while ($l16 < $local13) {
  223.             $l18 = (($l18 + 1) % 128);
  224.             $l17 = (($l17 + $l14[$l18]) % 128);
  225.             $l19 = $l14[$l18];
  226.             $l14[$l18] = $l14[$l17];
  227.             $l14[$l17] = $l19;
  228.             $l20[] = ((ord(substr($enstr$l16, 1)) & 0xFF) ^ $l14[(($l14[$l18] + $l14[$l17]) % 128)]);
  229.             $l16++;
  230.         }
  231.         $toStr = “”;
  232.         for($i = 0; $i < count($l20); $i++){
  233.             $toStr .= chr($l20[$i]);
  234.         }
  235.         return strlen($toStr) > 26 ? substr($toStr, 26) : “”;
  236.     }
  237.     public static function get_WasuVODUrl($url) {
  238.         $play = parse_url($url);
  239.         $tm = $_SERVER['REQUEST_TIME’];
  240.         $timestamp = date(“YmdHi”$tm);
  241.         $token = sprintf(“%s%s%s”“ccVOD@)!#\$WASUPC”$timestamp$play['path’]);
  242.         return sprintf(“http://clientvod.wasu.cn/%s/%s%s”$timestamp, md5($token), $play['path’]);
  243.     }
  244. }
  245.  /*
  246. function streamCode($enstr, $token = “wasu!@#48217#$@#1″) {
  247.     $klen = 4;
  248.     if (strstr($enstr,”.mp4″)) {
  249.         return $enstr;
  250.     }
  251.     $token = md5($token);
  252.     $tm = $_SERVER['REQUEST_TIME’];
  253.     $key1 = md5(substr($token, 0, 16));
  254.     $key2 = md5(substr($token, 16, 32));
  255.     $key3 = substr($enstr, 0, $klen);
  256.     $key4 = $key1.md5($key1.$key3);
  257.     $keylen = strlen($key4);
  258.     $enstr = base64_decode(substr($enstr, $klen));
  259.     $l16 = 0;
  260.     $l14 = array();
  261.     $l15 = array();
  262.     $local13 = strlen($enstr);
  263.     while ($l16 < 128){
  264.         $l14[$l16] = $l16;
  265.         $l15[$l16] = ord(substr($key4, $l16 % $keylen, 1)) & 0xff;
  266.         $l16++;
  267.     }
  268.     $l16 = 0;
  269.     $l17 = $l16;
  270.     while ($l16 < 128) {
  271.         $l17 = (($l17 + $l14[$l16]) + $l15[$l16]) % 128;
  272.         $l19 = $l14[$l16];
  273.         $l14[$l16] = $l14[$l17];
  274.         $l14[$l17] = $l19;
  275.         $l16++;
  276.     }
  277.     $l16 = 0;
  278.     $l20 = array();
  279.     $l17 = $l16;
  280.     $l18 = $l17;
  281.     while ($l16 < $local13) {
  282.         $l18 = (($l18 + 1) % 128);
  283.         $l17 = (($l17 + $l14[$l18]) % 128);
  284.         $l19 = $l14[$l18];
  285.         $l14[$l18] = $l14[$l17];
  286.         $l14[$l17] = $l19;
  287.         $l20[] = ((ord(substr($enstr, $l16, 1)) & 0xFF) ^ $l14[(($l14[$l18] + $l14[$l17]) % 128)]);
  288.         $l16++;
  289.     }
  290.     $toStr = “”;
  291.     for($i = 0; $i < count($l20); $i++){
  292.         $toStr .= chr($l20[$i]);
  293.     }
  294.     return strlen($toStr) > 26 ? substr($toStr, 26) : “”;
  295. }
  296. function get_WasuVODUrl($url) {
  297.     $play = parse_url($url);
  298.     $tm = $_SERVER['REQUEST_TIME’];
  299.     $timestamp = date(“YmdHi”, $tm);
  300.     $token = sprintf(“%s%s%s”, “ccVOD@)!#\$WASUPC”, $timestamp, $play['path’]);
  301.     return sprintf(“http://clientvod.wasu.cn/%s/%s%s”, $timestamp, md5($token), $play['path’]);
  302. }
  303. $url = “”;
  304. $link = isset($_REQUEST['url’]) ? $_REQUEST['url’] : “”;
  305. $enstr = empty($_REQUEST['enstr’]) ? “” : $_REQUEST['enstr’];
  306. if (strlen($enstr) > 32) {
  307.     $url = streamCode($enstr);
  308. } else if (strlen($link) > 15) {
  309.     $url = @get_WasuVODUrl(base64_decode($link));
  310. }
  311. echo '{“url”:”'.$url.'”}’;
  312.   */

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

小鱼网是一个美好的开源学习社区,学习编程,学习WordPress,下载WordPress插件主题,
小鱼网 » 华数TV解析源码

常见问题FAQ

发表回复

分享最优质的学习资料

立即查看 了解详情