是否可以将 Blob URL 视为防止用户从开发人员控制台内部复制图像的解决方案?

Can Blob URLs be considered as a solution to prevent users from copying the images from inside the developers console?

众所周知,如果我们将图像(或视频)文件作为二进制对象读取,然后对这些对象进行URL,我们就可以显示带有这些blob的文件URLs 在 HTML 中,无法在另一个 window 或选项卡中访问,因为它仅存在于当前会话中。结果,用户不能简单地保存文件(例如,我们不能简单地下载 youtube 视频,因为他们的视频标签有 blob URLs 作为他们的来源)。

那么我们可以说这是一种防止用户使用开发者控制台窃取敏感文件的方法吗?如果是这样,为什么那么多网站不这样做?我知道许多拥有版权图片或出售壁纸的网站,但您可以简单地从控制台下载他们的文件。 还是这个方法有问题?

完全没有。该文件已经在他们的计算机上,他们可以很好地保存它,无论是图像还是视频,用 blob 喂 HTML 元素:// URL 不会阻止任何“另存为”操作:

fetch( "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" )
  .then( resp => resp.blob() )
  .then( blob => {
    console.log( 'img loaded' );
    const elem = document.querySelector( 'img' );
    elem.src = URL.createObjectURL( blob );
  } );

fetch( "https://upload.wikimedia.org/wikipedia/commons/a/a4/BBH_gravitational_lensing_of_gw150914.webm" )
  .then( resp => resp.blob() )
  .then( blob => {
    console.log( 'video loaded' );
    const elem = document.querySelector( 'video' );
    elem.src = URL.createObjectURL( blob );
  } );
Try to right click "save As..." these two media:
<img>
<video controls></video>

撤销 blob:// URL 加载后可能会使它变得有点困难,但即便如此,如果您查看开发工具的网络面板,您会看到原始请求来自Blob 已生成,您的用户可以从中抓取您的数据。

YouTube 没有使用 blob:// URL 来阻止下载

如果他们真的想让下载视频变得更难,他们会使用 DRM 来保护它,并且会使用 EME API,但他们没有。
您在 YouTube 视频中看到的 blob:// URL 并不指向 Blob,而是指向 MediaSource 对象。他们确实使用此 API 来提供自适应内容,即能够在连接质量变差时即时发送质量较低的相同媒体。
和任何保护完全没有关系,在网上快速搜索会告诉你找回原始文件非常简单s YT正在播放