防盗链

更新时间: 2024/03/22 14:32:13

功能简介

直播防盗链是指通过在推拉流地址中添加鉴权字符串,来保证视频资源安全的一种方式。开通直播防盗链功能后,推拉流地址中会包含一段鉴权字符串,只有合法生成的鉴权串才能进行正常的推流和拉流;另外,推拉流地址具有时效性,只有在有效期内才能正常地推拉流。

如因客户未开启防盗链而导致的盗链问题,网易云信概不负责。

功能原理

直播防盗链分为推流防盗链和拉流防盗链,都是利用URL鉴权来实现的,该功能是通过云信CDN加速节点与用户资源站点配合实现:

  • 开通防盗链功能后,用户服务器向视频云服务器请求推拉流地址URL(已添加鉴权串)
  • 用户资源站点提供给终端用户加密URL(资源地址加权限验证信息);
  • 终端用户使用加密后的URL向云信加速节点发起请求;
  • 加速节点对加密URL中的权限信息和时效信息进行验证,对合法且在有效期内的请求正常响应,对非法或过期的请求拒绝响应

具体步骤

主要步骤如下:

第一步:开通功能

用户可联系网易云信确认开通推流防盗链或拉流防盗链功能。

第二步:生成推拉流地址

开通推拉流防盗链后,用户通过管理控制台或者服务端API获取到的推拉流地址默认会带着鉴权字符串,即获取到的就是完整的可使用的推拉流地址,防盗链的有效期默认120分钟,过期后推拉流地址将会失效。

鉴权方法

防盗链URL构成

举例说明,用户通过管理控制台或服务端API获取到推拉流地址如下:

  • 推流地址:rtmp://pushDomain/live/cidxxxxxxxxxx?wsSecret=xxxx&wsTime=yyyy
  • 拉流地址(HTTP):http://httpPullDomain/live/cidxxxxxxxxxx.flv?netease=httpPullDomain&playSecret=xxxx&playTime=yyyy
  • 拉流地址(HLS):http://hlsPullDomain/live/cidxxxxxxxxxx/playlist.m3u8?playSecret=xxxx&playTime=yyyy
  • 拉流地址(RTMP):rtmp://rtmpPullDomain/live/cidxxxxxxxxxx?playSecret=xxxx&playTime=yyyy

pushDomain、httpPullDomain、hlsPullDomain、rtmpPullDomain分别代表您的推流域名、http拉流域名、hls拉流域名和rtmp拉流域名,live是固定挂载点不变,cidxxxxxxxxxx是直播频道ID

推流地址中,wsTime是生成校验字符串时的UNIX时间戳(单位秒),wsSecret是根据一定规则生成的加密字符串,见下文

拉流地址中,playTime是生成校验字符串时的UNIX时间戳(单位秒),playSecret是根据一定规则生成的加密字符串,见下文

鉴权字符串生成

推流防盗链:
wsSecret = md5(pushSecretKey + "/live/" + cid + currentTime)
wsTime = currentTime

拉流防盗链:
playSecret = md5(currentTime + url + pullSecretKey)
playTime = currentTime
其中url"?"之前的字符串,而且要去掉协议,如拉流地址:"http://flvtest2016.live.126.net/live/123231asdasdasdasdasd.flv?xxx=yyy",则url"flvtest2016.live.126.net/live/123231asdasdasdasdasd.flv"

上述描述中,pushSecretKey是用于计算推流防盗链的加密Key,pullSecretKey是用于计算拉流防盗链的加密Key,二者在用户开通推拉流防盗链功能后会由云信自动生成,如您没有自定义加密Key的需求,则无需对其改变。

鉴权方法

云信CDN边缘节点收到推流请求时做如下校验:

  • 推流防盗链URL中wsTime时间加用户设置的防盗链过期时间小于收到请求的当前时间
  • 校验字符串wsSecret合法

云信CDN边缘节点收到拉流请求时做如下校验:

  • 拉流防盗链URL中playTime时间加用户设置的防盗链过期时间小于收到请求的当前时间
  • 校验字符串playSecret合法

自定义加密Key和有效时间

用户开通直播防盗链后,平台会为您生成一个用于计算防盗链鉴权串的加密Key(保证唯一性),并默认配置防盗链的有效时间为120分钟,如果您有自定义加密Key和有效时间的需求,可以用自定义的Key对平台默认Key进行替换,也可以缩短或延长防盗链的有效时间。

此外,用户还可以设置多个自定义的加密Key,如果这样做,平台保证使用不同加密Key的推拉流地址可以同时生效,这就为用户提供了加密Key替换时平滑过渡的能力。

自定义加密Key和有效时间尚不支持在用户后台设置,可联系客户经理配置。

此文档是否对你有帮助?
有帮助
去反馈
  • 功能简介
  • 功能原理
  • 具体步骤
  • 第一步:开通功能
  • 第二步:生成推拉流地址
  • 鉴权方法
  • 防盗链URL构成
  • 鉴权字符串生成
  • 鉴权方法
  • 自定义加密Key和有效时间