如何用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来观看央视电影频道了。

(0)

相关推荐