中国教育网络电视台CETV的几个频道虽然没什么好看,但就是想收藏下,满足感?!..
官方地址:http://www.centv.cn/
抓取真实的直播源地址方法并无特别,直接工具嗅探,或者浏览器的“开发者工具”就足够解决
CETV1,http://livehd.centv.cn/live/cetv1.m3u8 CETV2,http://livehd.centv.cn/live/cetv2.m3u8 CETV3,http://livehd.centv.cn/live/cetv3.m3u8 CETV4,http://livehd.centv.cn/live/cetv4.m3u8
问题根源
以上地址使用 Potplayer 和 VLC 等播放器无法播放,无法播放!!
地址失效?不对的,龙共大佬的超级看可正常播放!!
问题的根源在于该源带有文件头保护,需要加入文件头header!这个源只要加入Referer参数即可..
简单说下此处Referer的作用:
HTTP来源地址(referer,或 HTTP referer)是HTTP表头的一个字段,用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着HTTP来源地址,目前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。
1.防盗链。
比如黑鸟博客的文章里有一个https://www.sina.com.cn/链接,那么点击这个超链接,它的header信息里就包含有有类似:
Referer = https://guihet点com/
那么可以利用这个来防止盗链了,比如此处CETV只允许自己的网站访问它自己的直播服务器,那它的域名是www.centv.cn,那么直播服务器每次取到Referer来判断一下是不是它自己的域名www.centv.cn,如果是就继续访问,不是就拦截。
这就达到防盗链的效果了..
将这个http请求发给服务器后,如果服务器要求必须是某个地址或者某几个地址才能访问,而你发送的referer不符合他的要求,就会拦截或者跳转到他要求的地址,或者返回一个异常信息等,比如此处直接返回403,异常播放器无法取到有效数据就无法播放了..
2.防止恶意请求
举例静态的请求是*.html后缀的,动态的请求则是*.shtml,那么就可以这样使用,所有的*.shtml请求里必须有Referer,且为黑鸟博客自己的网站。
解决方案
讲了这么多,解决方案是在向它的服务器请求数据的时候带上
Referer: http://www.centv.cn/ 或者 Referer:http://livehd.centv.cn/ 或者 http://livehd.centv.cn/live/cetv1.m3u8 等
以下是加了Header后浏览器也可以正确获取m3u8文件
以下是直接使用播放器自定义了Header后也可以正常播放了
其他
以上问题来源于某站,由 disth
大佬提供方法,由黑鸟博客进行了完善和整理..