API 参考
圈组

防盗链

更新时间: 2024/06/14 16:33:57

为了防止您的资源被盗链而产生高额流量,网易云信建议您设置 CDN 资源的访问控制,保障您的资源不被盗播,您可以根据实际需要选择 Referer 防盗链、IP 防盗链、User-Agent 防盗链或 URL 鉴权。

  • 如果您使用的是自定义域名,请参考本文手工开启防盗链。如因客户未开启防盗链而导致的盗链问题,网易云信概不负责。
  • 如果您使用的是云信预置域名,已默认开启URL鉴权,您可以忽略该章节。

功能简介

网易云信的点播 CDN 防盗链包括如下几种类型:

  • URL 鉴权:在点播视频播放地址中通过添加鉴权字符串的方式,来校验地址合法性,防止视频被盗播。开通 URL 鉴权后,视频播放地址中需要包含一段鉴权字符串,只有合法生成的鉴权字符串,才可以通过校验从而播放,且该地址有时效性,只在设定的有效期内可播放。这样即使别人获取到已失效的地址,也是无法继续使用的,防止别人盗播视频。如果已经使用有效的地址正在播放,不会因为超时失效而受影响。
  • Referer 防盗链:CDN 通过 HTTP 播放请求头中携带的 Referer 字段识别请求的来源。通过黑白名单,设置允许访问 CDN 资源的域名,实现对访客的过滤,防止视频被盗播。
  • IP 防盗链:通过黑白名单,设置允许访问 CDN 资源的 IP 地址,实现对访客的过滤,防止视频被盗播。
  • User-Agent 防盗链:CDN 通过 HTTP 请求头中的 User-Agent 字段进行访问控制。通过黑白名单,设置允许访问 CDN 资源的浏览器或客户端。

URL 鉴权的功能原理

防盗链URL构成

点播防盗链URL由资源地址加上鉴权字符串构成:

http://domainName/bucketName/objectKey?wsSecret=XXXXXX&wsTime=XXXXXX

其中,wsTime 是生成校验字符串时的时间戳(单位秒),wsSecret 是根据一定规则生成的加密字符串,具体请参见鉴权字符串的计算规则

您通过云信控制台或者服务端 API 获取到的视频地址默认会带着鉴权字符串,即获取到的就是完整的可播放地址。

鉴权方法

URL 鉴权通过云信 CDN 加速节点与用户资源站点配合实现:

  1. 用户资源站点提供给终端用户加密 URL(资源地址加权限验证信息)。

  2. 终端用户使用加密后的 URL 向云信加速节点发起请求。

  3. 加速节点收到播放请求时,验证请求的合法性,具体校验如下:

    • 校验视频是否已过期:若请求时间大于wsTime +鉴权KEY有效时间,则表示视频已过期。
    • 校验字符串 wsSecret 是否合法。
  4. 如果请求合法则正常响应,如果请求不合法,则拒绝请求,从而达到防止盗播的目的。

鉴权字符串的计算规则

校验字符串 wsSecret 计算规则如下:

wsSecret=encoderByMd5With32Bit(secretKey + "/" + bucketName + "/" + objectKey + wsTime)

其中,secretKey 即主KEY或备KEY的值,bucketNameobjectKey唯一标识了用户的某一视频资源,加密算法是 32 位 md5 算法。

举例说明,假设用户某视频资源的原始地址是:

http://vodk32ywxdf.vod.126.net/vodk32ywxdf/example.mp4

用户设置的防盗链加密秘钥secretKey是"mySecretKey",生成校验字符串的时间戳是1556279147,那么按照上述规则计算生成的校验字符串wsSecret为:

wsSecret=encoderByMd5With32Bit(mySecretKey/vodk32ywxdf/example.mp41556279147)

