<?php
header('Content-Type:text/json;charset=UTF-8'); $id = $_GET['id'];
if (empty($_GET['id'])) $id = 'gdws'; $n = [
'gdws' => 43, //广东卫视
'gdzj' => 44, //广东珠江
'gdxw' => 45, //广东新闻
'gdgg' => 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文化频道
];
$headers = [
"referer: https://w...content-available-to-author-only...v.cn/",
"origin: https://w...content-available-to-author-only...v.cn",
"user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64",
"x-itouchtv-ca-key: 89541443007807288657755311869534",
"x-itouchtv-ca-timestamp: $ts",
"x-itouchtv-client: WEB_PC",
"x-itouchtv-device-id: WEB_0"
];
$bstrURL = "https://t...content-available-to-author-only...v.cn/getParam";
$sign = base64_encode(hash_hmac("SHA256","GET\n$bstrURL\n$ts\n","dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX",true)); $headers[] = "x-itouchtv-ca-signature: $sign";
$node = $json -> node;
// 进入wss取串
$contextOptions = ['ssl' => ["verify_peer"=>false,"verify_peer_name"=>false]];
$sock = stream_socket_client("ssl://tcdn-ws.itouchtv.cn:3800",$errno,$errstr,1,STREAM_CLIENT_CONNECT
,$context); $wssData = json_encode(['route' => 'getwsparam','message' => $node]);
$header .= "GET /connect HTTP/1.1\r\n";
$header .= "Host: tcdn-ws.itouchtv.cn:3800\r\n";
$header .= "Upgrade: websocket\r\n";
$header .= "Sec-WebSocket-Key: $key\r\n";
if(strstr($handshake,'Sec-Websocket-Accept')) { fwrite($sock, encode
($wssData)); $wsnode = $json->wsnode;
}
// wss 取串结束.
$bstrURL = "https://g...content-available-to-author-only...v.cn/api/tv/v2/tvChannel/$n[$id]?tvChannelPk=$n[$id]&node=".base64_encode($wsnode); $sign = base64_encode(hash_hmac("SHA256","GET\n$bstrURL\n$ts\n","dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX",true));
curl_setopt($ch, CURLOPT_HTTPHEADER
,["referer: https://w...content-available-to-author-only...v.cn"]);
$headers[] = "x-itouchtv-ca-signature: $sign";
// m3u8加referer校验。
curl_setopt($ch, CURLOPT_HTTPHEADER
,["Referer: https://w...content-available-to-author-only...v.cn"]);
function encode($data) {
$head[0] = 129;
$mask = [];
for ($j = 0; $j < 4; $j ++) {
}
$head[1] = 254;
foreach ($head as $k => $v) {
}
$mask_data = '';
for ($j = 0; $j < $len; $j ++) {
$mask_data .= chr(ord($data[$j]) ^
$mask[$j % 4]); }
return implode('', $head).$mask_data; }
?>
PD9waHAKZXJyb3JfcmVwb3J0aW5nKDApOwpoZWFkZXIoJ0NvbnRlbnQtVHlwZTp0ZXh0L2pzb247Y2hhcnNldD1VVEYtOCcpOwokaWQgPSAkX0dFVFsnaWQnXTsKaWYgKGVtcHR5KCRfR0VUWydpZCddKSkgJGlkID0gJ2dkd3MnOwokbiA9IFsKICAgICdnZHdzJyA9PiA0MywgLy/lub/kuJzljavop4YKICAgICdnZHpqJyA9PiA0NCwgLy/lub/kuJznj6DmsZ8KICAgICdnZHh3JyA9PiA0NSwgLy/lub/kuJzmlrDpl7sKICAgICdnZGdnJyA9PiA0OCwgLy/lub/kuJzlhazlhbEKICAgICdnZHR5JyA9PiA0NywgLy/lub/kuJzkvZPogrIKICAgICduZndzJyA9PiA1MSwgLy/lpKfmub7ljLrljavop4YKICAgICdqamtqJyA9PiA0OSwgLy/nu4/mtY7np5HmlZkKICAgICdnZHlzJyA9PiA1MywgLy/lub/kuJzlvbHop4YKICAgICdnZHp5JyA9PiAxNiwgLy/lub/kuJznu7zoiboKICAgICdnZGdqJyA9PiA0NiwgLy/lub/kuJzlm73pmYUKICAgICdnZHNlJyA9PiA1NCwgLy/lub/kuJzlsJHlhL8KICAgICdqamt0JyA9PiA2NiwgLy/lmInkvbPljaHpgJoKICAgICduZmd3JyA9PiA0MiwgLy/ljZfmlrnotK3niakKICAgICdsbnhxJyA9PiAxNSwgLy/lsq3ljZfmiI/mm7IKICAgICdnZGZjJyA9PiA2NywgLy/lub/kuJzmiL/kuqcKICAgICd4ZGp5JyA9PiAxMywgLy/njrDku6PmlZnogrIKICAgICdnZHlkJyA9PiA3NCwgLy/lub/kuJznp7vliqgKICAgICdnZGprJyA9PiA5OSwgLy9HUlRO5YGl5bq36aKR6YGTCiAgICAnZ2R3aCcgPT4gNzUsIC8vR1JUTuaWh+WMlumikemBkwogICAgXTsKCiR0cyA9IHRpbWUoKTsKJGhlYWRlcnMgPSBbCiAgICAgICJyZWZlcmVyOiBodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnYuY24vIiwKICAgICAgIm9yaWdpbjogaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi52LmNuIiwKICAgICAgInVzZXItYWdlbnQ6IE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0IiwKICAgICAgIngtaXRvdWNodHYtY2Eta2V5OiA4OTU0MTQ0MzAwNzgwNzI4ODY1Nzc1NTMxMTg2OTUzNCIsCiAgICAgICJ4LWl0b3VjaHR2LWNhLXRpbWVzdGFtcDogJHRzIiwKICAgICAgIngtaXRvdWNodHYtY2xpZW50OiBXRUJfUEMiLAogICAgICAieC1pdG91Y2h0di1kZXZpY2UtaWQ6IFdFQl8wIgogICAgICBdOwoKJGJzdHJVUkwgPSAiaHR0cHM6Ly90Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi52LmNuL2dldFBhcmFtIjsKJHNpZ24gPSBiYXNlNjRfZW5jb2RlKGhhc2hfaG1hYygiU0hBMjU2IiwiR0VUXG4kYnN0clVSTFxuJHRzXG4iLCJkZmtjWTFjM3NmdXcwQ2lpOURXak9VTzNpUXkyaHFsRHh5dkRYZDFvVk14d1lBSlNnZUI2cGhPOGVXMWRmdXdYIix0cnVlKSk7CiRoZWFkZXJzW10gPSAieC1pdG91Y2h0di1jYS1zaWduYXR1cmU6ICRzaWduIjsKCiRjaCA9IGN1cmxfaW5pdCgkYnN0clVSTCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIEZBTFNFKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBIRUFERVIsJGhlYWRlcnMpOwokZGF0YSA9IGN1cmxfZXhlYygkY2gpOwpjdXJsX2Nsb3NlKCRjaCk7CiRqc29uID0ganNvbl9kZWNvZGUoJGRhdGEpOwokbm9kZSA9ICRqc29uIC0+IG5vZGU7CgovLyDov5vlhaV3c3Plj5bkuLIKJGNvbnRleHRPcHRpb25zID0gWydzc2wnID0+IFsidmVyaWZ5X3BlZXIiPT5mYWxzZSwidmVyaWZ5X3BlZXJfbmFtZSI9PmZhbHNlXV07CiRjb250ZXh0ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKCRjb250ZXh0T3B0aW9ucyk7CiRzb2NrID0gc3RyZWFtX3NvY2tldF9jbGllbnQoInNzbDovL3RjZG4td3MuaXRvdWNodHYuY246MzgwMCIsJGVycm5vLCRlcnJzdHIsMSxTVFJFQU1fQ0xJRU5UX0NPTk5FQ1QsJGNvbnRleHQpOwpzdHJlYW1fc2V0X3RpbWVvdXQoJHNvY2ssMSk7CiR3c3NEYXRhID0ganNvbl9lbmNvZGUoWydyb3V0ZScgPT4gJ2dldHdzcGFyYW0nLCdtZXNzYWdlJyA9PiAkbm9kZV0pOwoKJGtleSA9IGJhc2U2NF9lbmNvZGUoc3Vic3RyKG1kNShtdF9yYW5kKDEsOTk5KSksMCwxNikpOwokaGVhZGVyIC49ICJHRVQgL2Nvbm5lY3QgSFRUUC8xLjFcclxuIjsKJGhlYWRlciAuPSAiSG9zdDogdGNkbi13cy5pdG91Y2h0di5jbjozODAwXHJcbiI7CiRoZWFkZXIgLj0gIlVwZ3JhZGU6IHdlYnNvY2tldFxyXG4iOwokaGVhZGVyIC49ICJTZWMtV2ViU29ja2V0LUtleTogJGtleVxyXG4iOwpmd3JpdGUoJHNvY2ssJGhlYWRlci4iXHJcbiIpOwokaGFuZHNoYWtlID0gc3RyZWFtX2dldF9jb250ZW50cygkc29jayk7CmlmKHN0cnN0cigkaGFuZHNoYWtlLCdTZWMtV2Vic29ja2V0LUFjY2VwdCcpKSB7CmZ3cml0ZSgkc29jaywgZW5jb2RlKCR3c3NEYXRhKSk7CiRwYXJhbSA9IHN0cmVhbV9nZXRfY29udGVudHMoJHNvY2spOwokcGFyYW0gPSBzdWJzdHIoJHBhcmFtLDQpOwokanNvbiA9anNvbl9kZWNvZGUoJHBhcmFtKTsKJHdzbm9kZSA9ICRqc29uLT53c25vZGU7Cn0KLy8gd3NzIOWPluS4sue7k+adny4KCiRic3RyVVJMID0gImh0dHBzOi8vZy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udi5jbi9hcGkvdHYvdjIvdHZDaGFubmVsLyRuWyRpZF0/dHZDaGFubmVsUGs9JG5bJGlkXSZub2RlPSIuYmFzZTY0X2VuY29kZSgkd3Nub2RlKTsKJHNpZ24gPSBiYXNlNjRfZW5jb2RlKGhhc2hfaG1hYygiU0hBMjU2IiwiR0VUXG4kYnN0clVSTFxuJHRzXG4iLCJkZmtjWTFjM3NmdXcwQ2lpOURXak9VTzNpUXkyaHFsRHh5dkRYZDFvVk14d1lBSlNnZUI2cGhPOGVXMWRmdXdYIix0cnVlKSk7CgokY2ggPSBjdXJsX2luaXQoJGJzdHJVUkwpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCwgIk9QVElPTlMiKTsgIApjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIEZBTFNFKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBGQUxTRSk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQSEVBREVSLFsicmVmZXJlcjogaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi52LmNuIl0pOwokZGF0YSA9IGN1cmxfZXhlYygkY2gpOwpjdXJsX2Nsb3NlKCRjaCk7CgphcnJheV9wb3AoJGhlYWRlcnMpOwokaGVhZGVyc1tdID0gIngtaXRvdWNodHYtY2Etc2lnbmF0dXJlOiAkc2lnbiI7CiAgICAgICAgCiRjaCA9IGN1cmxfaW5pdCgkYnN0clVSTCk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIEZBTFNFKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBIRUFERVIsJGhlYWRlcnMpOwokZGF0YSA9IGN1cmxfZXhlYygkY2gpOwpjdXJsX2Nsb3NlKCRjaCk7CiRqc29uID0ganNvbl9kZWNvZGUoJGRhdGEpOwokcGxheVVSTCA9IGpzb25fZGVjb2RlKCRqc29uIC0+IHBsYXlVcmwpIC0+IGhkOwoKLy8gbTN1OOWKoHJlZmVyZXLmoKHpqozjgIIKJGNoID0gY3VybF9pbml0KCRwbGF5VVJMKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBGQUxTRSk7CmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgRkFMU0UpOwpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUixbIlJlZmVyZXI6IGh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udi5jbiJdKTsKJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKY3VybF9jbG9zZSgkY2gpOwpwcmludF9yKCRkYXRhKTsKCmZ1bmN0aW9uIGVuY29kZSgkZGF0YSkgewogICRsZW4gPSBzdHJsZW4oJGRhdGEpOwogICRoZWFkWzBdID0gMTI5OwogICRtYXNrID0gW107CiAgZm9yICgkaiA9IDA7ICRqIDwgNDsgJGogKyspIHsKICAgICAkbWFza1tdID0gbXRfcmFuZCgxLCAxMjgpOwogICAgIH0KICAkc3BsaXQgPSBzdHJfc3BsaXQoc3ByaW50ZignJTAxNmInLCAkbGVuKSwgOCk7CiAgJGhlYWRbMV0gPSAyNTQ7CiAgJGhlYWRbMl0gPSBiaW5kZWMoJHNwbGl0WzBdKTsKICAkaGVhZFszXSA9IGJpbmRlYygkc3BsaXRbMV0pOwogICRoZWFkID0gYXJyYXlfbWVyZ2UoJGhlYWQsICRtYXNrKTsKICBmb3JlYWNoICgkaGVhZCBhcyAkayA9PiAkdikgewogICAgJGhlYWRbJGtdID0gY2hyKCR2KTsKICAgIH0KICAkbWFza19kYXRhID0gJyc7CiAgZm9yICgkaiA9IDA7ICRqIDwgJGxlbjsgJGogKyspIHsKICAgICAkbWFza19kYXRhIC49IGNocihvcmQoJGRhdGFbJGpdKSBeICRtYXNrWyRqICUgNF0pOwogICAgIH0KICByZXR1cm4gaW1wbG9kZSgnJywgJGhlYWQpLiRtYXNrX2RhdGE7CiAgfQoKPz4=