如何识别搜索引擎爬虫的真伪
相信不少网站对搜索引擎爬虫都是又爱又恨,因为其中不仅有些爬虫不守规矩,还有人冒充爬虫对网站进行疯狂的扫描。
做的比较好的爬虫抓取频率都比较合理,对网站资源消耗比较少,GoogleSpider会根据网页的下载速度等因素进行抓取速度的动态调整,你可以通过WebmasterTools来调整Spider的抓取速度。
Google_Webmaster_Tools_Settings
很多糟糕的网络爬虫,经常并发几十上百个请求循环重复抓取。一个“爬虫”先是将PageNo递增到无穷大——被封,过了4个小时,“爬虫”又回来了,这次程序倒是改进了不少,通过分析网页内部的链接进行抓取,可是没过多久发现总是抓取那几个特定的页面,原来被网页内部链接套住,程序进入了死循环,只能封杀。
网上也出现了很多如何封杀恶意爬虫的方法。常见的就是根据UserAgent中的标识进行识别封杀,但是道高一尺魔高一丈,接下来就有人伪造User-Agent,伪装成各大搜索引擎的爬虫进行抓取。
目前的做法是根据UserAgent进行判断,如果是真正的搜索引擎爬虫,那么就放过;如果发现是伪造的就坚决封杀。剩余的正常UserAgent的访问则通过限制IP并发请求次数来限制。
那么问题就出现了,如何才能正确识别搜索引擎爬虫的真伪,其实一些大型的搜索引擎商都已经提供了相关的方法,那就是反向DNS验证(ReverseDNSLookup)。
拿baiduSpider举个例子:
您可以使用hostip命令反解ip来判断Baiduspider的抓取是否冒充。Baiduspider的hostname以*.baidu.com的格式命名,非*.baidu.com即为冒充。
$host123.125.66.120
120.66.125.123.in-addr.arpadomainnamepointerbaiduspider-123-125-66-120.crawl.baidu.com.
-------------------------------------------------------------------------
Google:http://www.google.com/support/webmasters/bin/answer.py?answer=80553
Yahoo:http://www.ysearchblog.com/2007/06/05/yahoo-search-crawler-slurp-has-a-new-address-and-signature-card/
Bing(MSN):http://cn.bing.com/community/blogs/search/archive/2006/11/29/search-robots-in-disguise.aspx
可喜可贺的是baidu的2个月前爬虫也开始遵守这一“潜规则”,虽然没有在任何网页公开此消息,但经过测试,实际上是可行的。