影视站站长都会遇到:m3u8 地址本身用的是源站 CDN 的短时效签名,隔几小时就 401。这是 m3u8 播放最普遍的“失效”根源。下面拆解原因和应对。
为什么 m3u8 会"失效"
- 时效签名:很多源给的是带时效参数的地址(
?token=xxx&expires=),过了时间就拒绝播放,采集时拿到的地址本身就是临时的 - Referer/UA 校验:播放器不带正确的 Referer 或 User-Agent,受保护的分片直接 403
- 防盗链切分片:TS 分片地址做过加密,播放器不支持 key 解密
应对方案
# 播放器层面:允许配置 Referer/UA 头
player.setConfig({ referer: "https://源站域名/", ua: "Mozilla/5.0..." });
# 服务器层面:对 m3u8 做实时代理转发,顺便带自定义头
location /proxy/ { proxy_pass $source_url; proxy_set_header Referer $source_site; }
最省心的还是换一个更新及时、地址稳定的采集源——源决定播放地址的寿命,播放器只是还原它。
我是直接把聚合搜索+多源兜底做到了一处,地址挂了自动换源,ciligo.cc 就是这个思路,播放体验比单源稳定不少。
m3u8 的坑交流帖,欢迎补充。