防盗链的测试

最近更新时间:2019-05-07 16:45:14

防盗链测试简介

云点播提供了 防盗链 功能,开发者可以根据实际需要,对视频播放 URL 使用的域名合理设置防盗链,实现对用户视频播放行为的控制。
然而,不经测试就对使用中的域名设置防盗链有以下风险:

  • 可能导致现网用户播放失败。
  • 可能未达到播放控制的效果。

例如,开发者希望对视频播放 URL 的有效期进行控制,就需要启用 KEY 防盗链

  • 如果生成的防盗链中签名参数sign计算错误,启用防盗链可能导致现网所有视频播放失败
  • 如果生成的防盗链中过期时间参数t过大,启用防盗链后视频播放 URL 不会在预期的时间失效

因此,开发者为域名设置防盗链前应当先测试,确认符合预期后再执行变更操作。并且,开发者终端测试防盗链的同时,不能影响现网用户(即保证防盗链测试对现网安全)。

实现安全的防盗链测试

点播为开发者提供了安全测试防盗链的解决方案。

术语说明

为了便于说明方案,下面介绍一些会涉及的术语:

  • 点播默认域名:现网环境中,用户播放点播视频使用的正式域名。“预置点播域名”和“自定义域名”都能被设置成“点播默认域名”(设置方法参见 自定义域名 文档)。
  • 预置点播测试域名:一个用于开发者调试的测试域名(通常为xxx-test.vod2.myqcloud.com),不得用于现网环境,不能被设为默认域名。
  • 正式 App 后台:业务的 App 后台服务,现网用户从这里获取视频的播放 URL。
  • 测试 App 后台:业务测试环境中的 App 后台服务,测试客户端从这里获取视频的播放 URL。

方案细节

一般的,现网用户从业务的正式 App 后台获取视频的播放 URL,测试客户端从业务的测试 App 后台获取视频播放 URL,两处获得的 URL 中的域名相同(都是点播默认域名)。当对防盗链测试时,不能直接变更点播默认域名,否则现网用户将受到影响。

为了避免防盗链测试影响现网用户,点播提供了一个“预置点播测试域名”,与现网中使用的点播默认域名隔离。开发者测试防盗链时,仅操作测试域名的防盗链配置。

点播还提供了一个“测试域名代理”(IP 为122.152.250.73),开发者只需要修改测试客户端的 HOST 表,将点播默认域名解析到这个代理上。这样,测试客户端的视频播放请求,将经过代理转发到测试域名(上图中的红色路径),而现网用户的播放请求仍然通过正式域名获取视频内容(上图中的黑色路径)。

因此,开发者可以自由修改测试域名的防盗链配置,以及测试 App 后台派发的视频播放 URL,而不必担心影响到现网用户。

开发者使用测试客户端和测试 App 后台,充分验证防盗链并确认无误后,就可以依次执行以下步骤:

  1. 将正式 App 后台派发视频播放 URL 的规则修改成与测试 App 后台一致。
  2. 将点播默认域名的防盗链配置修改成和预置点播测试域名一致。

这样,点播默认域名的防盗链正式生效,经过测试验证的防盗链配置被应用到了现网。

操作实例

下面,以用户开启 KEY 防盗链为例,介绍防盗链测试的操作步骤:

  1. 预置点播测试域名开启防盗链。
  2. 获取一个原始播放 URL。
  3. 测试客户端仍然能够播放视频原始 URL。
  4. 测试客户端修改 HOST 表。
  5. 测试客户端不能再播放视频原始 URL。
  6. 测试客户端能够播放带防盗链参数的 URL。
  7. 正式 App 后台生成带防盗链参数的 URL。
  8. 点播默认域名开启防盗链。

背景

用户(例中 appid 为125xxx655)登录点播控制台的 【域名管理】 后,将看到以下两种域名:

  • 预置点播域名(125xxx655.vod2.myqcloud.com)。
  • 预置点播测试域名(125xxx655-test.vod2.myqcloud.com)。

初始状态下,预置点播域名125xxx655.vod2.myqcloud.com为点播默认域名,并且没有开启 KEY 防盗链。

1. 预置点播测试域名开启防盗链

选择预置点播测试域名(125xxx655-test.vod2.myqcloud.com),单击【设置】链接,进入【Key 防盗链】,打开【启用 Key 防盗链】按钮,并使用【生成 KEY】生成一个防盗链 KEY。单击【确定】保存,等待配置生效。

2. 获取一个原始播放 URL

视频的原始播放 URL,是指没有带 防盗链参数 的 URL 地址,可以从控制台 云视频管理 中获得(如上图所示)。例子中使用的 URL 为:https://125xxx655.vod2.myqcloud.com/ca7xxx655/cfbxxx349/PkxxxIA.mov

3. 测试客户端仍然能够播放视频原始 URL

此时,测试客户端仍然可以直接通过视频原始播放 URL 播放视频,执行 curl 返回的 HTTP 状态码为 200。

4. 测试客户端修改 HOST 表

修改测试终端的 HOST 表(Windows 系统为C:\Windows\System32\drivers\etc\hosts,Mac 系统为/private/etc/hosts),添加一条记录122.152.250.73 125xxx655.vod2.myqcloud.com,然后保存。

修改后,执行ping 125xxx655.vod2.myqcloud.com检查 HOST 修改是否生效。

5. 测试客户端不能再播放视频原始 URL

修改 HOST 表后,测试客户端使用视频原始播放 URL 将无法播放,检查 HTTP 状态码为 403 Forbidden。因为修改了 HOST 表,测试客户端发起的视频播放请求,已经被映射到了预置点播测试域名,必须为视频播放 URL 带上正确的防盗链参数才能播放。

6. 测试客户端能够播放带防盗链参数的 URL

按照 KEY 防盗链的 生成规则 生成带有防盗链参数的 URL,地址为https://125xxx655.vod2.myqcloud.com/ca7xxx655/cfbxxx349/PkxxxIA.mov?t=5bd6be00&sign=18cxxx9deb,就能成功播放视频了,执行curl返回的 HTTP 状态码为 200。

测试 App 后台按照防盗链生成规则,派发带有防盗链参数的 URL,并使用测试客户端进行验证。

7. 正式 App 后台生成带防盗链参数的 URL

测试环境验证后,业务正式 App 后台派发带防盗链参数的 URL,派发规则与测试 App 后台一致。

8. 点播默认域名开启防盗链

先打开点播预置测试域名的【Key 防盗链】,复制测试域名的防盗链 KEY。

然后打开点播默认域名的【Key 防盗链】,把测试域名的 KEY 粘贴在【防盗链 KEY】文本框中,单击【确定】保存。
域名配置生效后,防盗链配置就会被应用到现网中使用的点播默认域名,并正式生效了。