反爬虫技术与搜索引擎的爬虫是矛盾的吗

突发奇想,既然反爬虫技术能够防止爬虫爬取自己网站的内容,那Google、百度等搜索引擎的蜘蛛怎么爬取网站内容呢?

在网站的根目录,通常会存放一个robots.txt,它就是爬虫协议:

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)——维基百科

例如以下这段代码,它允许百度爬取,不允许Google爬取:

User-agent: Baiduspider
Disallow: 
User-agent: Googlebot
Disallow: /
User-agent: *
Disallow: 
Disallow: /bin/
Sitemap: http://domain.com/sitemap.xml

可以从http://tool.chinaz.com/robots/生成robots.txt的文件内容

反爬虫技术与搜索引擎的爬虫是矛盾的吗_第1张图片

例如github,设置了不允许百度爬取,允许Google爬取,因此百度搜索不到github的内容,但是Google却可以 

但无论如何,robots.txt只是一个约定,不存在强制性,爬虫就不一定会遵守。

搜索引擎的爬虫是善意的爬虫,互联网中一半以上的流量都是爬虫创造的,比如说12306的爬虫动辄刷新数万次。对于不遵守robots协议的爬虫,就需要反爬,如何反爬虫呢?

如上面的代码所示,网站可以通过爬虫的UserAgent识别出它是谁,进而进行访问过滤,但是UserAgent可以被伪造,无法单纯起到过滤恶意爬虫的效果。

反爬虫还可以通过IP限制、权限限制(如QQ空间仅好友可见)、频率限制(如访问频率过高则拒绝访问)、使用cookie、设置验证码/滑块等等策略实现。

所以反爬虫技术针对的是恶意爬虫,对于遵守robots协议的搜索引擎,不会进行限制

搜索引擎不遵守robots协议的典型案例:

  • BE违规抓取eBay
  • 360搜索无视robots协议

你可能感兴趣的:(反爬虫技术与搜索引擎的爬虫是矛盾的吗)