盗链、防盗链与网站可用性
图片防盗链(也包括其他类型的文件如音频、视频等)机制的目标在于保护自己的服务器资源特别是网络带宽不被非法滥用,合理的防盗链机制能够让网站有效地远离不法网站的侵扰,让网站资源最大限度地为自己的访问用户服务,而不是不知不觉地默默为其他网站作贡献。同时,必须注意的是,任何防盗链机制都不是百分之百“可靠”的,事实上,大多数网站的防盗链设置都是在保护自己不受盗链网站的侵害与保证网站可用性之间寻得一个可以接受的平衡点,而网站自身的可用性则显然应放在第一位,开句玩笑说,最有效的防盗链机制,恐怕是拒绝一切http请求 ,那样,无论其他网站采用怎样的手段,也无法使用您的图片以及带宽,但这也会让自己的网站不可用。
另一方面,防盗链技术自身,从来不是也不可能是网站保护自己版权的手段。简单地说,只要网页面向公众发布,只要网页能够被“看”到,无论采用怎样的“保护”机制,剽窃者总是有办法将您的内容包括网页上的各种元素收为已有的,尤其在一个法律失位道德混乱的国度,“聪明人”总是不断涌现的,各种手段总是层出不穷的。而我们之所以RSS Feed 改为全文输出中做那样的说明,是因为:1、表明我们对抓虾处理Feed的方式“不认同不合作”的立场;2、在检查我们自己的Feed中抓虾中的显示情况时,确实可以看到图片防盗链机制能够起作用,整个页面被一贴贴“膏药”弄得支离破碎,会在很多程度影响用户的阅读体验,提请潜在的订阅用户如果可能的话尽量不要使用抓虾订阅我们的Feed。
抓虾对防盗链的“破解”
我们前面两篇文章中关于抓虾的讨论部分,果然再次验证了我的不学无术与孤陋寡闻 。一位署名“Name”的朋友留言说:
从技术角度来说,你这个根本防不住
看下面的链接
http://www.zhuaxia.com/readpic.php?url=http://blogsdiy.org/wp-includes/images/smilies/icon_redface.gif
抓虾对防盗链的图片,可以通过服务器抓取来显示
检查了一下,果然!我们的防盗链设置对此无能为力。
再次查看我们的Feed在抓虾中的对应页面,如《RSS Feed 改为全文输出》一文在抓虾中对应的“http://www.zhuaxia.com/item/392061212”,可以看出抓虾并没有对我们的图片采用类似的处理,即未在图片文件url前添加诸如“http://www.zhuaxia.com/readpic.php?”的字串,设想中的“补丁”效果仍是存在的。
很显然,抓虾并不是对所有博客feed中的图片文件url都进行类似的转换处理。那么,哪些博客有幸“中选”呢?
在抓虾好看中着实找了半天——至少又为抓虾贡献了半个小时左右的停留时间与数量不小的PageViews,呵呵——不得要领,直到后来找了个名人博客(当然,新浪的)才发现,Feed中的图片url果然被重新“包装”了,只是其添加的字符串不是上面所言之“http://www.zhuaxia.com/readpic.php?”而且“http://img.zhuaxia.com/readpic.php?”,看来“readpic.php”是抓虾的一个相当重要的文件,位于多个Server上。
从抓虾的角度,也许这样的方式能够让用户浏览时获得较佳的访问体验,避免图片不能显示或显示一个盗链警告之类的图片带来的影响,一切都是“为了用户” 。
深入搜索后得知,原来抓虾的这项技术早已是公开的“秘密”,如这篇如何引用网易、新浪、百度相册上的图片,可以看出抓虾在很大程度上促进了中国互联网领域的开放,极大地冲击了各大门户网站荒谬的“闭关锁国”政策 。也许,抓虾应该大张旗鼓地推广这项服务,肯定会大受欢迎,只不过,盈利点如何寻找则仍然需要抓虾动动脑筋。
防盗链与网站可用性
抓虾在“readpic.php”采用了哪些高深的技术,是不学无术的我懒得研究的——当然,以我的能力,也研究不出个所以然来,——但看到“Name”的提醒后,直觉的第一反应便是可能利用我们防盗链设置中允许空“HTTP_REFERER”访问的漏洞,毕竟,这是所谓的破解防盗链最简单的解决方案。
于是,将 .htaccess 文件中的这一行屏蔽(具体设置可参考Apache下防止图片盗链中的介绍或找份Apache手册看一下)
RewriteCond %{HTTP_REFERER} !^$
将 .htaccess 上传后,再用“http://www.zhuaxia.com/readpic.php?图片url”测试,果然,图片已经不能显示。
但从网站可用性角度看,任何网站都不可能要求必须具有“HTTP_REFERER”才能访问:这会带来很多问题。空“HTTP_REFERER”的情况不仅发生在用户在浏览器地址栏中直接输入图片地址时,也包括其他很多场景,比如说用户通过某些代理服务器访问时,比如说通过收藏访问时,甚至当特定的隐私设置时也会发出空“HTTP_REFERER”的访问请求。
两害择其轻,因此,目前我们的防盗链设置对于抓虾包括使用抓虾提供这项“服务”调用我们图片的情况仍然是“门户大开”的。
对抓虾破解防盗链的疑问
声明:如果您已经厌烦了抓虾了话题,请略过下面的内容。说老实说