配置防盗链

  1. 网易云信控制台的首页单击指定应用名称。

  2. 在左侧导航栏选择产品功能 > 点播,单击分发加速配置 页签。

    域名管理.png

  3. 单击域名管理右侧的子功能配置

  4. 在对应加速域名的操作列中单击配置

    配置CDN缓存.png

  5. 单击访问控制配置页签。

  6. 访问控制配置区域,根据需要开启相应的防盗链配置,具体参数说明如下表所示。

    防盗链.png

    防盗链类型 参数 描述 输入规则 示例
    Referer防盗链 防盗链类型 支持设置白名单或黑名单。黑名单和白名单不能同时设置,只支持一种模式。
    • 白名单:只有白名单内的域名能访问资源。
    • 黑名单:黑名单内的域名将无法访问资源。
    • 域名前请不要带协议名(http://和https://)。
    • 可输入多个域名,多个域名之间换行隔开。最多能输入 50 个域名。
    • 采用模糊匹配,自动匹配子域名,前面不需要再加通配符。例如,输入 example.com 就可以匹配到它的所有子域名。
    • 支持带端口。
    example.com
    空Referer访问 设置是否允许用户直接通过浏览器的地址栏中输入资源的 URL 地址访问资源。 / 禁止
    IP防盗链 防盗链类型 支持设置 IP 网段和 IP 地址。
    • 白名单:只有白名单内的 IP 地址能访问资源。
    • 黑名单:黑名单内的 IP 地址将无法访问资源。
    • 支持 IPv6。IPv6 如果有字母的话必须是大写,IPv6 地址不支持缩写格式。
    • 支持输入多个IP地址或“IP/掩码”格式的网段。多个IP之间换行隔开。
    • 最多支持 100 个。
    1.2.0.0/24
    User-Agent防盗链 防盗链类型 支持设置白名单或黑名单。
    • 白名单:只有白名单内的 User-Agent 能访问资源。
    • 黑名单:黑名单内的 User-Agent 将无法访问资源。
    • 模糊匹配,不支持正则和通配符。例如 phone,会匹配到 iphone、iphonex 等。
    • 最多支持 100 个。
    Chrome
    URL鉴权 主KEY (必选)输入自定义的主KEY。该KEY会用于生成防盗链 URL 中鉴权字符串的加密 KEY。 长度16~32个字符。 mySecretKey123456
    备KEY (可选)输入自定义的备KEY。备 KEY 主要用于主 KEY 更新时,确保业务平滑更换。当更新主 KEY 后,所有使用主 KEY 生成的播放地址会立即失效,这时用备 KEY 可以替代主 KEY 继续提供服务。 长度16~32个字符。 mySecretKey234567
    鉴权KEY有效时间 URL 鉴权字符串的有效期,单位为秒。默认为 120 分钟。 有效时间不能超过 1 年。 7200
  • 当状态为配置中时,您将无法修改相应的配置,页面不展示保存按钮。
  • 当状态为运行中时,您才能修改相应的配置。

配置示例

配置Referer防盗链

假设您设置的白名单为 example.com,则:

  • 当用户请求携带的 Referer 字段中包含了 example.com,CDN 将会正常返回内容。
  • 当用户请求携带的 Referer 字段中不包含 example.com,CDN 提示禁止访问的错误信息。

配置 IP 防盗链

假设您设置的黑名单为1.2.0.0/24,则:

  • 用户端 IP 为1.2.3.4的用户访问资源时,CDN 提示禁止访问的错误信息。
  • 用户端 IP 为2.2.1.1的用户访问资源时,CDN 将会正常返回内容。

配置 User-Agent防盗链

假设您设置的黑名单为Chrome,则:

当 HTTP 请求头中的 User-Agent 包含类似如下信息时,CDN 提示禁止访问的错误信息。

user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
此文档是否对你有帮助?
有帮助
去反馈
  • 功能简介
  • URL 鉴权的功能原理
  • 防盗链URL构成
  • 鉴权方法
  • 鉴权字符串的计算规则
  • 配置防盗链
  • 配置示例
  • 配置Referer防盗链
  • 配置 IP 防盗链
  • 配置 User-Agent防盗链