如何在网页浏览器中防止屏幕录制?

7
我正在为我的一位客户制作教育网站,他要求实现一个功能,能够防止用户在网站上录屏,因为该网站将有付费内容和一些 Vimeo 视频,所以他不希望通过录屏来窃取他的视频。我知道这可以在 Android 或 IOS 应用程序中完成。作为 React 开发人员,我也可以使用 Expo 为 Android 应用程序实现此功能。但客户希望在 Web 浏览器上为网站执行此操作。我已经花了4个小时在网上搜索,但仍毫无头绪,因为我没有找到一种解决方案。 请问我该如何做到这一点,或者它是否可能?

4
我可以使用相机录制电脑屏幕。你如何防止我这样做,甚至知道我在这样做? - Heretic Monkey
1
我所知道的唯一可能的方法(但个人不知道如何实现)是像Netflix、Disney+等使用某种WebGL 3D视频元素,如果尝试录制,则只会显示为黑屏。然而,这可以轻松地通过HDMI捕获卡绕过。据我所知,没有任何方法可以使其无法录制(因为总有人可以使用摄像机进行录制)。 - Samathingamajig
1
现在看看这个网站,它有那个功能。他们是如何做到的? - Danish Bukhari
3个回答

7

这些答案有点错误。它们使用称为DRM(数字版权管理)的技术。

什么是DRM播放器

DRM(数字版权管理)播放器是实施DRM技术以保护数字内容(例如视频、音乐和电子书)免受未经授权的访问、复制或分发的媒体播放器。DRM通常涉及加密内容并限制对解密密钥的访问,该密钥仅供授权用户使用。

在防止屏幕捕捉方面,DRM播放器通常使用加密和水印技术的组合。视频被加密,播放器在播放时即时解密。但是,解密过程通常在受保护的环境中进行,这使得屏幕录制软件难以捕获解密后的内容。播放器还向视频帧添加一个不可见的水印,用于识别观看视频的观众。当尝试屏幕录制时,播放器可以在捕获的帧中检测到水印,并显示黑屏或其他混淆方法,以防止视频被录制。

这种技术之所以有效,是因为屏幕录制软件捕获屏幕上显示的任何内容,无论它是否加密。但是,如果屏幕录制软件无法访问解密的内容,则仅会捕获黑屏或混淆方法,这使得录制的视频变得毫无用处。

现在这里有关于 w3c 这项技术的论文,它详细解释了它的实现原理。https://w3c.github.io/encrypted-media/

如果你想以更简单的方式来理解它,可以阅读这篇 web.dev 文章。https://web.dev/eme-basics/

我不能用一个简单的答案清晰地解释这个过程是如何工作的,因为需要理解很多东西。希望我的回答能给你一些信息。


4

很遗憾,目前看起来这是不可能的。当前,浏览器无法理解是否有人正在录屏。

如果浏览器能够识别像录屏这样简单的操作,这将是一种非常严重的安全风险。这将意味着浏览器拥有比其应该具有的更高级别的权限。

您应该向您的客户说明这一点。有时客户仅仅是无法理解技术。


1
即使是 Netflix 也无法做到这一点,同意。 - 0nepeop1e
2
现在大家看一下这个网站:https://www.uula.com/courses/71/arabic/lessons/3587/videos/18194 它有这个功能。他们是如何实现的? - Danish Bukhari
对不起,但是您的意思是什么?我可以很好地记录这个网站。防止屏幕录制是不可行的。正如其他评论者所提到的,用户可以简单地拿出手机拍摄视频...或者他们可以在桌面上进行录制。您正在浪费时间,应该向客户说明这一点。 - Jaywhit
3
@DanishBukhari 你浪费了我的时间。我测试录音,它可以工作。别想太多了。 - ronaldtgi
我尝试使用Win10和XBox录制器(按Win+Alt+R)记录该网站,虽然它记录了整个屏幕,但视频框的内容是黑色的。检查元素后,我发现有一个带有drmVideoContainer类的<div>包装器,因此有些东西(这并不意味着它不能用其他我没有尝试过的录制器应用程序进行记录)。另外,Netflix电影也没有被记录下来。 可能有部分解决方案适用于特定的录制器,不确定XBox录制器是否遵循某些指令以不包括视频,或者是否由某些策略强制执行。 - tru7

2

一些人通过检测特定的扩展名/快捷键、窃取焦点/失去焦点时暂停视频等方式来防止屏幕录制。还有一些人采用隐蔽的方式(发现软件bug)。此外,一些屏幕录制器可能会尊重一些元数据/声明。通过这种方式,您可能能够防止一些常见的屏幕录制器,但不是所有的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接