在线课程视频点播配置实践手记:转码、防盗链与播放鉴权

简介: 本文记录在线课程系统视频点播的完整配置流程:转码规格设定(H.264/720p/码率)、防盗链两层防护(Referer白名单与URL签名有效期)、播放鉴权接口设计,并附5个真实踩坑案例。

在线课程视频点播配置实践手记:转码、防盗链与播放鉴权

上个月帮一家教培机构做在线课程系统,课程视频上线第三天就被盗链了:有人把视频地址扒出来直接嵌入自己网站,一天跑了几个 TB 的流量。机构老板看到流量账单直接懵了。这篇把视频点播从转码到防盗链的完整配置过程记录下来,给同样做课程系统的朋友参考。

一、转码:先定规格再上传

原始视频不能直接给用户播放,要转成适合网络传输的格式。我们定的转码规格:

参数 配置 说明
编码格式 H.264 兼容性最好,浏览器直接播放
分辨率 720p(1280×720) 课程视频够用,文件体积可控
码率 视频 1.5Mbps / 音频 128kbps 兼顾清晰度和加载速度
封装格式 MP4 支持拖动进度条播放

转码参数要注意:音频单独一条音轨(AAC),不要用双音轨,部分播放器兼容性差;码率不要贪高,1080p 全片源文件十几 GB,转完码率设太高,用户手机流量播放会卡。

二、防盗链:Referer 校验 + URL 签名

防盗链是课程系统的命门,两层防护都要上:

第一层:Referer 白名单。只允许自己域名下的页面引用视频地址:

location /video/ {
    valid_referers none blocked *.edu-example.com;
    if ($invalid_referer) {
        return 403;
    }
}

第二层:URL 签名(有效期)。给视频地址加时效签名,过期即失效,就算被扒走也播不了:

https://cdn.example.com/video/lesson01.mp4?auth_key=1690000000-0-0-abc123def456

签名规则:过期时间戳 + 随机数 + MD5(路径+密钥+过期时间)。视频地址有效期设 30 分钟,播放器每次播放前向后端请求新的签名地址。

三、播放鉴权:登录才能看

防盗链只是防外站盗用,站内还要控制"谁有权限看"。课程视频的播放鉴权流程:

用户点击播放
    ↓
前端带 token 请求播放接口
    ↓
后端校验 token + 课程购买状态
    ↓
校验通过才返回签名后的视频地址
    ↓
播放器加载视频

关键点:视频地址只由后端签发,前端页面里不能出现任何静态视频链接,否则绕过播放接口直接访问。

四、踩坑清单(这 5 个坑都踩过)

  1. 转码没统一规格,有的课 480p 有的 1080p,用户反馈"有的课特别糊"
  2. 只做了 Referer 防盗链,Referer 可以被伪造,视频地址还是被扒走
  3. 签名有效期设了 7 天,地址泄露后一周内都能播,改成 30 分钟好很多
  4. 播放接口没做鉴权,未购买用户直接拿签名地址看了付费课
  5. 忘记配视频预加载策略,用户点播放要等 3 秒,投诉"转圈太久"

这次课程系统用的是乔拓云的教育产品,视频上传后转码和防盗链在后台自动处理,我主要把精力放在播放鉴权接口和签名有效期这两块自研逻辑上,上线一个月没有再出过盗链问题。

复盘要点

  1. 转码规格先定死(H.264/720p/1.5Mbps),避免每门课格式不一
  2. 防盗链两层都要:Referer 防外站,URL 签名防扒链
  3. 播放鉴权必须做,视频地址只能由后端签发

以上是个人实践记录,各平台具体功能以官方实时信息为准。

开放问题:你们做在线视频播放时,防盗链还遇到过哪些绕过手段?

