如何防止用户从我的网站下载图片和视频文件?这有可能吗? 最好的方法是什么?
不,这是不可能的。
如果你能看到它,那么你就可以获得它。
不要将它们发布到您的网站上。
否则就不可能实现。
由于浏览器需要传输内容以显示它(文本、图像、视频),所以当网站显示时,数据已经在客户端计算机上。以前的答案没有提供如何让非有经验的用户难以抓取内容的建议。以下是一些方向:
<DIV>
或透明图片覆盖相应内容(如本问题的某些答案中所述)window.open()
打开网站以隐藏菜单栏。display:none
(类似于 @media print { body, div, p { display: none } }
)<img>
标签,而是将图像设置为 <DIV>
的背景<meta>
标记或在服务器传递时设置适当的标头),这样它们不会存储在浏览器缓存中(立即在客户端计算机上可用)。onmousedown
事件,例如显示版权警告。再次强调,这些措施都无法阻止经验丰富的用户获取内容(例如通过截屏并选择性地对其运行OCR)。有时只需使用浏览器的开发者工具或在没有JavaScript的情况下使用网站即可。然而,它会让没有经验的用户感到困难,因此他们可能会寻找一些更容易获取的来源。
还要记住,上述技术将影响搜索引擎读取页面内容(如果您想阻止它们,请从robots.txt
开始)。
谢谢您提供的其他补充上述列表的想法!
为了让客户端查看图片,必须先下载它们。在许多情况下,视频也是如此。您可以设置代理脚本来提供文件,但这并不能真正解决防止用户获取自己的副本的问题。有关此主题的更全面讨论,请参见问题“如何防止/使下载我的Flash视频变得困难?”
如果您正在使用PHP,最好的方法是通过.htaccess
控制它,您需要将文件、图像和视频放置在一个单独的文件夹/目录中,并在该目录中创建一个新的.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>
从除你提供的例外!
之外的任何网站访问图像/视频,而不是http://sample.com/
,通常应该是你自己网站的地址。
您还可以查看我的问题和被接受的答案这里以获取更多有关浏览器端的技巧。
User-Agent
标头匹配特定的模式(例如,其中包含“Mozilla”)。请注意,curl 可以添加和更改标头,因此这些方法都不是绝对可靠的。 - Barry Carter我想加上一些哲学性的评论。互联网,特别是万维网的整个目的就是分享数据。如果你不希望人们下载图片/视频/文档,请不要将其放在网上。就是这么简单。太多人认为他们可以对现有设计施加自己的规则。那些想要在网上发布内容并控制其分发的人,是希望占得便宜又吃得好。
你可以减少可能性,但不能消除它...