“央视频”是中央广播电视总台基于5G+4K/8K+AI等新技术,推出的总台综合性视听新媒体旗舰平台,也是是中国首个国家级5G新媒体平台。2019年11月20日,央视频正式上线。
以下并没有解决PHP代理等等所需的Vkey参数的算法问题,都是些通用方法,别抱太大期望。
由于有网络上非常稀有的 CCTV-13 的全高清等,这个还是值得关注一波的。
1、自动化
移动网页端:https://m.yangshipin.cn/video?type=1&pid=600001818,点击播放按钮后js根据一系列参数生成一个cKey,再使用cKey向API服务器获取playurl。
cKey的算法在这个js里 https://s.yangshipin.cn/txlive/js/txvlive.js,腾讯的,代码混淆过,本人不才,实在看不懂具体的算法。只有用笨办法,使用headless browser模拟打开网页和鼠标点击。
本人使用的headless browser为Splash https://github.com/scrapinghub/splash,安装在Docker中,通过HTTP API调用。获取到点击播放按钮后的网络请求,其中包括cKey,然后构建请求获得playurl,也可以继续模拟切换清晰度,直接获取playurl。
PHP的实现:
<?php $channels = array( 'cctv4k'=>'600002264', 'cctv1'=>'600001859', 'cctv2'=>'600001800', 'cctv3'=>'600001801', 'cctv4'=>'600001814', 'cctv5'=>'600001818', 'cctv5p'=>'600001817', 'cctv6'=>'600001802', 'cctv7'=>'600004092', 'cctv8'=>'600001803', 'cctv9'=>'600004078', 'cctv10'=>'600001805', 'cctv11'=>'600001806', 'cctv12'=>'600001807', 'cctv13'=>'600001811', 'cctv14'=>'600001809', 'cctv15'=>'600001815', 'cctv17'=>'600001810', 'zjws'=>'600002520', 'jsws'=>'600002521', 'szws'=>'600002481', 'gdws'=>'600002485', 'hljws'=>'600002498', 'dfws'=>'600002483', 'flws'=>'600002475' ); $pid = $channels[$_GET['pid']]; if(!$pid){ die('need pid'); } $lua_cmd =urlencode(" function main(splash) splash:go('https://m.yangshipin.cn/video?type=1&pid=$pid') splash:wait(0.5) splash:mouse_click(305, 305) splash:wait(0.1) return splash:har() end"); $source = curl_get_contents("http://splash_api_address/execute?lua_source=$lua_cmd"); preg_match('/https:\/\/liveinfo(.*?)"/', $source, $output); $api_url = str_replace('&defn=&', '&defn=fhd&', 'https://liveinfo'.$output[1]); $result = curl_get_contents($api_url); preg_match('/"playurl":"(.*?)\?from=player/', $result, $output); $play_url = $output[1]; //header("Content-Type: audio/mpegurl"); //header("Content-Disposition: attachment; filename=playlist.m3u"); echo "#EXTM3U\r\n#EXTINF:-1 tvg-name='".$_GET['pid']."', ".$_GET['pid']."\r\n".$play_url; function curl_get_contents($url) { $header = array( 'authority: liveinfo.yangshipin.cn', 'user-agent: Mozilla/5.0 (Windows NT 10.2; Win64; x64) AppleWebKit/888.36 (KHTML, like Gecko) Chrome/88', 'accept: */*', 'referer: https://m.yangshipin.cn/video?' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); return $data; } ?>
以上使用了浏览器引擎,Splash这个站长也不会用,可以肯定的是它效率低,不过够小范围的使用,思路不错。
某论坛权限帖,转过来一起学习下。
2、人肉抓
【使用工具】Google浏览器
【视频WAP端网页地址】
【CCTV】 超高清4K:https://m.yangshipin.cn/video?type=1&vid=2000266303&pid=600002264 CCTV1:https://m.yangshipin.cn/video?type=1&vid=2000210103&pid=600001859 CCTV2:https://m.yangshipin.cn/video?type=1&vid=2000203603&pid=600001800 CCTV3:https://m.yangshipin.cn/video?type=1&vid=2000203803&pid=600001801 CCTV4:https://m.yangshipin.cn/video?type=1&vid=2000204803&pid=600001814 CCTV5:https://m.yangshipin.cn/video?type=1&vid=2000205103&pid=600001818 CCTV5+:https://m.yangshipin.cn/video?type=1&vid=2000204503&pid=600001817 CCTV6:https://m.yangshipin.cn/video?type=1&vid=2000203303&pid=600001802 CCTV7:https://m.yangshipin.cn/video?type=1&vid=2000510003&pid=600004092 CCTV8:https://m.yangshipin.cn/video?type=1&vid=2000203903&pid=600001803 CCTV9:https://m.yangshipin.cn/video?type=1&vid=2000499403&pid=600004078 CCTV10:https://m.yangshipin.cn/video?type=1&vid=2000203503&pid=600001805 CCTV11:https://m.yangshipin.cn/video?type=1&vid=2000204103&pid=600001806 CCTV12:https://m.yangshipin.cn/video?type=1&vid=2000202603&pid=600001807 CCTV13:https://m.yangshipin.cn/video?type=1&vid=2000204603&pid=600001811 CCTV14:https://m.yangshipin.cn/video?type=1&vid=2000204403&pid=600001809 CCTV15:https://m.yangshipin.cn/video?type=1&vid=2000205003&pid=600001815 CCTV16:无 CCTV17:https://m.yangshipin.cn/video?type=1&vid=2000204203&pid=600001810 【卫视】 浙江卫视:https://m.yangshipin.cn/video?type=1&vid=2000295503&pid=600002520 江苏卫视:https://m.yangshipin.cn/video?type=1&vid=2000295603&pid=600002521 深圳卫视:https://m.yangshipin.cn/video?type=1&vid=2000292203&pid=600002481 广东卫视:https://m.yangshipin.cn/video?type=1&vid=2000292703&pid=600002485 黑龙江卫视:https://m.yangshipin.cn/video?type=1&vid=2000293903&pid=600002498 东方卫视:https://m.yangshipin.cn/video?type=1&vid=2000292403&pid=600002483 湖南卫视:https://m.yangshipin.cn/video?type=1&vid=2000296203&pid=600002475
【抓包方法】
1. 首先使用浏览器打开网址(首次打开或者刷新的时候是不自动播放的),然后按F12(开发者工具)
3. 这个GET请求就是获取的直播源地址,进入“ Preview ”查看GET请求的返回内容
看到这个GET请求很熟悉,和腾讯讯视频貌似是一样的,腾讯常用的vkey参数也出现在这,进入“ https://s.yangshipin.cn/txlive/js/txvlive.js ”你是不是发现了什么呢,这其实是腾讯团队开发的,解析思路和腾讯视频类似
可以看到已经获取到了直播源地址为:
https://53e876d99f8c4520200d60f211684223.v.smtcdns.net/tlivecloud-cdn.ysp.cctv.cn/3A435B18CDE674D4347F344AD294692C244825ECFEC67CEB748F4FDE48F980FCC43755EE78F471DF0E8F3454A51045095EF9620606ADFE00DB62E37085C4F7237CA6D561C8C62E2A7947787AD2FFEABB4B896D4B1497391C9BBAE38D1D4420DF/2000210103.m3u8?from=player&svrtime=1574678195&pid=600001859&cdn=5501
其实我们用不到这么长的地址,只需要.m3u8之前的内容就ok
截取后:
https://53e876d99f8c4520200d60f211684223.v.smtcdns.net/tlivecloud-cdn.ysp.cctv.cn/3A435B18CDE674D4347F344AD294692C244825ECFEC67CEB748F4FDE48F980FCC43755EE78F471DF0E8F3454A51045095EF9620606ADFE00DB62E37085C4F7237CA6D561C8C62E2A7947787AD2FFEABB4B896D4B1497391C9BBAE38D1D4420DF/2000210103.m3u8
其实解析域名也可以换下:
https://live-cnc-cdn.ysp.cctv.cn/3A435B18CDE674D4347F344AD294692C244825ECFEC67CEB748F4FDE48F980FCC43755EE78F471DF0E8F3454A51045095EF9620606ADFE00DB62E37085C4F7237CA6D561C8C62E2A7947787AD2FFEABB4B896D4B1497391C9BBAE38D1D4420DF/2000210103.m3u8
中间的内容“3A435B18CDE674D4347F344AD294692C244825ECFEC67CEB748F4FDE48F980FCC43755EE78F471DF0E8F3454A51045095EF9620606ADFE00DB62E37085C4F7237CA6D561C8C62E2A7947787AD2FFEABB4B896D4B1497391C9BBAE38D1D4420DF”就是vkey的值,这个vkey一般一天时间就失效了,需要重新获取vkey,如果vkey失效的话只需要重新获取vkey值替换就可以了
当然使用视频嗅探工具嗅探地址也是可以的,比如站长常用的 IDM
卫视没法放了,只有CCTV的还能用移动版网页
Chrome用扩展"猫抓",能方便的获取m3u8地址
大佬,能不能做一个自动获取央视频的php,央视屏每天更新一次vkey很烦
CCTV13的高清源有没有?
老大,你可以研究下香港TVB翡翠台的官方直播吗?
https://www.mytvsuper.com/tc/live/81
我翻后可以登陆网站并观看。因为官方的,画质很不错。网上TVB的直播死的7788了,真心想请你研究下,我可以提供vps和香港机场,你可以email我
没有播放按钮了怎么办啊
哦,开始强制推广他们家的 APP 了,目测不让网页看了,没办法
有没有上海本地台啊,特别是五星体育。多处都失效了!
抓出来不是4K的,标清。什么原因?
splash_api_address是不是只需要改这个参数?
大神 按你这个教程搞了php代理 也装了 docker版splash php里的api地址改为了实际的 但是不能访问啊 求助
发代理出来
选不了清晰度阿 求教
这个代理看不懂啊,怎么用,为什么我只是显示 need pid
能加一个节目收藏就更好了。毕竟那没多节目也只可能看为数不多的几个自己喜欢的。
已加入收藏夹,时不时的来看看有没有更新博文!
看一下这里
https://www.right.com.cn/forum/thread-1490507-1-1.html
打不开。提示:“服务器忙到昏倒了”
大佬:黑鸟播放器右下角的广告非常影响观看,广告位置能不能稍微小一点。
然而,这个广告不是我加的
大神,黑鸟播放器,片库系统虎牙直播怎么没有播放列表了
这个记得已经说明过,由于11月12号左右,虎牙官方更新了一波,导致之前的代码无法获取分类信息,下个版本会更新修复 ..
最近黑鸟播放器右下角添加了广告了