Alexa封锁本服务器

我曾经很天真地做了一个Alexa排名查询图片的服务,没想到由于我的博客以及使用该服务的人大量调用这个服务,每次调用一次图片都要连接Alexa服务器,导致我的服务器被 Alexa blocked 了。我的博客下方的Alexa显示图片以及Blog-info-Display插件均受到牵连。

Alexa在页面中给我一个Unblock页面的地址,登上去看到:“We’re sorry but you do not have permission to access data.alexa.com/. Your IP address, XXX.XXX.XXX.XXX, has been blocked due to a possible violation of our Terms of Service.” 果然,我过于频繁的调用让Alexa服务器知道我把Alexa私自二次开发了。Alexa让我去看他们的TOS页面,我自然是看不懂一大堆鸟语,但不用脑子想都知道他们是绝对不允许非授权的调用的,毕竟人家推出了Alexa Web Information Service ,收费的,挺贵的,如果允许免费调用,他的生意也不用做了。

可是我就是不甘心,我还是挺希望每天能看到自己的Alexa排名的,而我又不想用Alexa Toolbar ,至于为什么,大家想也知道,如果你装了一个插件,只为了看到一个6位数字,却严重拖慢网页浏览速度,显示一大堆你不感兴趣的东西,谁会愿意呢?

我决定还是冒着违反Alexa条款的风险,完善我这个Alexa排名查询器。 :) 我做一个查询器只是免费的小工具而已,国内那么多做Alexa查询都靠它来赚钱呢。

想一想应该如何突破这个问题,首先是IP的问题,先前是由于该IP的频繁调用导致被封的,我首先想到的就是国内那些同样做Alexa查询的网站,他们照样应该是更频繁的调用的,为什么不会被封锁?既然Alexa会记录调用次数,那么每天查询的量不要超过Alexa系统上限就应该没有问题的,以我目前的使用情况来看,每天的调用次数应该在500左右,连接500次Alexa服务器而已,不至于那么小气就给封了服务器吧?

“伪造”服务器IP是我第一个想到的方法,查了一下资料,很遗憾,这是一相情愿。服务器页面获得的 “REMOTE_ADDR” ,也就是访客IP地址,是不可能伪造的,这是TCP/IP协议的特点决定的。当客户端与服务器连接时,发出自己的IP地址及HEADER等信息后,到达某个网关,网关会先向这个IP地址再次返回一个确认信息,确认这是一个有效的IP地址,才向服务器进行连接。(这是我看了资料后自己的理解)否则的话,某个别有用心的人,一秒钟内伪造几千万个IP地址对服务器请求,服务器岂不是一下就遭受DDOS攻击了?

伪造IP地址的另一个做法是在HEADER插入”X-Forwarded-For: 127.0.0.1″ 信息,这是一个代理服务器所使用的显示访客真实IP地址的数据,经过测试发现,Alexa服务器并不吃这一套。

既然伪造IP不成,就应该从缓存下手,要知道,现在真正使用这个服务的不过我这个博客而已,既然每次都是调用相同的信息,为何不再服务器缓存信息呢?而且Alexa的数据更新也慢,大约1个星期才更新一次数据,如果了解一下Alexa更新数据的时间,完全可以设置数据的缓存期限,这样做一个服务也就不会因为过多的服务器调用而被封IP了。这个想法我得考虑考虑,说起来实践也不会很难,但很多朋友都可能会说:“你做这个玩意是不是无聊了点”,或“把时间拿来做这个不如做别的有意义点的”,我还真得考虑一下。

还有一个漏洞就是我曾经说过的,Alexa服务器的调用数据里包含了浏览器、系统信息等,很有可能是因为我每次调用的时候放入的都是同一个信息,而且我设置的USERAGENT只是一个普通的Win VISTA+IE7的信息,并没有包含Alexa Toolbar信息,这必然引起了Alexa服务器的怀疑,我想如果我在USERAGENT和URL构造方面伪装得好一点,Alexa服务器可能就拿我没办法了吧,总不能因为“某个访客”24小时在网上逛,就认定他是一个ROBOT吧?这个我还得装一个抓包工具对Alexa工具栏与服务器的通讯好好研究研究 :)

其它:
1.Blog-info-Display插件:如果只是个人使用完全不会影响的,因为这个插件会自动缓存数据的,每3天更新一次数据,不必担心被Block。(如果你的博客恰巧和我在同一个服务器上,还真抱歉 :(
2.Google PR的图片我也是一直这样调用的,但似乎Google这方面放得比较松,因为Google现在有意放宽了PR查询的接口,虽说没有公开的文档说明它的使用方法,但也默认了那么多的PR图片调用,PR查询的网站的存在了。

该文章发布在 Free Talk,标签:, 。收藏该永久链接

有 16 条《Alexa封锁本服务器》的回复

  1. 兰灯 说到:

    真厉害!

  2. Yacca 说到:

    alexa的综合排名现在似乎更新频度比1周略高…我自然而然的又想到缓存图片到本地的想法…

  3. 别用鼠标点我 说到:

    由于心虚加害怕,还是禁用了Blog-info-Display插件。

  4. 流星 说到:

    我从精神上支持你
    继续使用插件
    鄙视鼠标哈

  5. Dianso 说到:

    真是佩服你啊

  6. Chris.Ro 说到:

    我的服务器比你惨了…
    我的朋友是玩.ENT的.
    现在开PHP就抽风.
    导致现在都没解决我的问题呢..

  7. groob 说到:

    我咳。。。看Alexa被你折腾的.

  8. 陌路阑珊 说到:

    看你被Alexa搞得很不爽了吧,^_^
    这个东西其实很不权威很不可信,但是因为没有别的衡量标准,所以它才有了生存发展的空间