一、安全原理
为了不让攻击者伪造你的服务器生成推流和播放 URL,你可以通过在直播管理控制台配置防盗链加密 KEY(请勿轻易泄露,以防被攻击者获取),使得攻击者无法轻易伪造出有效的推流和播放 URL:
二、步骤1:鉴权密钥
首先,你需要在页面的控制台配置一个加密密钥,这个加密密钥用于在你的服务器上生成防盗链签名,由于腾讯云跟你持有同样的密钥,所以你生成的防盗链签名,腾讯云是可以进行解密确认的。
加密密钥分为推流防盗链 Key 和播放防盗链 Key,前者用于生成推流防盗链 URL,后者用于生成播放防盗 URL。进入 云直播控制台 > 域名管理中单击对应的域名或管理,选择推流配置即可以自助配置推流防盗链 KEY,如下:
关于播放防盗链 Key 的相关信息,请参见 如何开启播放防盗链?
三、步骤2 :生成 txTime
签名中明文部分为 txTime(时间单位:秒),含义是该链接的有效期,例如当前的时间是 2025-08-29 18:03:08,而且期望新生成的 URL 是在3小时后即作废,那么 txTime 就可以设置为2025-08-29 21:03:08。
不过这么长一串时间字符串放在 URL 里显然不太合适,实际使用中我们是把2025-08-29 18:03:08转换成 UNIX 时间戳,也就是1694669601(可通过不同编程语言直接调用时间函数进行转换处理),然后转换成十六进制以进一步压缩字符长度,也就是 txTime = 1694669601(十进制) = 65029b21(十六进制),当然,使用十进制也是支持的。
四、步骤3:生成 txSecret
txSecret 的生成方法是 = MD5(KEY + StreamName + txTime),这里的 KEY 就是你在第一步中配置的加密 KEY,StreamName(也叫流 ID,推荐用随机数字或者用户 ID)在本例中为 test,txTime 为刚才计算的 65029b21,MD5 即标准的 MD5 单向不可逆哈希算法(目前还新增了 SHA256 加密算法)。
例如:
KEY 为 e12c46f2612d5106e2034781ab261ca3则 txSecret = MD5(e12c46f2612d5106e2034781ab261ca3test5C271099) = f85a2ab363fe4deaffef9754d79da6fe
五、步骤4:合成防盗链地址
符合腾讯云标准的推流 URL,它由下面四个部分组成:
现在我们有推流(或播放)可以用来告知腾讯云该 URL 过期时间的 txTime,只有腾讯云才能解密并且验证的 txSecret,StreamName 以及推流域名(假设为 livepush.tcloud.com),那么我们就可以合作一条标准的 URL。在这篇档的例子中,推流 URL 为:
rtmp://livepush.tcloud.com/live/test?txSecret=f85a2ab363fe4deaffef9754d79da6fe&txTime=5C271099
六、推流示例代码
云直播控制台 > 域名管理,选中事先配置的推流域名,管理 > 推流配置 页面下半部分有推流地址示例代码(PHP 、Java 、Go 三个版本)演示如何生成防盗链地址。详情可参见 推流配置。