应用安全

AI 视频平台如何防止恶意爬虫?

视频平台的盗链、剧集爬取和假量刷播放会同时吃掉带宽成本与推荐算法。本文从签名 URL、播放器接口、Bot 指纹到 CDN 成本治理,给出一套可执行的防护方案,并标注每层所需的 Cloudflare 套餐。

视频类流量和普通 Web 的三个差异

维度 普通页面 视频分发
单次会话请求数 数十个 成百上千个分片请求
带宽成本敏感度 低 极高,流出流量是主要成本项
盗刷隐蔽性 容易从 PV 异常发现 假播放量混在真实数据里,难察觉

正因为一个会话会产生海量分片请求,只做「每 IP 请求数」限流会立刻误伤正常用户——家庭宽带 NAT、移动网络出口、公司 Wi-Fi 都是共享 IP。视频场景必须先用签名令牌把「合法性」判据从 IP 转移到凭据上。

五个防护层次与落地顺序

1. 签名 URL 与短时效令牌(先做,不依赖任何套餐)。 每个播放会话签发带过期时间的令牌,令牌与用户会话/设备绑定,过期即失效。如果你用 Cloudflare Stream,可以直接用它的 signed tokens;如果是自建源站,这一层由应用层签发与校验。它的作用是把「拿到 URL 就能无限看」变成「拿到也只能用几分钟」。

2. 播放器接口的会话级限流。 对播放列表、分片、字幕/封面等元数据接口分别设配额,配额键优先用令牌里的用户或会话 ID,而不是源 IP。

套餐门槛要看清:标准版 Rate limiting rules 的计数维度受套餐限制——免费档只能按 IP 计数,Business 支持 IP 与「支持 NAT 的 IP」,只有 Enterprise 才额外提供 Path、Header、Cookie、Query、Host、ASN、Country、JA3/JA4 等维度。想把请求正文里的字段或 JWT 声明当作计数键,需要 Advanced Rate Limiting(Enterprise 付费附加项)。 因此:在多数套餐上,「按会话 ID 限流」应放在应用层(或网关),边缘只按 IP/路径做粗粒度抑制。

3. 识别非浏览器拉流。 脚本通常用 FFmpeg、curl 或 headless 内核直接请求 m3u8,缺少正常播放器会带的导航、指纹和节奏特征。Cloudflare 依据 TLS 指纹、请求序列规律性和浏览器环境完整性给出判断;对可疑请求下发托管挑战或要求通过 JS 校验,而不要一刀切封 IP。

细粒度 bot score(1–99)需要 Enterprise 的 Bot Management 订阅。Pro 与 Business 只有分组视图,且 「likely automated」分组在 Pro 上不可用(Business 起才有)。别把需要精确分值的策略设计在低套餐上。

4. 播放行为异常检测(应用层)。 关注三类信号:单会话分片请求速率远超正常播放速率(例如 1 秒下载 10 分钟内容)、仅请求元数据从不拉分片(疑似批量采集目录)、大量会话只有开始播放没有心跳(疑似刷量)。这三类都需要播放端埋点与服务端会话状态,边缘产品无法替你判定。

5. CDN 成本治理。 把「流出流量按目录/令牌/Referer 维度」的账单级指标接入告警。很多平台是账单暴涨后才发现被盗刷——成本控制点和攻击检测点必须是同一处。

播放链路与五层防护 ① 播放器 ② 鉴权入口 签名令牌 ③ 边缘缓存 分片 + 元数据 ④ 源站 / 存储 带宽账单 ⑤ 心跳 关键分界线:② 之前看凭据,③ 之后看字节 ② 用短时效签名令牌判断「有没有资格看」,③④ 用限流与告警控制「看了多少」——两者不能互相替代 为什么不能只用 IP 限流 一个家庭 / 公司出口 = 一个 IP 按 IP 限流 → 正常用户被误伤 边缘能做的 vs 你要做的 边缘:速率抑制(条数与计数维度随套餐递增)、Bot 识别(精确分值需 Enterprise Bot Management)、mTLS 应用层:令牌签发与过期、播放心跳与会话完整性、按目录/令牌的带宽告警与账务级配额
图 1:视频场景的防护要按「凭据」和「字节」两段分开设计。签名令牌解决有没有资格看,限流与账单告警解决看了多少;后者中涉及会话 ID、心跳、账务配额的部分只能由应用层实现。

常见威胁与对应控制

