反采集、反蜘蛛的个人心得体会

一、背景 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加时间结合的方法进行访问控制等;...