找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 4822|回复: 64

[iptv信源 资源分享或寻求] 426央视频直播代理php源码

  [复制链接]
 楼主| 来自手机 | 显示全部楼层
欧吉桑 发表于 2024-4-28 08:15
帖子里面说的方法不实际,用户在使用php后就断开连接了,除非你把代码改成以前切片那种模式。问了下ChatGPT ...

是的,谢谢你的建议,如果用重定向的话,播放器只会访问一次php。以前的切片模式,播放器每隔几秒就会请求一次php,请求量太大,似乎过一段时间服务器缓存量太大,就没法观看了。我不知道该怎么设置让播放器两三分钟请求一次php,因为一般切片只能持续十几秒,两三分钟请求一次那么视频早就失效了。除非不用切片,直接给m3u8文件,但是这样播放器还会访问php吗?
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
gdfstom 发表于 2024-4-27 22:44
'cctv6hd' => 2013693901, //cccv6、 'cetv1' => 2022823801, //教育1台 'btws' => 2022606701,  // 兵团卫 ...

谢谢你提供的id,请问这几个id似乎是手机上的。我昨晚测试的时候也和你一样,比较卡顿。
回复

使用道具 举报

可用,感谢分享。
回复

使用道具 举报

深圳测试卡顿,播放1-3分钟出现,卡住,等个几秒又动,然后又卡,一直循环,
回复

使用道具 举报

来自手机 | 显示全部楼层
https://player-api.yangshipin.cn/v1/player/auth 这个api是从哪里抓到的?app吗?为什么我在网页端抓到的不是这个,而且还很复杂,而且还有访问次数限制
回复

使用道具 举报

1499232490 发表于 2024-4-27 15:44
试一下贴子里的新代码,期待反馈,谢谢!

这次央1跑了13分钟了,没问题。
回复

使用道具 举报

1499232490 发表于 2024-4-27 15:44
试一下贴子里的新代码,期待反馈,谢谢!

18分钟卡了几秒又播放了,不知道是不是网络原因
回复

使用道具 举报

本帖最后由 1499232490 于 2024-4-27 15:42 编辑