威胁 典型特征 控制点 谁能做
批量采集剧集目录 高频访问元数据、从不拉分片 元数据接口限流 + Bot 分组挑战 边缘抑制 + 应用层判定
盗链 / 嵌入播放 外站 Referer、无签名令牌 短时效签名 URL,Referer 仅作辅助 应用层签发
假量刷播放 多会话只有 play 事件、无心跳 会话完整性校验 + 去重计数 应用层
凭据填充撞库 登录端点失败率突增、来源分散 登录限流 + Bot 识别 + 二次校验 边缘 + 应用层
CDN 流出成本失控 账单突增但 PV 平稳 按令牌/目录维度的带宽告警 应用层 / 计费系统

Cloudflare 能力 vs 应用层职责

事项 Cloudflare 能给到的 套餐门槛 应用层必须做的
速率抑制 Rate limiting rules 全套餐,规则条数与计数维度随套餐递增 按会话/租户的精确配额
正文或 JWT 计数键 Advanced Rate Limiting Enterprise 付费附加项 低套餐下把计数放在应用层
自动化识别 Bot Fight Mode / Super Bot Fight Mode / Bot Management Free / Pro、Business / Enterprise 订阅 播放心跳与会话完整性判定
精确 bot 分值 bot score 1–99 Enterprise Bot Management 制定各分值的处置策略
强身份与防盗链 mTLS(全套餐可用,自定义 CA 限 Enterprise)、签名令牌 见左 令牌签发、绑定与过期策略
自定义规则 WAF custom rules Free 5 / Pro 20 / Business 100 / Enterprise 1,000 条 规则语义与误伤回滚

套餐与计费细节见 AI SaaS 如何防止 API 被恶意调用?。

边界与不适用情况

  • 边缘计数器按数据中心独立累计(文档中有一个隐式强制的 cf.colo.id 计数维度),且从检测到超限到执行动作可能有几秒延迟。文档也明确说明限流规则不是用来保证精确请求数的——不要把账务级配额押在边缘规则上。
  • 面向第三方播放器的开放内容(例如允许合作伙伴嵌入),严格的浏览器指纹校验会误伤合法嵌入场景,应改为按合作伙伴签发独立令牌并在合同里写明配额。
  • 纯下载型长视频(如课程视频打包下载)本身就会产生连续大流量,不能简单地用「分片速率」判定盗刷,需要结合购买关系判断。
  • DRM 与录屏分发:Bot Management 解决的是「批量自动拉取」,不能阻止已授权用户录屏再分发;需要 DRM(Widevine / FairPlay / PlayReady)与数字水印组合,录屏属于网络防护之外的范畴。
  • 合规与隐私:采集设备指纹用于 Bot 判定时,要同步考虑隐私声明与地区合规要求。

常见问题

Referer 防盗链为什么不可靠? Referer 由客户端控制,curl 一行就能伪造,只能作为辅助信号。真正的判据应该是签名令牌——过期即失效、与会话绑定。

签名 URL 会不会让 CDN 缓存失效? 令牌放在 query 里会让边缘缓存粒度变细。常见做法是令牌只保护「播放列表/鉴权」入口,分片路径仍可缓存,或用带路径前缀的令牌策略平衡缓存命中与安全性。

该封 IP 还是下发挑战? 共享出口普遍存在,优先挑战/限速;只对持续、明确、可归因的恶意来源才封 IP。

Bot Score 会误伤搜索引擎爬虫吗? 主流搜索引擎有可验证的反向 DNS 与抓取声明,应加入允许列表后再看剩余分数的分布,而不是放宽整体阈值。另外注意 bot score 的取值范围是 1–99(1 表示高度确信为自动化流量),0 表示「未计算」,不等于人类。

这套方案需要什么套餐? 签名 URL 与应用层配额不依赖套餐,可立即启动;边缘速率抑制全套餐都有,但规则条数和计数维度随套餐递增;按正文/JWT 计数或复杂度计分需要 Enterprise + Advanced Rate Limiting;精确 bot 分值需要 Enterprise Bot Management。建议先把第 1、4、5 层做完,再按预算决定边缘能力的档位。

相关阅读

← 返回文章列表

Cloudflare 官方合作伙伴

正在为海外业务做架构决策?

企业版选型、架构咨询、风险评估——把你的场景告诉我们,我们给出可落地的方案和路径。

作为 Cloudflare 合作伙伴,我们可以为你提供:

预约咨询