网站使用哪些方法来防止直接访问媒体?

信息安全 访问控制 混淆
2021-08-21 05:02:02

我真的希望这个问题不是题外话......

背景

该问题与媒体安全(视频、音频等)有关,其中相关媒体受到数字保护(合法,DMCA 风格)或其他(向公众开放,但不应根据某些许可证或其他许可证重新分发) .

例如,Youtube 上的视频可能会向公众开放(供观看),但不应重新分发。PBS上的视频可能对网站内容有相同的规定,但它们的保护方式却截然不同。

我无法使用 Adob​​e Flash 解决这个问题,但使用 HTML5 似乎有一种非常简单的方法可以在没有混淆的情况下获取实际的媒体内容。

编辑:为澄清起见,我问的是普通用户可能会遵循我提供的以下方法从 PBS 下载视频,但谁会发现几乎不可能从 Youtube 下载视频。

编辑 2:Youtube 将媒体内容分解为流式视频的表现;这也可以被认为是一种“安全”机制,因为用户必须编写软件来获取所有部分并将它们放在一起(为此目的存在软件),这使得人们很难直接访问媒体有问题。但是,它们还在 GET 请求的查询字符串中使用验证机制(参见下面的方法);这些验证机制是该问题的核心关注点。

方法

我将以 Youtube (HTML5) 和 PBS (JW Player 6.11.4920) 为例来介绍我正在谈论的内容。

PBS 网站上的La Famiglia

1.) 禁用 Adob​​e Flash(例如,chrome:plugins -> Adob​​e Flash -> 禁用)

  • 这迫使 JW Player 回退到 HTML5

2.) 打开开发者工具 -> 查看网络选项卡

3.) 开始播放视频

4.)video/mp4类型栏中注意

来源

5.)请求 URL是可下载媒体的直接链接。瞧。

显然这是不安全的。如果这是受版权保护的内容,人们可以轻松地下载它并通过种子、文件上传网站等重新分发。不好!使用 Adob​​e Flash-only 媒体播放器,这种方法似乎无法做到,但这可能只是我缺乏调查能力。

让我们看看Haddaway - Youtube 上的爱是什么

1.) Youtube 现在是 HTML5 了,太好了,跳过几个步骤直接进入开发者工具

2.) 寻找一些视频格式。找到了一些!:

优酷媒体来源

3.) 高层次的混淆


正如我们所见,一些网站实施了某种形式的媒体访问控制来防止未经授权的访问。就 Youtube 而言,这可能是为了提高效率,但从他们的请求 URL 格式来看:

https://r1---sn-hxgpu-a5oe.googlevideo.com/videoplayback?upn=_t-wCQzh3Ww&signature=A298625B841D2DD1A8A8BBCFAEE5FE80F9F8ED45.4AF128179F70E92385145290FEF6B1843D3E4047&itag=243&keepalive=yes&lmt=1414207260185348&key=yt5&pl=16&id=o-AFRnZLaRZX9g_lgGGgfcjzbUFLOu-PFx0EGukit2Z358&mime=video%2Fwebm&mm=31&ipbits=0&requiressl=yes&ip=148.61.167.67&ms=au&gir=yes&mt=1424731661&dur=241.040&initcwndbps=3913750&expire=1424753375&sver=3&fexp=3300103%2C3300103%2C3300130%2C3300130%2C3300137%2C3300137%2C3300161%2C3300161%2C3310704%2C3310704%2C3311902%2C3311902%2C3312210%2C3312210%2C905657%2C907263%2C924628%2C927622%2C931378%2C934954%2C9406486%2C9406573%2C9406921%2C943917%2C947225%2C947240%2C948124%2C948703%2C952302%2C952605%2C952612%2C952901%2C954815%2C955301%2C957201%2C957906%2C959701%2C961403&mv=m&sparams=clen%2Cdur%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&clen=8105881&source=youtube&cpn=S4VP0TLZXAoVAKuj&alr=yes&ratebypass=yes&c=WEB&cver=html5&range=7240268-8105880

似乎他们在很多方面限制了访问。实际检索视频(来自 Youtube)的过程需要对构建的 URL(请求 URL)进行逆向工程(示例),下载每个块并逐步构建数据。Google 似乎对临时用户做得很好,但开发人员可以对请求 URL 进行逆向工程并创建“Youtube 下载器”,这在当今很常见。

问题

Youtube 正在使用的方法是否有特定的名称(分段+通过查询字符串参数进行的访问控制)?

是否有以这种方式“混淆”媒体的广泛使用/命名的方法?

是否甚至(技术上)可以完全防止未经授权的媒体访问?我的猜测是否定的,只要有人愿意花时间对必要的元数据进行逆向工程。

1个回答

实际上,谷歌让任何人仅仅下载视频变得更加困难,因为谷歌正在解析整个视频并一次只为您提供部分视频。因此,您理想的单个“请求 URL”(AKA a GET request)实际上是多个GET requests.

由于这种解析,很难创建一个始终可以将所有这些部分放在一起的脚本/程序。

我截屏并强调了一些要点:

Firebug 捕获 Youtube 流量

注意倍数GET requeststo *.googlevideo.com

如果您实际查看,response您将看到一个返回 .mp4 文件片段的 url。(以下是如果您仅访问responseurl 会发生什么)

在此处输入图像描述

您可以查看浏览器的缓存以找到实际的代码片段,并在概念上将它们拼凑在一起。(下面是缓存文件本身的捕获)

在此处输入图像描述

现在,我不知道您是否还必须进一步解密文件本身(您已经拼凑了所有这些缓存)。

我被引导相信,因为视频显然是客户端播放我只需要确认一下...