ach 2012-06-27
本文主要通过查找网上资料,简单总结一下禁止搜索引擎爬虫抓取网站的方法。
一般情况,大家都是希望搜索引擎爬虫尽可能多的抓取自己的网站,但有时也需要告诉爬虫不要抓取,比如,不要抓取镜像页面等。
搜索引擎抓取自己的网站有它的好处,也存在许多常见问题:
1.网络堵塞丢包严重(上下行数据异常,排除DDOS攻击,服务器中毒。异常下载,数据更新)
2.服务器负载过高,CPU几乎跑满(针对相应的服务配置而定);
3.服务基本瘫痪,路由瘫痪;
4.查看日志发现大量的异常访问日志
一、先查看日志
以下以ngnix的日志为例
catlogs/www.ready.log|grepspider-c(看有爬虫标志的访问次数)
catlogs/www.ready.log|wc(合计总页面的访问次数)
catlogs/www.ready.log|grepspider|awk'{print$1}'|sort-n|uniq-c|sort-nr(查看爬虫的IP地址来源)
catlogs/www.ready.log|awk'{print$1""substr($4,14,5)}'|sort-n|uniq-c|sort-nr|head-20(查看爬虫的来源)
二、分析日志
晓得爬虫爬过那些内容,是什么爬虫爬的。什么时候爬的
常见的爬虫:
google蜘蛛:googlebotwww.google.com/bot.html
百度蜘蛛:baiduspiderwww.baidu.com/search/spider.html
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:msnbot
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler/
inktomi蜘蛛:slurp
有道蜘蛛:YoudaoBotwww.youdao.com/help/webmaster/spider/
搜狗蜘蛛:Sogouspiderwww.sogou.com/docs/help/webmasters.htm#07
三、禁止方法
(一)、禁止IP
服务器配置中可以:denyfrom221.194.136
防火墙配置中可以:-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport80-s61.33.22.1/24-jREJECT
缺点:搜索引擎的爬虫可以能部署在多个服务器(多个IP)上,想完全获得某个搜索引擎的爬虫的全部IP比较困难。
(二)、robot.txt
1.什么是robots.txt文件?
搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。
您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。
2.robots.txt文件放在哪里?
robots.txt文件应该放在网站根目录下。举例来说,当robots访问一个网站(比如http://www.abc.com)时,首先会检查该网站中是否存在http://www.abc.com/robots.txt这个文件,如果机器人找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。
3."robots.txt"文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL,orNL作为结束符),每一条记录的格式如下所示:
"<field>:<optionalspace><value><optionalspace>"。
在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:
User-agent:
该项的值用于描述搜索引擎robot的名字,在"robots.txt"文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在"robots.txt"文件中,"User-agent:*"这样的记录只能有一条。
Disallow:
该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被robot访问到。例如"Disallow:/help"对/help.html和/help/index.html都不允许搜索引擎访问,而"Disallow:/help/"则允许robot访问/help.html,而不能访问/help/index.html。任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在"/robots.txt"文件中,至少要有一条Disallow记录。如果"/robots.txt"是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的。
缺点:当两个域名指向同一个根目录时,如果想允许爬虫抓取其中一个域名的某些网页(A/,等),而想禁止爬虫抓取另外一个域名的这些网页(A/,等),这种方法就不能实现了。
(三)、服务器配置
以nginx服务器为例,可以在域名配置中增加配置
if($http_user_agent~*"qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo!Slurp|Yahoo!SlurpChina|YoudaoBot|Sosospider|Sogouspider|Sogouwebspider|MSNBot|ia_archiver|TomatoBot")
{
return403;
}
缺点:只能禁止爬虫抓取域名级别网页。灵活性不足。
最近,一个名叫 Magi 的搜索引擎成了重点关注对象,据称这个搜索引擎和我们常见的搜索引擎很不一样,有一种程序员们钟爱的 X 冷淡风格。于是我们打开 Magi 看了看。确实,这个页面看着就很让人舒爽。