如何防止从我的网站下载图像和video文件?
如何防止从我的网站下载图像和video文件? 可能吗? 什么是最好的方法来做到这一点?
不,这是不可能的。
如果你能看到它,你可以得到它。
不要将它们发布到您的网站。
否则这是不可能的。
必须下载图片才能被客户查看。 在许多情况下,video也是一个类似的情况。 您可以设置代理脚本来提供这些文件,但这并不能真正解决阻止用户获得自己的副本的问题。 有关此主题的更全面讨论,请参阅问题如何防止/难以下载我的Flashvideo?
总之,没有。 如果有人可以在他们的浏览器中查看图像或video,那么按照定义,他们已经下载了它。 这就是networking的工作原理 – 基于客户端服务器。 无论您在浏览器(客户端)中查看的内容是否已从远程网站(服务器)传输到您的计算机。
在标准的HTML,我不知道。
你没有真正的说,但我猜你是深入链接到你的内容的人有问题。 如果是这样的话,而且你打开服务器端代码,我相信这可能会工作:
- 创build一个接受数字ID的页面,将其映射到服务器文件path,打开该文件,将二进制文件直接写入响应stream。
- 在页面请求中,生成一堆随机ID,并将它们映射到实际的媒体url,并将该映射对象服务器端存储在某个地方(在会话中),但有限的生活。
- 使用指向新媒体页面的媒体链接以适当的ID作为查询string参数呈现您的页面。
- 清除映射对象并在每个回发中生成所有新链接。
这个 :
- 不会阻止人们从你的页面内下载
- 绝对不像标准的HTML那样轻便
- 并有它自己的一套问题。
但是这是一个可行的过程的大纲,可以帮助您防止用户进行深度链接。
我想添加一个更哲学的评论。 互联网,特别是万维网的全部意图是共享数据。 如果你不想让人们下载图片/video/文件, 不要把它放在网上 。 这真的很简单。 太多人认为他们可以将自己的规则强加于现有的devise。 那些想要在networking上发布内容并控制其发布的人,正在寻找自己的蛋糕,并且把它吃掉。
正如很多人所说,你不能阻止某人下载内容。 你不能。
但是你可以让它更难。
你可以用一个透明的div
覆盖图像,这将防止人们右键点击它们(或者,设置一个div
的背景到图像将具有相同的效果)。
如果您担心交叉链接(即其他人链接到您的图片,您可以检查HTTP引荐来源,并将来自不属于您的域的请求redirect到“其他”。
这也不会伤害水印您的图像与Photoshop甚至Lightroom 3现在。 确保水印是清晰的,并在您的图像显眼的地方。 这样,如果下载,至less你得到的广告!
由于浏览器需要传输内容以显示它(文本,图像,video),所以当显示网站时,数据已经在客户端计算机上。 然而,由于以前的答案几乎没有build议如何让非经验丰富的人用来抓取内容,下面是一些方向:
- 一般
- 用透明的
<DIV>
或透明的图像覆盖分类的内容(如在这个问题的一些答案中所述) - 打开框架中的网站,所以保存可能会错过框架内容。
- 通过
window.open()
打开网站来隐藏菜单栏。 - 禁用通过JavaScript右键单击(由于可用性的所有副作用,不推荐)
- 通过JavaScript从另一个文件加载页面的HTML代码(可能会检查特定的引用程序或可能是ROT13),因此访问源代码更加困难。
- 告诉浏览器所有的内容都是
display:none
打印机(类似于@media print { body, div, p { display: none } }
) - 在客户端制作屏幕截图之前使用JavaScript隐藏内容(请参阅停止用户使用“Print Scrn” )
- 尝试禁用或覆盖剪贴板(见这篇文章 )
- 用透明的
- 图片
- 不要对图像使用
<img>
标签,而是将图像设置为<DIV>
背景 - 将图像封装到SVG或Flash电影中,使其很难以可用的格式访问。
- 禁用图片caching(通过
<meta>
标签或通过在服务器传递上设置适当的头部),所以它们不会被存储在浏览器caching中(客户端计算机上无法访问)。 - 将图像切分为多个部分,因此重build整个图像需要一些额外的工作
- 添加
onmousedown
事件的图像,例如,显示版权警报。 - 通过服务器脚本(例如PHP)传送图像并检查引用者。
- 不要对图像使用
- 影片
- stream式传输video,以防止通过URL简单下载。
- 将video包装到Flash电影中。
- 使用一些支持DRM的令人讨厌的格式。
- 文本
- 使文本不可选(请参阅如何使HTML文本不可选 )
- 除了覆盖之外,还可以将文本包装到JavaScript中(例如,在ROT13之后或者从第二个文件中dynamic加载),所以文本不能直接在源代码中使用。
- 将文本转换为图像(这可能会降低显示质量),SVG或Flash
我再说一遍,这些都不会阻止有经验的用户抓取内容(例如,通过制作一个屏幕上的商店和 – 可选地运行OCR)。 有时使用浏览器的开发者工具或者在不使用JavaScript的情况下使用网站就简单了。 然而,它会给没有经验的用户一个很难的时间,所以他们可能会看起来更容易抓住。
另外请记住,上述技术会影响search引擎在阅读网页内容时(如果您有兴趣阻止它们,请以robots.txt
开头)。
感谢您的任何其他想法,以补充上述名单!
你可以减less的可能性,但不能消除它…
如果您使用的是PHP,最好的办法是控制.htaccess
,您需要将文件,图像和video置于一个单独的文件夹/目录下,然后在下面的目录中创build一个新的.htaccess
文件:
RewriteEngine On RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC] RewriteCond %{HTTP_REFERER} !^http://sample.com/.*$ [NC] RewriteRule ^.* - [F,L]
第一行%{REQUEST_URI}
将阻止通过Web浏览器或通过curl
获取文件。 第二行%{HTTP_REFERER}
将阻止除了例外以外的任何网站使用HTML标记<img>
或<video>
访问图像/video!
你提供,而不是http://sample.com/
通常应该是你的网站本身。
你也可以看看我的问题和接受的答案,在浏览器端更多的技巧。
不,这不对。 你可以阻止右键单击和相似的东西,但如果有人想下载,他会这样做,相信我;)
只要他们查看包含图片或video的页面,该项目就会下载到浏览器的临时文件夹中。 所以如果你不想下载它,不要发布它。
您可以标记文件夹或文件,使其不具有读取权限(任何主要Web服务器均支持此function)。 这使您可以将它们存储在服务器上,而无需对外界进行任何级别的访问。 如果您有一项服务为其他人生成图像以供稍后下载,或者您使用Web帐户进行FTP访问,但不希望任何人查看文件,则可能需要执行此操作。 (即上传一个.bak文件到服务器,让其他人再次FTP)。
但是,正如其他人所说,虽然有一些工具可以阻止非法使用,但进入人们可以查看图像或video而不是在本地保存的版权区域并不完全可能。
把你的图像或video以Flash格式。 很好用。
这是我如何做,以防万一未来的人想知道。
我把它放在根服务器上的.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,然后从那里保存。
这是一个旧post,但对于video,您可能需要考虑使用MPEG-DASH来混淆文件。 另外,它将为您的用户提供更好的stream式体验,而无需单独的stream媒体服务器。 在这篇文章中的更多信息: 如何禁用网页中的video/audio下载?
当然,用户可以看到的任何图像都可以保存在计算机上,您无法做任何事情。 现在,如果你想阻止访问其他图像,用户不应该看到,我其实是这样做的:
- 每一个链接都是在你的图片标签中的“src”,实际上是一个请求发送到服务器上的一个控制器,
- 服务器检查该特定用户的访问权限,并且如果用户应该访问该图像则返回该图像,
- 所有图像都存储在不能从浏览器直接访问的目录中。
效益:
- 用户将无法访问任何您无意访问的内容
退税:
- 这些请求是缓慢的..尤其是在同一页上有很多图像。 事实上,我还没有find一个好的方法来加速这一点。
您可以将图像设置为背景图像并具有透明的前景图像。
我认为最好的方法是:在分离的encryption部分中传播video。
有video托pipe服务,如vzaar有这个function。 据我所知,这将直接下载真的很难。 至less95%的人。
但当然,如果video在屏幕上播放,人们可以使用屏幕录像机和一些简单的软件从audio输出中录制声音(但他/她将不得不播放整个东西来保存,非常不方便)。
你不能停止图像/video盗窃,但你可以使普通用户更难,但你不能像我们这样的程序员(我的意思是盗窃,知道一点networking编程)难。
有一些技巧,你可以尝试:
1.)使用Flash作为YouTube和许多其他网站,如http://www.funnenjoy.com 。
2)分区重叠或背景图片设置(但用户很less意识可以通过打开检查元素或其他开发人员选项轻松保存所有资源)。
3.)您可以禁用右键单击和特定的键,如CTRL + S和其他可能的JavaScript,但主要的缺点是,如果用户禁用JavaScript我们所有的技巧失败。
4.)将图像保存在非在线目录中(如果您有完全访问Web服务器的权限),并且每次需要图像/video时都要使用服务器端语言(如PHP)读取该文件,并随时更改图像ID或创build可自动执行的脚本每次访问后更改ID。
5.)在Apache中使用.htaccess来阻止其他站点链接你的图片。 您可以使用此网站自动生成.htacess http://www.htaccesstools.com/hotlink-protection/
在<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; }
这将删除页面上的任何点击function,但它确实会阻止人们窃取任何内容!
您可以将相同的名称应用于<div>
, <section>
, <article>
等,只是相应地命名并防止您的副本和/或图像被撕掉。
没有什么能阻止一个screengrab,虽然……
如果您只想要授权用户获取内容,则客户端和服务器都需要使用encryption。
对于video和audio,一个好的解决scheme是Azure媒体服务,它具有内容保护和encryption。 您将Azure媒体播放器embedded到浏览器中,并从Azurestream式传输video。
对于文档和电子邮件,您可以查看使用特殊客户端的Azure权限pipe理。 目前,它不能在普通的网页浏览器上运行,除了一次性的一次性代码外。
不过,我不确定这究竟有多安全。 正如其他人所指出的那样,从安全angular度来看,一旦下载的字节在“攻击者”的RAM中,它们就好像已经消失了一样。 在这种情况下,没有解决scheme是100%安全的(请纠正我,如果我错了)。 和大多数安全一样,目标是让它变得更难,所以99%的人不打扰。