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

时间:2009-08-18 15:10:08

标签: html image video blocking

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

25 个答案:

答案 0 :(得分:77)

不,这是不可能的。

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

答案 1 :(得分:15)

请勿将其发布到您的网站。

否则无法实现。

答案 2 :(得分:10)

必须下载图像才能被客户查看。在许多情况下,视频都是类似的情况。您可以设置代理脚本来提供文件,但这并不能解决阻止用户获取自己副本的问题。有关此主题的更全面讨论,请参阅问题How can I prevent/make it hard to download my flash video?

答案 3 :(得分:7)

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

答案 4 :(得分:7)

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

答案 5 :(得分:6)

在标准HTML中,无论如何我都不知道。

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

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

    1. 不会阻止人们下载 来自您的页面
    2. 绝对不像标准那样轻巧 HTML
    3. 并且有自己的一系列问题。
    4. 但它是一个可行的过程的概述,它可以帮助您防止用户进行深层链接。

答案 6 :(得分:5)

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

但是你可以让它变得更难。

您可以使用透明的div覆盖图片,这样可以防止人们右键点击它们(或者将div的背景设置为图像会产生相同的效果。)

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

答案 7 :(得分:4)

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

  • 一般
    • 使用透明<DIV>或a覆盖相关内容 透明图像(如本问题的一些答案所述)
    • 在框架集中打开网站,因此保存可能会错过框架内容。
    • 通过window.open()打开网站以隐藏菜单栏。
    • 禁用通过JavaScript的右键点击(由于所有可用性的副作用,不推荐使用)
    • 通过JavaScript从另一个文件(可能会检查特定的引用者或可能是ROT13)加载页面的HTML代码,因此访问源代码更加困难。
    • 告诉浏览器打印机的所有内容均为display:none(类似@media print { body, div, p { display: none } }
    • 在客户端制作屏幕截图之前使用JavaScript隐藏内容(请参阅Stop User from using “Print Scrn”
    • 尝试禁用或覆盖剪贴板(请参阅this post
  • 图片
    • 不要将<img>标记用于图片,而是将图片设置为<DIV>的背景
    • 将图像包装到SVG或Flash影片中,使其难以以可用格式访问。
    • 禁用图像缓存(通过<meta>标记或在服务器传递上设置相应的标头),因此它们不会存储在浏览器缓存中(在客户端计算机上无法访问)。
    • 将图像剪切成部分,因此需要一些额外的工作来重建整个图像
    • 向图片添加onmousedown个事件,例如,显示版权警告。
    • 通过服务器脚本(例如PHP)传送图像并检查引用程序。
    • 播放视频,以防止通过网址进行简单下载。
    • 将视频包装到Flash电影中。
    • 使用一些支持DRM的讨厌格式。
  • 文本
    • 使文字无法选择(请参阅How to make HTML Text unselectable
    • 除了覆盖之外,将文本包装成JavaScript(例如,在ROT13之后或从第二个文件动态加载),因此源代码中不能直接使用该文本。
    • 将文本转换为图像(这可能会降低显示质量),SVG或Flash

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

另请注意,上述技术会在阅读网页内容时影响搜索引擎(如果您有兴趣阻止它们,请以robots.txt开头)。

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

答案 8 :(得分:3)

如果您使用的是PHP,最好的方法是将其控制为.htaccess,您需要将您的文件,图像和视频放在一个单独的文件夹/目录中,并创建一个新的{{1}使用以下文件在此目录中输入文件:

.htaccess

第一行RewriteEngine On RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC] RewriteCond %{HTTP_REFERER} !^http://sample.com/.*$ [NC] RewriteRule ^.* - [F,L] 将阻止通过网络浏览器或%{REQUEST_URI}获取文件。 第二行curl将阻止使用来自任何网站的HTML标记%{HTTP_REFERER}<img>访问imahe / video,但您提供的例外<video>除外!通常应该是你的网站本身。

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

答案 9 :(得分:3)

使用Photoshop或甚至现在在Lightroom 3中为图像添加水印也没有什么坏处。确保水印清晰,并在图像的显眼位置。这样,如果它被下载,至少你得到了广告!

答案 10 :(得分:2)

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

答案 11 :(得分:2)

这是我如何做的,以防将来有人想知道。

我把它放在根服务器上的.htaccess文件中:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com.*$ [NC]
RewriteRule \.(mp4|avi)$ - [F]

这会阻止他们说到domain.com/videos/myVid.mp4,然后从那里保存。

答案 12 :(得分:1)

不,不是。你可以点击右击和类似的东西,但如果有人想下载它,他会这样做,相信我;)

答案 13 :(得分:1)

这是一篇旧帖子,但对于视频,您可能需要考虑使用MPEG-DASH来混淆您的文件。此外,它将为您的用户提供更好的流媒体体验,而无需单独的流媒体服务器。这篇文章中的更多信息: How to disable video/audio downloading in web pages?

答案 14 :(得分:1)

以flash格式放置图片或视频。效果很好。

答案 15 :(得分:1)

您可以标记文件夹或文件,使其无权读取(任何主要的Web服务器都支持此功能)。这允许您将它们存储在服务器上,而无需访问外部世界。如果您有一个为其他人生成图像以便稍后下载的服务,或者您使用您的Web帐户进行FTP访问,但不希望任何人查看这些文件,您可能希望这样做。 (即将.bak文件上传到服务器,以便其他人再次FTP下来。)

然而,正如其他人所说的那样,虽然有些工具可以阻止非法使用,但进入人们可以查看图像或视频而不是在本地保存的版权区域并不是完全可能的。

答案 16 :(得分:1)

一旦他们查看包含图片或视频的页面,该项目就会下载到其浏览器的临时文件夹中。因此,如果您不想下载,请不要发布。

答案 17 :(得分:0)

当然,用户可以看到的任何图像都可以保存在计算机上,而您无能为力。现在,如果你想阻止访问用户不应该看到的其他图像,我实际上是这样做的:

  • 每个链接到图像标记中的“src”实际上都是一个请求 发送到服务器上的控制器,
  • 服务器检查访问权限 该特定用户的权限,如果用户是,则返回该图像 应该可以访问它,
  • 所有图像都存储在目录中 无法从浏览器直接访问。

好处:

  • 用户无权访问您无意让他/她有权访问的任何内容

<强>缺点:

  • 这些请求很慢..尤其是同一页面上有很多图像。事实上我还没有找到加速这种方法的好方法..

答案 18 :(得分:0)

您可以将图像设置为背景图像并具有透明的前景图像。

答案 19 :(得分:0)

您无法阻止图片/视频盗窃,但您可以为普通用户更加努力,但是您不能让像我们这样的程序员更难(我的意思是对网络编程很少的小偷)。

你可以尝试一些技巧:

1。)将Flash用作YouTube以及http://www.funnenjoy.com等许多其他网站。

2。)Div重叠或背景图片设置(但是没有意义的用户可以通过打开检查元素或其他开发人员选项轻松保存所有资源)。

3.。)您可以使用JavaScript禁用右键单击和特定键,如CTRL + S和其他可能的键,但主要缺点是,如果用户禁用JavaScript,我们的所有技巧都会失败。

