我们的网站上或多或少存在一些页面涉及到网站的敏感信息不希望在搜索引擎上公开;还有一些页面是根本没必要被搜索引擎收录的:比如网站的管理后台入口。对于SEOER而言有一些页面如果被收录后反而会影响关键词着陆页的排名,或者降低了着陆页的转化率,比如电子商务网站的商品评论页。那么我们通过什么样的方法可以限制搜索引擎收录此类页面呢?
1994年6月30日,在经过搜索引擎人员以及被搜索引擎抓取的网站站长共同讨论后,正式发布了一份行业规范,即robots.txt协议。这个协议既非法律,也非命令,而是一个自律性的契约,需要各种搜索引擎自觉去遵守这个协议。这个协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
当一个网络爬虫访问一个站点时它会首先检查该站点根目录下是否存在robots.txt;如果没有对网站的robots协议进行设置,则爬虫会尽可能的收录所有能够访问到的页面,而如果存在该robots协议文件,爬虫则会遵守该协议,忽略那些不希望被抓取的页面链接,下面我们以http://www.baidu.com/robots.txt为例:
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
百度是不希望谷歌搜索引擎的Googlebot爬虫收录/baidu 、/shifen 、/homepage/ 、/cpro 目录下以及所有/s开头的搜索结果页面的。
User-agent:表示爬虫的名字
Allow:表示允许爬虫访问的页面
Disallow:是指禁止爬虫访问的页面
Visit-time:只有在visit-time指定的时间段里,robot才可以访问指定的URL
Request-rate: 用来限制URL的读取频率
除了上述robots.txt文件之外,我们还可以针对每一个页面,在网页的原信息中设置该页面是否允许被收录:
noindex: 不索引此网页
nofollow:不通过此网页的链接索引搜索其它的网页
none: 将忽略此网页,等价于“noindex,nofollow”
index: 索引此网页
follow:通过此网页的链接索引搜索其它的网页
all: 搜索引擎将索引此网页与继续通过此网页的链接索引,等价于index,follow。
举例〈meta name=“Baiduspider” content=“none" /〉是不允许百度蜘蛛索引该页面,并且不允许爬行该页面中的所有链接。
还有一种方法,就是在超级链接的rel属性中填写“nofollow”,形如〈a rel=”nofollow” href=”*”〉超级链接〈/a〉,表示搜索引擎不要跟踪链接。
但是所有上述方法都是基于Robot的自律性协议,并非强制执行的法律法规。如果遇到不遵守该协议的网络爬虫疯狂的抓取网站页面并对网站性能产生了严重影响,更为有效的方使用入侵检测系统(IDS)入侵防护系统(IPS)网络设备。