从4.23左右发现原来的代理失效了,经过大家的提醒,我在原来代码的基础上新增了ysptoken验证参数,实践时可以正常播放,提醒!!!guid一定要改,改成自己的或者随便改几个数字,不然会很卡(4/27设置guid为随机数,不需要再自己改了)
感谢评论区内提供的观看VIP的办法,目前还有一个问题,视频到了五分钟左右会断流,希望大家有好的想法在评论区内留言!感谢@howeasytech提出的guid随机和切片方法,感谢评论区和点评区@yyychn 和@guoma @hu1968 提出的观看vip频道地办法。
附上代码:
  1. <?php

  2. $id = isset($_GET['id'])?$_GET['id']:'cctv1';
  3. $n = [
  4.     //央视
  5.     'cctv4k' => 2022575203,//cccv-4k
  6.     'cctv8k' => 2020603421,//cccv-8k
  7.     'cctv1' => 2022576803,//cccv1
  8.     'cctv2' => 2022576703,//cccv2
  9.     'cctv3' => 2022576503,//cccv3(vip)
  10.     'cctv4' => 2022576603,//cccv4
  11.     'cctv5' => 2022576403,//cccv5
  12.     'cctv5p' => 2022576303,//cccv5+
  13.     'cctv6' => 2022574303,//cccv6(vip)
  14.     'cctv7' => 2022576203,//cccv7
  15.     'cctv8' => 2022576103,//cccv8(vip)
  16.     'cctv9' => 2022576003,//cccv9
  17.     'cctv10' => 2022573003,//CCTV10
  18.     'cctv11' => 2022575903,//CCTV11
  19.     'cctv12' => 2022575803,//CCTV12
  20.     'cctv13' => 2022575703,//CCTV13
  21.     'cctv14' => 2022575603,//CCTV14
  22.     'cctv15' => 2022575503,//CCTV15
  23.     'cctv16' => 2022575403,//CCTV16
  24.     'cctv16-4k' => 2022575103,//CCTV16-4k(vip)
  25.     'cctv17' => 2022575303,//CCTV17
  26.     //央视数字
  27.     'bqkj' => 2012513403,//CCTV兵器科技(vip)
  28.     'dyjc' => 2012514403,//CCTV第一剧场(vip)
  29.     'hjjc' => 2012511203,//CCTV怀旧剧场(vip)
  30.     'fyjc' => 2012513603,//CCTV风云剧场(vip)
  31.     'fyyy' => 2012514103,//CCTV风云音乐(vip)
  32.     'fyzq' => 2012514203,//CCTV风云足球(vip)
  33.     'dszn' => 2012514003,//CCTV电视指南(vip)
  34.     'nxss' => 2012513903,//CCTV女性时尚(vip)
  35.     'whjp' => 2012513803,//CCTV央视文化精品(vip)
  36.     'sjdl' => 2012513303,//CCTV世界地理(vip)
  37.     'gefwq' => 2012512503,//CCTV高尔夫网球(vip)
  38.     'ystq' => 2012513703,//CCTV央视台球(vip)
  39.     'wsjk' => 2012513503,//CCTV卫生健康(vip)
  40.     //央视国际
  41.     'cgtn' => 2022575003,//CGTN
  42.     'cgtnjl' => 2022574703,//CGTN纪录
  43.     'cgtne' => 2022574803,//CGTN西语
  44.     'cgtnf' => 2022574903,//CGTN法语
  45.     'cgtna' => 2022574603,//CGTN阿语
  46.     'cgtnr' => 2022574803,//CGTN俄语
  47.     //卫视
  48.     'bjws' => 2000272103,//北京卫视
  49.     'dfws' => 2000292403,//东方卫视
  50.     'tjws' => 2019927003, //天津卫视
  51.     'cqws' => 2000297803,//重庆卫视
  52.     'hljws' => 2000293903,//黑龙江卫视
  53.     'lnws' => 2000281303,//辽宁卫视
  54.     'hbws' => 2000293403,//河北卫视
  55.     'sdws' => 2000294803,//山东卫视
  56.     'ahws' => 2000298003,//安徽卫视
  57.     'hnws' => 2000296103,//河南卫视
  58.     'hubws' => 2000294503,//湖北卫视
  59.     'hunws' => 2000296203,//湖南卫视
  60.     'jxws' => 2000294103,//江西卫视
  61.     'jsws' => 2000295603,//江苏卫视
  62.     'zjws' => 2000295503,//浙江卫视
  63.     'dnws' => 2000292503,//东南卫视
  64.     'gdws' => 2000292703,//广东卫视
  65.     'szws' => 2000292203,//深圳卫视
  66.     'gxws' => 2000294203,//广西卫视
  67.     'gzws' => 2000293303,//贵州卫视
  68.     'scws' => 2000295003,//四川卫视
  69.     'xjws' => 2019927403, //新疆卫视
  70.     'hinws' => 2000291503,//海南卫视
  71.     ];
  72. $cnlid = $n[$id];
  73. $guid = "lsdbop7p_".nu(11);
  74. $salt = '0f$IVHi9Qno?G';
  75. $platform = "5910204";
  76. $key = hex2bin("48e5918a74ae21c972b90cce8af6c8be");
  77. $iv = hex2bin("9a7e7d23610266b1d9fbf98581384d92");
  78. $ts = time();
  79. $el = "|{$cnlid}|{$ts}|mg3c3b04ba|V1.0.0|{$guid}|{$platform}|https://www.yangshipin.c|mozilla/5.0 (windows nt ||Mozilla|Netscape|Win32|";
  80. $len = strlen($el);
  81. $xl = 0;
  82. for($i=0;$i<$len;$i++){
  83.     $xl = ($xl << 5) - $xl + ord($el[$i]);
  84.     $xl &= $xl & 0xFFFFFFFF;
  85.     }

  86. $xl = ($xl > 2147483648) ? $xl - 4294967296 : $xl;

  87. $el = '|'.$xl.$el;
  88. $ckey = "--01".strtoupper(bin2hex(openssl_encrypt($el,"AES-128-CBC",$key,1,$iv)));
  89. function Kc($t) {//对参数数组排序并签名
  90.     $e = "";
  91.     $r = [];
  92.     $Rc = '0f$IVHi9Qno?G';
  93.     foreach ($t as $key => $value) {
  94.         $r[] = $key;
  95.     }
  96.     sort($r);
  97.     foreach ($r as $index => $key) {
  98.         if ($index != 0) {
  99.             $e .= "&";
  100.         }
  101.         if (is_array($t[$key])) {
  102.             $t[$key] = implode(",", $t[$key]);
  103.         }
  104.         $e .= $key . "=" . rawurlencode($t[$key]);
  105.     }
  106.     $e .= $Rc;
  107.     return md5($e);
  108. }   
  109. function nu($t = 10) {
  110.     $e = "ABCDEFGHIJKlMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  111.     $r = strlen($e);
  112.     $n = "";
  113.     for ($i = 0; $i < $t; $i++) {
  114.         $n .= $e[rand(0, $r - 1)];
  115.     }
  116.     return $n;
  117. }
  118. $randomString = nu(10);
  119. //获取当前毫秒级别时间
  120. $currentTimeMillis = round(microtime(true) * 1000);
  121. $request_id = "999999".$randomString.$currentTimeMillis;

  122. function sign($param) {//对数据进行签名操作
  123.     $e = "";
  124.     $r = array_keys($param);
  125.     sort($r); // 排序属性名数组

  126.     foreach ($r as $n => $key) {
  127.         if ($n != 0) {
  128.             $e .= "&";
  129.         }
  130.         
  131.         if (is_array($param[$key])) {
  132.             $t[$key] = implode(',', $param[$key]); // 如果属性值是数组,则转换为字符串
  133.         }
  134.         
  135.         $e .= $key . "=" . rawurlencode($param[$key]); // 使用 rawurlencode 进行 URL 编码
  136.     }

  137.     $e .= "Q0uVOpuUpXTOUwRn"; // 在签名字符串末尾添加固定字符串
  138.     return md5($e); // 对签名字符串进行 MD5 哈希
  139. }
  140. $param = [
  141.     "pid"=>'600001859',
  142.     "guid"=>$guid,
  143.     "appid"=>"ysp_pc",
  144.     "rand_str"=>nu(10),
  145. ];
  146. $singature=sign($param);
  147. $param["signature"] = $singature;

  148. //print_r($param); 查看请求数组
  149. $bstrURL = "https://player-api.yangshipin.cn/v1/player/auth";//请求网址
  150. $headers = [
  151.     "Content-Type: application/x-www-form-urlencoded;charset=UTF-8",
  152.     "Referer: https://www.yangshipin.cn/",
  153.     "Cookie: guid={$guid};  versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=123; updateProtocol=1; seqId=36;request-id={$request_id}",
  154.     "Yspappid: 519748109",
  155.     ];
  156. $ch = curl_init($bstrURL);
  157. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  158. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  159. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  160. curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
  161. curl_setopt($ch, CURLOPT_POST,1);
  162. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));
  163. $data = curl_exec($ch);
  164. curl_close($ch);
  165. $json_data = json_decode($data);
  166. $token = $json_data->data->token;
  167. //auth获取结束

  168. //开始获取get_info信息
  169. $params = [
  170.     "cnlid" => "{$cnlid}",
  171.     //"livepid" => "{$livepid}",
  172.     "stream" => "2",
  173.     "guid" => $guid,
  174.     "cKey" => $ckey,
  175.     "adjust" => 1,
  176.     "sphttps" => "1",
  177.     "platform" => "5910204",
  178.     "cmd" => "2",
  179.     "encryptVer" => "8.1",
  180.     "dtype" => "1",
  181.     "devid" => "devid",
  182.     "otype" => "ojson",
  183.     "appVer" => "V1.0.0",
  184.     "app_version" => "V1.0.0",
  185.     "rand_str" => nu(10),
  186.     "channel" => "ysp_tx",
  187.     "defn" => "fhd",
  188.    
  189. ];
  190. $sign1 = Kc($params);
  191. $params["signature"] = $sign1;

  192. $bstrURL1 = "https://player-api.yangshipin.cn/v1/player/get_live_info";
  193. $headers1 = [
  194.     "Content-Type: application/json;charset=UTF-8",
  195.     "Referer: https://www.yangshipin.cn/",
  196.     "Cookie: guid={$guid};  versionName=99.99.99; versionCode=999999; vplatform=109; platformVersion=Chrome; deviceModel=123; updateProtocol=1; seqId=36;request-id={$request_id}",
  197.     "Yspappid: 519748109",
  198.     "yspplayertoken: {$token}",
  199. ];
  200. $ch = curl_init($bstrURL1);
  201. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  202. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  203. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  204. curl_setopt($ch, CURLOPT_HTTPHEADER,$headers1);
  205. curl_setopt($ch, CURLOPT_POST,1);
  206. curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($params));
  207. $data = curl_exec($ch);
  208. // 关闭CURL会话
  209. curl_close($ch);
  210. $json = json_decode($data);
  211. $live = $json->data->playurl;
  212. $extended_param = $json->data->extended_param;
  213. $chanllCode = json_decode($json->data->chanll)->code;
  214. $decodeChanll = base64_decode($chanllCode);
  215. // 定义正则表达式来匹配des_key和des_iv的赋值语句
  216. $patternKey = '/var des_key = "(.*?)";/';
  217. $patternIv = '/var des_iv = "(.*?)";/';
  218. // 初始化变量用于存储提取的值
  219. $desKey = "";
  220. $desIv = "";
  221. // 使用正则表达式提取des_key的值
  222. if (preg_match($patternKey, $decodeChanll, $matchesKey)) {
  223.     $desKey = $matchesKey[1];
  224. }
  225. // 使用正则表达式提取des_iv的值
  226. if (preg_match($patternIv, $decodeChanll, $matchesIv)) {
  227.     $desIv = $matchesIv[1];
  228. }
  229. //定义待加密数组
  230. $jsonString = '{"mver":"1","subver":"1.2","host":"www.yangshipin.cn/#/tv/home?pid=","referer":"","canvas":"YSPANGLE(Intel,Intel(R)Iris(R)XeGraphics(0x000046A6)Direct3D11vs_5_0ps_5_0,D3D11)"}';
  231. $data = json_decode($jsonString, true);
  232. function encryptData($data,$desKey,$desIv) {
  233.     $plaintext = json_encode($data,JSON_UNESCAPED_SLASHES);
  234.     $key = base64_decode($desKey);
  235.     $iv = base64_decode($desIv);
  236.     $encrypted = openssl_encrypt($plaintext, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);
  237.     return strtoupper(bin2hex($encrypted));
  238. }
  239. //定义变量保存revoi值
  240. $encryptedHex = encryptData($data,$desKey,$desIv);//revoi值
  241. $burl = explode("{$n[$id]}.m3u8",$live)[0];
  242. $d = file_get_contents($live);
  243. $pattern = '/\.m3u8(.*)/';
  244. preg_match($pattern, $live, $matches);
  245. $str = preg_replace("/(.*?.ts)/", $burl."$1$matches[1]",$d);
  246. $filteredContent = preg_replace('/outlivecloud-cdn.ysp.cctv.cn/', 'hlslive-tx-cdn.ysp.cctv.cn',$str);
  247. header("Content-Type: application/vnd.apple.mpegurl");
  248. header("Content-Disposition: inline; filename=index.m3u8");
  249. echo $filteredContent;
  250. ?>
