Blog安装、优化及创收技巧

盗链、防盗链与网站可用性

2007/07/3 | BlogsDiy · 7 回复

汗!刚刚在上篇文章中发誓不再继续有关抓虾的话题,这篇又不可避免地牵涉到抓虾,实在有点翻手云覆手雨的嫌疑 :oops: 。不过,可以辩解的是,本文探讨的重点不再是RSS Feed,而是网站图片防盗链

图片防盗链(也包括其他类型的文件如音频、视频等)机制的目标在于保护自己的服务器资源特别是网络带宽不被非法滥用,合理的防盗链机制能够让网站有效地远离不法网站的侵扰,让网站资源最大限度地为自己的访问用户服务,而不是不知不觉地默默为其他网站作贡献。同时,必须注意的是,任何防盗链机制都不是百分之百“可靠”的,事实上,大多数网站的防盗链设置都是在保护自己不受盗链网站的侵害与保证网站可用性之间寻得一个可以接受的平衡点,而网站自身的可用性则显然应放在第一位,开句玩笑说,最有效的防盗链机制,恐怕是拒绝一切http请求 :D ,那样,无论其他网站采用怎样的手段,也无法使用您的图片以及带宽,但这也会让自己的网站不可用。

另一方面,防盗链技术自身,从来不是也不可能是网站保护自己版权的手段。简单地说,只要网页面向公众发布,只要网页能够被“看”到,无论采用怎样的“保护”机制,剽窃者总是有办法将您的内容包括网页上的各种元素收为已有的,尤其在一个法律失位道德混乱的国度,“聪明人”总是不断涌现的,各种手段总是层出不穷的。而我们之所以RSS Feed 改为全文输出中做那样的说明,是因为:1、表明我们对抓虾处理Feed的方式“不认同不合作”的立场;2、在检查我们自己的Feed中抓虾中的显示情况时,确实可以看到图片防盗链机制能够起作用,整个页面被一贴贴“膏药”弄得支离破碎,会在很多程度影响用户的阅读体验,提请潜在的订阅用户如果可能的话尽量不要使用抓虾订阅我们的Feed。

抓虾对防盗链的“破解”

我们前面两篇文章中关于抓虾的讨论部分,果然再次验证了我的不学无术与孤陋寡闻 :oops: 。一位署名“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上。 :D

从抓虾的角度,也许这样的方式能够让用户浏览时获得较佳的访问体验,避免图片不能显示或显示一个盗链警告之类的图片带来的影响,一切都是“为了用户” :D

深入搜索后得知,原来抓虾的这项技术早已是公开的“秘密”,如这篇如何引用网易、新浪、百度相册上的图片,可以看出抓虾在很大程度上促进了中国互联网领域的开放,极大地冲击了各大门户网站荒谬的“闭关锁国”政策 :P也许,抓虾应该大张旗鼓地推广这项服务,肯定会大受欢迎,只不过,盈利点如何寻找则仍然需要抓虾动动脑筋。

防盗链与网站可用性

抓虾在“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”的访问请求。

两害择其轻,因此,目前我们的防盗链设置对于抓虾包括使用抓虾提供这项“服务”调用我们图片的情况仍然是“门户大开”的。

对抓虾破解防盗链的疑问

声明:如果您已经厌烦了抓虾了话题,请略过下面的内容。说老实说,我也腻歪透了:用了近一周的时间来讨论抓虾,实在有点不务正业,无论如何,博客学堂讨论的主题应该是博客!

如上文所言,抓虾并不是对所有Feed中的图片url都进行重新“封装”——那样,也许抓虾不得不增加服务器了,不符合“付出最小化利益最大化”的基本原则。 :P ——而是有选择性地对特定Feed进行相应的处理,而且,看来也不是通过某种自动机制,比如说根据对方网站是否设置了防盗链而自行“封装”url (疑问:目前有准确的判断算法么?),而更像是由人工维护一个是否进行“二次处理”的列表,根据博客的流行度或受欢迎程度,有选择性地处理。从这个角度看,像博客学堂这样的访问量不大的博客是不必担心的,不过,可以想见的是,如果抓虾类似设置不仅应用于BSP——BSP终归是较易处理的,比如说只须针对新浪设置一下,即包涵位于新浪上的成千上万个博客——还应用于独立博客,这个列表的维护恐怕就不是件轻松的事了。(说明:本人在抓虾中并没有找到针对设置图片防盗链的独立博客也应用这一策略的实例)

