如何用PHP语言制作视频源代理
我们知道很多网页可以在线看直播。
但是要把直播源一直到DIYP这种电视壳子里面,是需要一个m3u8这种地址的。
而这个地址,如果每次都右键查看源文件,它可能是每刷新一次,变一个地址的。
那怎么样用一个固定的URL,来替代这种可变的URL呢?
这时候PHP就可以出场了。PHP是最适合做动态代理网站的了。
因为免费,好写,简单,而且可移植性强。
下面来一个简单的教程,如何编写一个最简单的PHP代理。
我们的目标站就是CCTV6的直播,直播源是M1905,网址http://www.m1905.com
打开网站,在页面中部可以看到,直播的框。
点击右键,查看源文件。(浏览器也可以按F12,抓包,看网络请求,找M3U8地址)
CTRL+F键,输入M3U8,查找,找到如下地方:
很明显这个video标签内的地址就是我们要的了。
video:'https://hlslive.1905.com/live/LIVEQYR8M567KGOXO/index.m3u8?tm=1617247528&sign=c13e2a7a4c21902ae3c0e9bf28cba755'
看字面意思tm即为time的缩写,sign就是签名的意思。不过我们也没必要知道他是干嘛的。抓过来就是了。
这时候需要用到正则了。写好的代码如下:
<?php
$data=file_get_contents(“https://www.1905.com”);
preg_match("/video:\'(.*?)\'/",$data,$matches);
$playurl=$matches[1];
header('Location: '.$playurl);
?>
就这么简单几行,最后一行还可以省略。
下面我们一行行来解释是什么意思。
<?php
这是PHP的标识符,声明该文件是PHP脚本。
$data=file_get_contents(“https://www.1905.com”);
$data代表一个变量,变量名字是data,变量的内容就是获取1905的整页。
file_get_contents是PHP的内置函数,获取文件,可以是本地,也可以是远程。
preg_match("/video:\'(.*?)\'/",$data,$matches);
正则表达式,把$data变量里面符合前面规则的内容匹配出来,放到matches变量。
如何学习正则表达式,建议自己百度一下,也很简单。http://c.biancheng.net/view/7569.html 我随便找到一篇文章。
如果匹配到,那$matches[0]就是匹配到的本身,$matches[1]就是匹配规则中()里面的内容。也就是我们要的,视频URL。
$playurl=$matches[1];
把匹配出来的视频URL,赋值给$playurl变量,
当然这一行也可以不写,写了是为了看的清楚。不写的话,下一行,就直接写$matches[1]了。
header('Location: '.$playurl);
直接跳转到匹配到的视频URL。
如果上面一行不写的话,这里就要写header('Location: '. $matches[1]);了
最后是?>PHP语言的结束符号,也可以不写,不影响执行。
最后还需要一个能运行PHP脚本的环境。
可以买VPS。
也可以自己在盒子上搭建WEB服务器。
把这个脚本文件命名为cctv6.php //名字可以随便改的。
放到服务器网站目录下,就可以通过http://你的域名/cctv6.php来观看央视电影频道了。