4.。)将图像保存在任何在线目录中(如果您具有对Web服务器的完全访问权限),并在每次需要图像/视频时使用服务器端语言(如PHP)读取该文件,并及时更改图像ID或创建脚本每次访问后都可以自动更改ID。

5.。)在apache中使用.htaccess以防止其他网站链接您的图片。您可以使用此网站自动生成.htacess http://www.htaccesstools.com/hotlink-protection/

答案 20 :(得分:0)

<body>标记内插入透明gif 1px x 1px:

<body><img src="route-to-images/blim.gif" class="blimover">

然后用它来设置样式:

.blimover {
  width: 100% !important;
  height: 100% !important;
  z-index: 1000 !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

这将删除页面中的所有点击功能,但它肯定会阻止人们窃取任何内容!

您可以将其应用于<div><section><article>等,只需相应地命名并防止您的副本和/或图像被翻录。

但是没有什么可以阻止屏幕抓取...... ...

答案 21 :(得分:0)

如果您只想让授权用户获取内容,则客户端和服务器都需要使用加密。

对于视频和音频,Azure Media Services是一个很好的解决方案,它具有内容保护和加密功能。您将Azure媒体播放器嵌入浏览器中,然后从Azure流式传输视频。

对于文档和电子邮件,您可以查看使用特殊客户端的Azure Rights Management。不幸的是,除了一次性的一次性代码外,它目前在普通的网络浏览器中不起作用。

但是,我不确定这一切到底有多安全。正如其他人所指出的那样,从安全的角度来看,一旦下载的字节出现在“攻击者”中。 RAM,他们一样好。在这种情况下,没有解决方案100%安全(如果我错了,请纠正我)。与大多数安全性一样,目标是使其变得更难,因此99%的人不会感到烦恼。

答案 22 :(得分:0)

我认为最好的方法是防止右键单击您的网页,因为这是普通用户尝试下载内容的最便捷方法,如果您只能按照自己的意愿进行操作,则可以将其视为备注。永远都无法阻止计算机极客或黑客下载它,因为一旦内容在互联网上,就意味着它已经在公共领域了。

答案 23 :(得分:-1)

我认为最好的方法是: 在分离的加密部件中流式传输视频。

有视频托管服务,例如vzaar,具有此功能。 据我所知,这将使直接下载变得非常困难。至少95%的人。

但是,当然,如果视频在屏幕上播放,人们可以使用屏幕录像机和一些简单的软件来录制来自音频输出的声音(但是他/她必须播放整个东西来保存它,完全不方便)。

答案 24 :(得分:-1)

将内容放在Google驱动器上,并使其下载保护。这样,人们只能看到您的文档,图片,而无法下载。