Flickr如何防止人们从网站下载图片?

12

想知道Flickr是如何防止人们从其网站下载图片的?他们使用了什么方法?

2个回答

18

在图片上放置透明 .gif 图片。您仍然可以通过查看 HTML 源代码并查找图像的实际 URL 来下载实际图像。

例如,一个随机的图像: http://www.flickr.com/photos/34285128@N00/4300352607/

<img style="position:absolute;top:0px;left:0px;display:block" src="http://l.yimg.com/g/images/spaceball.gif" alt="" width="500" height="366">

这是顶部的透明图像。

<img src="http://farm5.static.flickr.com/4057/4300352607_edcc5a4a9e.jpg" alt="Say It With Flowers by *sido* (back in a few days)." title="" width="500" height="366" class="reflect">

这就是实际的图片,它显示在spaceball.gif下面。


当然,任何有一点经验的人如果想要这张图片,都可以在10秒内绕过它。 - alex

0

不是为了倾销,但从概念上讲,如果您真的想锁定下载图像,您可以(我认为)。使用像asp.net mvc这样的框架,您可以使用唯一密钥标记图像,将密钥存储在内存或其他形式的持久性中,并将其作为文件名传递给客户端。在返回端,在请求文件时,您可以拦截对图像的请求,并执行查找以将其与实际文件匹配的密钥。一旦您拥有文件,您将以适当的元标记作为自定义结果返回图像(至少在mvc中,不确定如何在其他地方执行此操作)。在返回之前,您将结果标记为已查看。

这将需要服务器大量的工作,但如果您与Flickr的透明gif技术结合使用,任何人都需要付出巨大的努力才能夺取图像。

这个想法是一个正常视图会发出单个请求,任何进一步尝试直接查看图像(通过查看源并抓取URL)都将被阻止。

<./threadump>

抱歉,我突然有了一个想法,想要添加到已经回答的问题中(睡眠不足等等)。


任何不遵守缓存规则的客户端(或插件)仍然允许您从缓存中获取文件。如果失败,任何具有缓存或镜像功能的代理都可以保存所有下载的文件。如果最终能够看到该文件,则可以通过某种方式保存它。 - jsoverson
@jsoverson - 是的,你无法完全阻止保存文件。尽管代理服务器上的缓存是静默的(因为每个请求的文件名都是唯一的),但文件仍然被您的计算机接收,因此可以通过缓存进行保存。这不是一个100%抵抗解决方案,但我认为这种方法在大多数情况下仍然很可靠。另一种选择是使用Flash/SL应用程序,通过会话信息向服务器发出远程请求来显示图像。 - Chance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接