禁止搜索引擎爬虫抓取网站方法小结

本文主要通过查找网上资料,简单总结一下禁止搜索引擎爬虫抓取网站的方法。

一般情况,大家都是希望搜索引擎爬虫尽可能多的抓取自己的网站,但有时也需要告诉爬虫不要抓取,比如,不要抓取镜像页面等。
搜索引擎抓取自己的网站有它的好处,也存在许多常见问题:
1.网络堵塞丢包严重(上下行数据异常,排除DDOS攻击,服务器中毒。异常下载,数据更新)
2.服务器负载过高,CPU几乎跑满(针对相应的服务配置而定);
3.服务基本瘫痪,路由瘫痪;
4.查看日志发现大量的异常访问日志

一、先查看日志
以下以ngnix的日志为例
cat logs/www.ready.log |grep spider -c (看有爬虫标志的访问次数)
cat logs/www.ready.log |wc (合计总页面的访问次数)
cat logs/www.ready.log |grep spider|awk '{print $1}'|sort -n|uniq -c|sort -nr (查看爬虫的IP地址来源)
cat logs/www.ready.log |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20(查看爬虫的来源)

二、分析日志
晓得爬虫爬过那些内容,是什么爬虫爬的。什么时候爬的
常见的爬虫:
google蜘蛛: googlebot  www.google.com/bot.html
百度蜘蛛:baiduspider  www.baidu.com/search/spider.html
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver 
msn蜘蛛:msnbot 
altavista蜘蛛:scooter 
lycos蜘蛛: lycos_spider_(t-rex) 
alltheweb蜘蛛: fast-webcrawler/ 
inktomi蜘蛛: slurp 
有道蜘蛛:YoudaoBot www.youdao.com/help/webmaster/spider/
搜狗蜘蛛:Sogou spider www.sogou.com/docs/help/webmasters.htm#07

三、禁止方法
(一)、禁止IP
服务器配置中可以:deny from 221.194.136
防火墙配置中可以:-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 61.33.22.1/24 -j REJECT

缺点:搜索引擎的爬虫可以能部署在多个服务器(多个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, or NL作为结束符),每一条记录的格式如下所示:
"<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! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")
{
     return 403;
}

缺点:只能禁止爬虫抓取域名级别网页。灵活性不足。

猜你喜欢

转载自ssx5210.iteye.com/blog/1569025