复制代码

有几点我不太明白:
1、不论提供的id最后两位是多少,最终返回的视频链接参数都是“超清”的,如:'cctv1' => [2022576803, 600001851], 当我把前面的id ”2022576803“改为”20225768xx",最后得到的响应都是id为“2022576803”的视频链接。
2、有一些频道需要开通vip才能观看,之前的代理可以无视vip,但现在无法越过vip验证,我已经在代码里把需要vip的频道打上注释了,希望有知道的小伙伴多多分享,指点一二!(已解决)
3、我昨晚测试了15分钟,没有断流,如果后续大伙发现断流,请多多交流,期待大家的想法碰撞!

3月15的直播代理帖子,欢迎大家分享想法!






评分

参与人数 5恩山币 +4 收起 理由
欧*** + 1 不错,支持下
hu1*** + 1 感谢无私奉献
r*** + 2 强大的恩山!(以下重复1万次)
momo1*** + 1 强大的恩山!(以下重复1万次)
hip*** -1 2333

查看全部评分

感谢持续分享!
回复

使用道具 举报

vip还是可以看的
回复

使用道具 举报

5分20秒左右断流的
回复

使用道具 举报

 楼主| | 显示全部楼层

有什么办法吗?
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
土鳖 发表于 2024-4-26 21:39
5分20秒左右断流的

嗯嗯,因为这个代理是访问某个链接,到时间了就会失效
回复

使用道具 举报

头像被屏蔽
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

来自手机 | 显示全部楼层
1499232490 发表于 2024-4-26 22:04
嗯嗯,因为这个代理是访问某个链接,到时间了就会失效

访问的啥链接,这还有时效性?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-8 21:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表