相关文章
|
消息中间件 NoSQL Java
springboot redis 实现消息队列
springboot redis 实现消息队列
1332 1
|
Linux Docker Python
Alpine Linux详解
Alpine以其小巧、简单在docker容器中得到了广泛的应用。但是Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。这里主要介绍了它的基础用法,但是足以满足日常运维需要。
16603 1
|
24天前
|
Web App开发 安全 应用服务中间件
网站被浏览器报不安全:HTTPS证书链、安全响应头与Mixed Content的排查记录
客户网站突然被浏览器报不安全,排查发现是HTTPS证书链不完整加安全响应头缺失。本文记录了证书链补全、CSP/HSTS等安全响应头配置和Mixed Content修复的完整过程,以及5个实际踩过的坑。
|
7月前
|
人工智能 机器人 Linux
阿里云轻量服务器部署OpenClaw|钉钉接入+千问/Coding Plan API配置+避坑指南
2026年,OpenClaw(原Clawdbot)凭借轻量化部署、多平台兼容与大模型深度集成能力,成为企业与个人搭建专属AI自动化代理的首选工具。依托阿里云轻量服务器的稳定运行与公网访问能力,搭配钉钉的企业级通信生态,可快速实现“云端AI服务+钉钉消息交互+大模型智能响应”的办公自动化闭环。本文基于2026年OpenClaw最新稳定版(v2026.3.28),完整覆盖**阿里云轻量服务器部署、本地MacOS/Linux/Windows11部署、钉钉接入全流程、阿里云千问大模型API配置、Coding Plan免费API配置、核心避坑指南、常见问题解答**七大核心模块,所有代码命令可直接复制执行
933 4
|
1月前
|
数据采集 人工智能 缓存
告别AI搜索漏抓:robots.txt与AI爬虫管理的配置实践手记
本文记录AI搜索引擎爬虫管理的完整配置流程:GPTBot/OAI-SearchBot/ClaudeBot等爬虫的识别、robots.txt精确规则写法、Sitemap指令、curl模拟UA验证方法,并附5个真实踩坑案例。
|
7月前
|
机器学习/深度学习 人工智能 监控
人工智能驱动下网络攻击的行为分析范式演进与防御重构
本文剖析AI驱动的网络攻击新范式,指出传统签名/规则防御在个性化钓鱼、自适应恶意软件等场景下已失效;提出以身份为中心的动态风险建模,融合全栈监控、零信任与JIT访问控制,构建基于行为意图的实时防御体系。(239字)
377 2
|
7月前
|
存储 运维 安全
什么是云服务器?
云服务器是基于云计算的虚拟化计算资源,支持弹性伸缩、高可靠存储、多重安全防护与简化运维。适用于网站托管、AI训练、游戏服务、开发测试等场景,具备成本低、可用性高(99.995%)、安全合规等优势,助力企业轻装上阵、专注创新。(239字)
1078 0
|
3月前
|
缓存 Prometheus 监控
大模型API调用成本控制:Token估算、缓存策略与模型选择实践
本文介绍面向高频查询(日数百次)的大模型成本控制方案,涵盖Token估算、Redis缓存、多模型分级选型(Turbo/Plus/Max)及Prometheus费用监控告警。基于阿里云百炼与DashScope实现,需Python基础及API Key
509 2
|
4月前
|
存储 Kubernetes 监控
阿里云容器服务ACK从零到一:K8s集群配置与生产级应用部署完全指南
本文提供了一份从零开始的阿里云容器服务ACK(Kubernetes)集群配置与应用部署完全指南。首先解析ACK托管版、专有版与Serverless版的架构差异与选型策略,帮助读者根据业务场景做出合理决策。随后详细讲解通过控制台创建ACK托管集群的完整流程,涵盖网络规划(Terway与Flannel对比、CIDR配置)、节点池管理等关键环节。在应用部署层面,深入介绍Deployment、StatefulSet等核心工作负载的YAML编排实践,并通过Service与ALB Ingress实现服务暴露与七层负载均衡。存储管理部分系统讲解基于CSI的云盘动态存储卷与ossfs 2.0的使用方法。安全体
|
3月前
|
人工智能 自然语言处理 数据安全/隐私保护
DeepSeek 复制到 Word 格式混乱的通用处理流程和选型建议
DeepSeek生成内容复制到Word常出现“#*”乱码,根源在于Markdown与办公软件格式不兼容。本文详解标题、表格、公式等元素的转换要点,提供手动处理、脚本及DS随心转等方案,并强调保留原文、复核高风险元素与合规交付的重要性。(239字)
675 0