直链复制走就 403?聊聊防盗链、Referer 与那道"门禁"
有时你明明拿到了视频直链,用浏览器能看,一用下载器或贴到别处就
403 Forbidden。这不是地址错了,而是服务器装了防盗链——一道看"你从哪来"的门禁。本文讲清 Referer 防盗链是什么、为什么解析器有时要"带对门票",以及它和更高级的 Token 防盗链差在哪。
目录
一、防盗链是什么:检查"你从哪来"
很多视频/图片资源,服务器会校验请求头里的 Referer(表示"上一个页面是谁")。如果来源不在白名单,就拒绝返回——这就是防盗链。
请求带 Referer: https://viddown.cn/ ✅ 白名单 → 放行
请求带 Referer: https://evil.com/ ❌ 不在名单 → 403
请求不带 Referer(下载器直连) ❌ 常被拒
二、Referer 怎么工作
Referer 是 HTTP 头,浏览器访问资源时自动带上"来源页"。服务端一段简单判断:
allowed = {'viddown.cn', 'www.viddown.cn'}
ref = request.headers.get('Referer', '')
if not any(host in ref for host in allowed):
return 403
三、为什么下载器要"带 Referer"
解析器拿到的直链,往往只在特定 Referer 下才放行。所以下载器发请求时,要手动补上:
Headers: { "Referer": "https://原站域名/" }
这解释了"浏览器能看、复制走就 403":浏览器自动带了正确 Referer,下载器直连没有,于是被门禁拦下。关于"为什么有些资源只在特定来源能取",也和 视频流原理 里 CDN 边缘校验的思路一脉相承。
四、进阶:Token 防盗链与 CORS
- Token 防盗链:URL 里带时效签名(如
?token=xxx&exp=1700000000),服务端校验,过期即废。这比 Referer 强得多——Referer 可伪造,Token 是服务端算的,难绕过; - CORS:浏览器跨域还会看
Access-Control-Allow-Origin,不过对服务端到服务端的下载影响不大。
Token 防盗链常和 CDN 就近接入 配合:边缘节点直接校验,不回源。
五、边界
Referer 可伪造、Token 难伪造——这条线划定了"能碰什么":前者属于配置常识,后者是授权校验。批量绕过 Token 防盗链去抓取受保护资源,和 解析的网络边界 里讲的"取你本就能看的内容"原则一致,越界就有风险。
六、小结
直链 403 多半是防盗链在拦:先确认要不要带 Referer,再判断是不是更硬的 Token 签名。理解这道"门禁",能少踩一大半"明明有地址却下不动"的坑。