抓虾在针对特定的网站比如说新浪应用此策略前需事先征得对方网站的同意么?如果没有,这样的策略,包括上面提及的抓虾允许任何人使用此项“服务”调用本身设置了防盗链的网易、新浪、百度相册上图片的情况,会不会存在某种法律上的隐患?当然,我不懂法律,但人家明明关上了门,尽管门可能简陋了些,但你硬要破门而入,或提供某种破门工具,性质总是不难界定的,而现实生活中的小偷恐怕很难用对方“门实在太破了简直诱惑人犯罪”之类的说法为自己寻找免罪的借口。

虽然,在Internet上,是否观念并不那么明确甚至可能正好是颠倒的,比如说网上有各种“高手”提供名目繁多的“破解”工具,比如说如今连很多所谓的采集软件也都将“破解防盗链”作为卖点,但相对而言,那些还都是遮遮掩掩不能公开见光的,而抓虾,则位于聚光灯下啊。

也许,抓虾事先得到了那些网站的许可,或达成了某种程序的默契,毕竟,抓虾在中文RSS阅读器市场的占有率在那放着,任何一个BSP都不可能将其忽略或“阻止”自己的Feed在其上不能完整显示。不过,我个人很怀疑如果这样的话,那些BSP为什么会同意这样的处理方式?直接在图片服务器上为抓虾打开图片访问许可不就得了么?那不更简单也更有效,同时,还免得抓虾的“readpic.php”广泛传播弄得自己的图片防盗链整个机制形同虚设?从这个角度,揣测抓虾本来便有着对于图片“不管你同不同意,我都要显示”的打算似乎更合乎逻辑。

当然,这些都是推测!

为抓虾说句公道话

尽管到目前为止,我仍认为在RSS Feed 改为全文输出中所下的结论,即抓虾的某些行为“相当不规矩甚至可以说Evil”并不过份——事实上,抓虾对防盗链图片的处理更加深了我们的这种印象——但必须客观地说,与许多光鲜的中文网站相比,抓虾并没有多少出格之处,或者说,抓虾并不比那些网站更“不规矩”、更“Evil”

这是事实,也是现实。

(神啊!饶了我,结束这个话题吧!)

→ 版权声明分类: 随感录 · Web服务器技巧

  • 欢迎订阅博客学堂RSS Feeds

当前共计7 回复 ↓

  • 1 偶爱偶妻 | 2007/07/3 10:15 pm

    MyAvatars 0.2

    其实,我看见的都是“该图片来自博客学堂”从来没见过是什么内容!

  • 2 williamlong | 2007/07/3 10:27 pm

    MyAvatars 0.2

    我的Feed在抓虾下就没有图片显示,在Google reader和bloglines下就显示正常,其实很简单,修改图片路径为相对路径而不是绝对路径就可以了。

  • 3 blogsdiy | 2007/07/3 10:28 pm

    MyAvatars 0.2

    啊?您指的是看不到本站的图片?

  • 4 blogsdiy | 2007/07/3 10:41 pm

    MyAvatars 0.2

    呵呵,月光,写这篇文章前便特意看了您的博客在抓虾中的显示,不过,您的Feed中图片路径也是绝对路径吧?只不过没有域名而矣。
    象这种情况,如果抓虾要对您的博客应用那个手段,我觉得在“封装”图片Url时自动加上域名倒也不是件太复杂的事。只是没找到具体的例子

  • 5 cuthead | 2007/07/8 10:57 am

    MyAvatars 0.2

    呵,搜anti-leech找到这里。你的那篇评论抓虾文章不错。其实在中国除了blogger根本没人关心一个网站一个服务是否盗窃了别人的feed(包括我)。就像国人没人关心迅雷如何盗链华军和天空(它们也自力更生了)。
    不过抓虾的界面实在太恶心。

  • 6 胡戈戈 | 2007/07/15 9:05 am

    MyAvatars 0.2

    本人观点,我还是比较喜欢抓虾的,你的博客很不错,为什么在抓虾上的图片就会看不到呢,快改成看的到的吧,相信你的订阅数会有一个质的飞跃的

TrackBacks ↓

  1. 重剑无锋 » Blog Archive » 转载:博客创建、优化教程全系列

留下您的评论

[→ 留言须知]