蜘蛛抓取影响了我

背景

2002年开始了我的小站,经过朋友们的捧场,每天的流量日渐增长,后来发现每当中午我的空间就不能正常访问了,打电话询问空间服务提供商,原来是空间服务提供商为了节省带宽,给各种类型的用户限制了流量每天断流的情况,告诉我的B型空间每日流量不能超过300M,我问到是什么占用我流量时,空间服务提供商告诉我说大部分流量来源于搜索引擎。可恶的搜索引擎!怎么不让我的网站内容被蜘蛛抓取呢?当时我这么想。后来随着原创文章数的增多,导致文章被转贴、采集、附件经常被盗链,这些也成为了日益需要解决的问题。

基础概念

其实最简单的单元就是程序代码,程序代码构造了程序,比如简单的抓取 wget 程序,比如我要抓取天空软件站的 创新英语单词通 ,直接在命令行:
wget 'http://jlbc.skycn.com/down/recite.rar' --referer='http://www.skycn.com/soft/31870.html'
这样就能抓取到天空软件站的这个软件。很多的程序构造起来,给定了一定的名称,富有更多的功能,这样升级成爬虫或者蜘蛛,又称机器人,像Yahoo! Slurp China,baiduspider,Google bot等等。

解决之道

方案一,环境变量

  • 根据系统环境变量,我们可以指定蜘蛛该收录一些什么不收录一些什么,提高需采集的技术难度。
  • 使用 HTTP_USER_AGENT 指定蜘蛛类型以及识别蜘蛛和非蜘蛛抓取,根据其类型反应出不同的内容;
  • 使用 HTTP_ACCEPT_LANGUAGE 可以识别基本的套接字类抓取以及蜘蛛和非蜘蛛,毕竟采集机器人能识别语种的占少数,像本人的主站点使用的就是这个参数;
  • 使用 HTTP_REFERER 可以侦测盗链状况,如果referer来源不是本站或者指定的站点,跳转或者指向其他页面,本人站点的处理防止图片盗链的方法就是一种高级的利用referer反盗链方法,然后引导到一个字节很小的页面;
  • 使用 REMOTE_PORT 记录蜘蛛的地址,缓存起来,可以直接屏蔽该地址,杜绝采集或者针对搜索引擎进行优化;
  • 使用 HTTP认证 来屏蔽匿名蜘蛛的抓取;

方案二,程序本身控制

  • 深究网站频繁访问以及大量被采集,主要还是自身网站程序原因导致。
  • 更改目录 是一种比较土的办法,但是非常使用有效,编写程序拥有自动在一段时间某个ip频繁访问的情况下,自动更换目录路径,这样减少外界机器人的频繁访问;
  • 提升网站本身的权限 ,比如需要注册ID访问,每个ID对应于不同的权限;或是根据IP加时间结合的方法进行访问控制,或者使用Cookie或者Session手段干扰蜘蛛的正常抓取等;
  • 使用隐藏文字 方式进行干扰,比如用CSS的DIsplay:none,或者直接把字体颜色和背景颜色一致,这样采集者要分离文章需要大量的时间处理,比如我的BBS论坛使用的就是此方式;
  • Javascript 的干扰,目前一般很少有人使用此方式来做站,估计大部分站长考虑到搜索引擎解析Javascript差,担心不会被收录的问题;本人的站点就是比较另类的一个,用JS作为输出,所有的正文全部在JS里面;
  • XML 化的页面是比较难被蜘蛛所识别,特别是Javascript+Xml化后,使用了ajax技术,即保证了速度,又保护了有效的数据,这种类型的网站还没有蜘蛛能够完全的解析,像澳门官方体彩网站;

方案三,网站结构

  • 网站结构可以很大的影响采集以及搜索引擎收录。
  • 网站图片化 早些年,一些很精美的韩国模板都是图片拼成的,像我的日记IKdiary
  • Flash 结构的网站,一些高超的闪客把一些动态页面全部用flash绘制而成,简直就是蜘蛛的克星;
  • 使用非80端口的更安全协议 比如HTTPS协议,虽然成本比较高,但是也是防止匿名蜘蛛抓取的好办法;

后记

  • 从搜索引擎的出发点来看,上面的方法与之背道而驰,不管怎样,我们的目的是做一个站,做站就是做的有特色,保留自己网站上的特色,把精髓奉献给大家,这就是互联网的初衷。而随着互连网的日益壮大,采集已经成为一个普遍的问题,区区已抛砖引玉,把过度蜘蛛抓取的解决的办法一一告诉大家,希望大家能有更多的想法一起讨论噢。

首发:http://club.cn.yahoo.com/mysearch

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on September 11, 2007 8:20 AM.

MT4 正式版终于出土了噢! was the previous entry in this blog.

Python学习 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.