如何防止从我的网站下载图像和视频文件?

Hai*_*vgi 35 html video image blocking

如何防止从我的网站下载图像和视频文件?可能吗?最好的方法是什么?

Jos*_*zel 80

不,这是不可能的.

如果你能看到它,你就可以得到它.

  • +1.你可以使它变得不方便,你可以使它变得困难,但你不能让它变得不可能. (33认同)
  • 必须将图像/视频下载到浏览器以供用户查看.他们会在电脑上的某个地方. (7认同)
  • 或者,你可以做一些可怕的事情,比如在 flash 对象中嵌入图像。 (4认同)
  • 如果您流式传输视频而不是托管文件,则可能会让用户更难以获取它们. (2认同)

Chr*_*nce 15

不要将它们发布到您的网站.

否则就不可能.


Sam*_*son 10

必须下载图像才能被客户查看.在许多情况下,视频都是类似的情况.您可以设置代理脚本来提供文件,但这并不能解决阻止用户获取自己副本的问题.有关此主题的更全面讨论,请参阅问题如何防止/难以下载我的Flash视频?


Bur*_*Leo 10

由于浏览器需要传输内容来显示它(文本、图像、视频),因此在显示网站时数据已经在客户端的计算机上。之前的答案几乎没有给出如何让没有经验的用户更难获取内容的建议。以下是一些方向:

  • 一般的
    • 用透明<DIV>或透明图像覆盖各自的内容(如该问题的一些答案中所述)
    • 在框架集中打开网站,因此保存可能会错过框架内容。
    • 打开网站通过window.open()隐藏菜单栏。
    • 通过 JavaScript 禁用右键单击(不推荐,因为会对可用性产生所有副作用)
    • 通过 JavaScript 从另一个文件(可能会检查特定的引用者或可能是 ROT13)加载页面的 HTML 代码,因此更难访问源代码。
    • 告诉浏览器所有内容都display:none用于打印机(类似于@media print { body, div, p { display: none } }
    • 在客户端截屏之前使用 JavaScript 隐藏内容(请参阅阻止用户使用“Print Scrn”
    • 尝试禁用或覆盖剪贴板(请参阅此帖子
  • 图片
    • 不要将<img>标签用于图像,而是将图像设置为背景<DIV>
    • 将图像包装成 SVG 或 Flash 电影,使它们很难以可用格式访问。
    • 禁用图像缓存(通过<meta>标记或在服务器传送时设置适当的标头),因此它们不会存储在浏览器缓存中(在客户端计算机上可立即访问)。
    • 将图像切割成多个部分,因此重建整个图像需要一些额外的工作
    • onmousedown向图像添加事件,例如,显示版权警报。
    • 通过服务器脚本(例如,PHP)传送图像并检查引用者。
  • 视频
    • 流式传输视频以防止通过 URL 进行简单下载。
    • 将视频包装成 Flash 电影。
    • 使用一些支持 DRM 的讨厌的格式。
  • 文本
    • 使文本不可选择(请参阅如何使 HTML 文本不可选择
    • 除了覆盖之外,还可以将文本包装到 JavaScript 中(例如,在 ROT13 之后或从第二个文件动态加载),因此该文本在源代码中不直接可用。
    • 将文本转换为图像(这可能会降低显示质量)、SVG 或 Flash

再次重申,这一切都不会阻止有经验的用户抓取内容(例如,通过制作屏幕截图并 - 可选地 - 在其上运行 OCR)。有时它就像使用浏览器的开发人员工具或使用没有 JavaScript 的网站一样简单。然而,这会给缺乏经验的用户带来困难,因此他们可能会寻找一些更容易获取的资源。

还要记住,上述技术在阅读页面内容时会影响搜索引擎(如果您有兴趣阻止它们,请从 开始robots.txt)。

感谢您提供任何其他想法来补充上述列表!


A. *_*gan 8

我想补充一点哲学评论.互联网的全部意图,特别是万维网,是分享数据.如果您不希望人们下载图片/视频/文档,请不要将其放在网上.这真的很简单.太多人认为他们可以在现有设计上强加自己的规则.那些想在网上发布内容并控制其发行的人,正在寻找自己的蛋糕并吃掉它们.

  • 哲学是好的,除非你已经花了时间和金钱,使只有一个优秀的产品照片,发现在另一个大陆谁不提供客户支持一些老鼠拨付您的摄影艺术,并削弱你的价格. (4认同)

Has*_*sef 8

如果您使用的是 PHP,最好的方法是控制它.htaccess,您需要将您的文件、图像和视频放在单独的文件夹/目录中,并.htaccess在此目录中创建一个新 文件,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sample.com/.*$ [NC]
RewriteRule ^.* - [F,L]
Run Code Online (Sandbox Code Playgroud)

第一行将%{REQUEST_URI}阻止通过 Web 浏览器或通过curl. 第二行将%{HTTP_REFERER}阻止使用 HTML 标签<img><video>从任何网站访问图像/视频,除了!您提供的例外,而不是http://sample.com/通常应该是您的网站本身。

您还可以在此处查看我的问题和已接受的答案以了解更多浏览器方面的技巧。


Dan*_*plo 7

简而言之,没有.如果有人可以在浏览器中查看图像或视频,那么根据定义,他们可以下载它.这就是网络的运作方式 - 它是基于客户端服务器的.您可以在浏览器(客户端)中查看的任何内容已从远程网站(服务器)传输到您的计算机.

  • 这是每次有人看到你的网站时创建一个"副本",这对于在互联网上制造版权法的混乱大有帮助 (2认同)

Joh*_*yre 6

在标准HTML中,我还是不知道.

你并没有真正说出来,但我猜你在与人们深入链接到你的内容方面遇到了问题.如果是这种情况,并且您对服务器端代码持开放态度,我相信这可能有效:

  1. 创建一个接受数字id的页面,将其映射到服务器文件路径,打开该文件,将二进制文件直接写入响应流.
  2. 在页面请求中,生成一堆随机ID,并将它们映射到实际的媒体URL,并将该映射对象服务器端存储在具有有限生命的某处(在会话中?).
  3. 使用指向新媒体页面的媒体链接呈现页面,并使用相应的id作为查询字符串参数.
  4. 清除映射对象并在每次回发时生成所有新链接.

这个 :

  1. 不会阻止人们从您的页面下载
  2. 绝对不像标准HTML那样轻量级
  3. 并有它自己的一系列问题.

但它是一个可行的过程的概述,可以帮助您防止用户深度链接.


小智 5

你可以减少这种可能性,但不能消除它......


Dav*_*ver 5

正如许多人所说,你无法阻止某人下载内容.你不能.

但你可以让它变得更难.

您可以使用透明图像叠加图像div,这样可以防止人们右键单击它们(或者,将div图像的背景设置为图像将具有相同的效果).

如果您担心交叉链接(即链接到您的图片的其他人,您可以检查HTTP引荐来源并将来自不属于您的域的请求重定向到"其他".