当前位置:首页 > 直播源 > 正文内容

广东电视台PHP代理源码

CLG8个月前 (09-05)直播源236
<?php
error_reporting(0);
$id = isset($_GET['id'])?$_GET['id']:'gdws';
$n = [
    'gdws' => 43, //广东卫视
    'gdzj' => 44, //广东珠江
    'gdxw' => 45, //广东新闻
    'gdms' => 48, //广东民生
    'gdty' => 47, //广东体育
    'nfws' => 51, //大湾区卫视
    'jjkj' => 49, //经济科教
    'gdys' => 53, //广东影视
    'gdzy' => 16, //广东综艺
    'gdgj' => 46, //广东国际
    'gdse' => 54, //广东少儿
    'jjkt' => 66, //嘉佳卡通
    'nfgw' => 42, //南方购物
    'lnxq' => 15, //岭南戏曲
    'gdfc' => 67, //广东房产
    'xdjy' => 13, //现代教育
    'gdyd' => 74, //广东移动
    'gdjk' => 99, //GRTN健康频道
    'gdwh' => 75, //GRTN文化频道
    'gdsh' => 102, //GRTN生活频道
    'gdjlp' => 94, //GRTN纪录片
    'gdlzt' => 100, //荔枝台
    ];
$ts = time().'790';
$headers = [
            "content-type: application/json",
            "referer: https://www.gdtv.cn/",
            "origin: https://www.gdtv.cn",
            "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",
            "x-itouchtv-ca-key: 89541443007807288657755311869534",
            "x-itouchtv-ca-timestamp: $ts",
            "x-itouchtv-client: WEB_PC",
            "x-itouchtv-device-id: WEB_".createNewGUID(),
            ];

$url = "https://tcdn-api.itouchtv.cn/getParam";
$sign = base64_encode(hash_hmac("SHA256","GET\n$url\n$ts\n","dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX",true));
$headers[] = "x-itouchtv-ca-signature: $sign";
$node = json_decode(get($url,$headers))->node;
        
//进入wss取串
$contextOptions = ['ssl' => ["verify_peer"=>false,"verify_peer_name"=>false,]];
$context = stream_context_create($contextOptions);
$sock = stream_socket_client("ssl://tcdn-ws.itouchtv.cn:3800",$errno,$errstr,1,STREAM_CLIENT_CONNECT,$context);
stream_set_timeout($sock,1);

$wssData = ['route'=>'getwsparam','message'=>$node];
$wssData = json_encode($wssData);
$key = genSecKey();
$header = "GET /connect HTTP/1.1\r\n";
$header.= "Host: tcdn-ws.itouchtv.cn:3800\r\n";
$header.= "Connection: Upgrade\r\n";
$header.= "Cache-Control: no-cache\r\n";
$header.= "Upgrade: websocket\r\n";
$header.= "Origin: https://www.gdtv.cn\r\n";
$header.= "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36\r\n";
$header.= "Sec-WebSocket-Version: 13\r\n";
$header.= "Sec-WebSocket-Key: {$key}\r\n";
$header.= "Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n";
fwrite($sock,$header."\r\n");
$handshake = stream_get_contents($sock);
if(strstr($handshake,'Sec-Websocket-Accept')){
    fwrite($sock, encode($wssData));
    $param = stream_get_contents($sock);
    $param = substr($param,4);
    $json =json_decode($param);
    $wsnode = $json->wsnode;
    }
//wss取串结束.
        
$burl = "https://gdtv-api.gdtv.cn/api/tv/v2/tvChannel/$n[$id]?tvChannelPk=$n[$id]&node=".base64_encode($wsnode);
$sign = base64_encode(hash_hmac("SHA256","GET\n$burl\n$ts\n","dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX",true));
$opt_headers = [
            "access-control-request-headers: content-type,x-itouchtv-ca-key,x-itouchtv-ca-signature,x-itouchtv-ca-timestamp,x-itouchtv-client,x-itouchtv-device-id",
            "access-control-request-method: GET",
            "origin: https://www.gdtv.cn",
            "referer: https://www.gdtv.cn",
            "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",
            ];

$ch = curl_init($burl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "OPTIONS");	 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$opt_headers);
$data = curl_exec($ch);
curl_close($ch); 

array_pop($headers);
$headers[] = "x-itouchtv-ca-signature: $sign";
$playurl = json_decode(json_decode(get($burl,$headers))->playUrl)->hd;
fclose($sock);// 取串完成再关闭wss

//m3u8清单referer校验。
$data = get($playurl,["Referer: https://www.gdtv.cn"]);
header("Content-Type: application/vnd.apple.mpegurl");
header("Content-Disposition: attachment; filename=index.m3u8");
echo $data;

function get($url,$header){
   $ch = curl_init($url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
   curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
   $data = curl_exec($ch);
   curl_close($ch);
   return $data;
   }

function genSecKey(){
   return base64_encode(substr(md5(mt_rand(1,999)),0,16));
   }

function encode($data){
   $len = strlen($data);
   $head[0] = 129; 
   $mask = [];
   for ($j = 0; $j < 4; $j ++){
       $mask[] = mt_rand(1, 128);
       }
   $split = str_split(sprintf('%016b', $len), 8);
   $head[1] = 254;
   $head[2] = bindec($split[0]);
   $head[3] = bindec($split[1]);
   $head = array_merge($head, $mask);
   foreach ($head as $k => $v){
       $head[$k] = chr($v);
       }
   $mask_data = '';
   for ($j = 0; $j < $len; $j ++){
       $mask_data .= chr(ord($data[$j]) ^ $mask[$j % 4]);
       }
   return implode('', $head).$mask_data;
   }

function createNewGUID(){
   if (function_exists('com_create_guid') === true)return trim(com_create_guid(), '{}');
   return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
   }
?>


  CLG博客
赞助

打赏

扫描二维码至手机访问

本文来源:CLG博客

本文地址:https://clg.kim/15.html

版权声明:如无特别注明,转载请注明本文地址!

分享给朋友:

没有更早的文章了...

下一篇:湖北广电切片代理源码

相关文章

某视频PHP切片代理源码

修复:提升1080P,解决VIP无法调取问题,新增8K、天津卫视、新疆卫视,修复卡顿、断流问题!<?php //https://www.yangshipin.cn/#/tv/home $id...

凤凰秀切片代理源码

<?php date_default_timezone_set("Asia/Shanghai"); $id = $_GET['id']...

湖北广电切片代理源码

<?php $id = $_GET['id']??"hnwshd_3000"; $seq = intval(tim...

爱看咪咕代理源码

<?php error_reporting(0); $id = isset($_GET['id'])?$_GET['id']:'c...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。