Robots合同探究:如何好好借助爬虫提升网站权重
优采云 发布时间: 2020-06-17 08:02Baiduspider-favo
百度联盟
Baiduspider-cpro
上午搜索
Baiduspider-ads
Disallow列举的是要屏蔽(禁止搜索引擎访问)的网页,以正斜线 / 开头。
如要屏蔽整个网站,直接使用正斜线即可;
User-agent: *
Disallow: /
屏蔽某个特定的目录以及其中的所有内容,则在目录名后添加正斜线;
User-agent: *
Disallow: /admin/
Disallow: /doc/app
使用 "*" and "$" :Baiduspider支持使用转义 "*" 和 "$" 来模糊匹配url。
"*" 匹配0或多个任意字符
"$" 匹配行结束符。
屏蔽以 plug- 开头的所有子目录:用到 *
User-agent: *
Disallow: /plug-*/
屏蔽 php 结尾的文件:用到 $
User-agent: *
Disallow: /*.php$
屏蔽某个具体的页面:
User-agent: *
Disallow: /admin/index.html
屏蔽所有的动态页面:
User-agent: *
Disallow: /*?*
禁止个别爬虫访问
已屏蔽 Badbot 为例:
User-agent: BadBot
Disallow: /
只容许某个爬虫访问
以百度爬虫为例:
User-agent: Baiduspider
Disallow:
User-agent: *
Disallow: /
或者:
User-agent: Baiduspider
Allow: /
User-agent: *
Disallow: /
允许所有的robots访问
User-agent: *
Disallow:
或者是:
User-agent: *
Allow: /
或者也可以建一个空文件 "/robots.txt"。
屏蔽网站中的图片、视频等文件:
User-agent: *
Disallow: /*.jpg$
Disallow: /*.png$
Disallow: /*.bmp$
Disallow: /*.mp4$
Disallow: /*.rmvb$
只准许访问 .html 结尾的 url
Allow: /*.html$
User-agent: *
Disallow:
我们再来结合两个真实的范例来学习一下。
先看这个事例:
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
这个是淘宝网的Robots协议内容,相信你早已看下来了,淘宝网严禁百度的爬虫访问。
再来看一个事例:
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
User-agent: EtaoSpider
Disallow: /
这个稍稍复杂点,京东有2个目录不希望所有的爬虫来抓。同时怎么利用爬虫技术 提高网站排名,京东完全屏蔽了一淘网的蜘蛛(EtaoSpider是一淘网的蜘蛛)。
前面说过爬虫会通过网页内部的链接发觉新的网页。但是若果没有联接指向的网页怎样办?或者用户输入条件生成的动态网页怎样办?能否使网站管理员通知搜索引擎她们网站上有什么可供抓取的网页?这就是sitemap,最简单的 Sitepmap 形式就是 XML 文件,在其中列举网站中的网址以及关于每位网址的其他数据(上次更新的时间、更改的频度以及相对于网站上其他网址的重要程度等等),利用这种信息搜索引擎可以愈发智能地抓取网站内容。
新的问题来了,爬虫如何晓得这个网站有没有提供sitemap文件,或者说网站管理员生成了sitemap,(可能是多个文件),爬虫如何晓得放到那里呢?
由于robots.txt的位置是固定的,于是你们就想到了把sitemap的位置信息置于robots.txt里。这就成为robots.txt里的新成员了。
节选一段google robots.txt:
Sitemap:
Sitemap:
插一句,考虑到一个网站的网页诸多,sitemap人工维护不太靠谱,google提供了工具可以手动生成sitemap。
其实严格来说这部份内容不属于robots.txt。
robots.txt的本意是为了使网站管理员管理可以出现在搜索引擎里的网站内容。但是,即使使用 robots.txt 文件使爬虫未能抓取那些内容,搜索引擎也可以通过其他方法找到这种网页并将它添加到索引中。例如,其他网站仍可能链接到该网站。因此,网页网址及其他公开的信息(如指向相关网站的链接中的定位文字或开放式目录管理系统中的标题)有可能会出现在引擎的搜索结果中。如果想彻底对搜索引擎隐身那咋办呢?答案是:元标记,即meta tag。
比如要完全制止一个网页的内容列在搜索引擎索引中(即使有其他网站链接到此网页),可使用 noindex 元标记。只要搜索引擎查看该网页,便会听到 noindex 元标记并制止该网页显示在索引中,这里注意noindex元标记提供的是一种逐页控制对网站的访问的形式。
要避免所有搜索引擎将网站中的网页编入索引,在网页的部份添加:
<meta name="robots" content="noindex">
这里的name取值可以设置为某个搜索引擎的User-agent因而指定屏蔽某一个搜索引擎。
除了noindex外,还有其他元标记,比如说nofollow,禁止爬虫自此页面中跟踪链接。详细信息可以参考Google支持的元标记,这里提一句:noindex和nofollow在HTML 4.01规范里有描述,但是其他tag的在不同引擎支持到哪些程度各不相同,还请读者自行查阅各个引擎的说明文档。
除了控制什么可以抓什么不能抓之外,robots.txt还可以拿来控制爬虫抓取的速度。如何做到的呢?通过设置爬虫在两次抓取之间等待的秒数。
Crawl-delay:5
表示本次抓取后下一次抓取前须要等待5秒。
注意:google早已不支持这些方法了,在webmaster tools里提供了一个功能可以更直观的控制抓取速度。
这里插一句正题,几年前以前有一段时间robots.txt还支持复杂的参数:Visit-time,只有在visit-time指定的时间段里,爬虫才可以访问;Request-rate: 用来限制URL的读取频度,用于控制不同的时间段采用不同的抓取速度。后来恐怕支持的人很少,就逐渐的废黜了,目前google和baidu都早已不支持这个规则了,其他小的引擎公司其实从来都没有支持过。
Robots协议不是哪些技术壁垒,而只是一种相互尊重的合同,好比私家花园的旁边挂着“闲人免进”,尊重者绕道而行,不尊重者仍然可以推门而入。目前,Robots协议在实际使用中,还存在一些问题。
robots.txt本身也是须要抓取的,出于效率考虑,一般爬虫不会每次抓取网站网页前都抓一下robots.txt,加上robots.txt更新不频繁,内容须要解析。通常爬虫的做法是先抓取一次,解析后缓存出来,而且是相当长的时间。假设网站管理员更新了robots.txt,修改了个别规则,但是对爬虫来说并不会立即生效,只有当爬虫上次抓取robots.txt以后才会看见最新的内容。尴尬的是,爬虫上次抓取robots.txt的时间并不是由网站管理员控制的。当然,有些搜索引擎提供了web 工具可以使网站管理员通知搜索引擎那种url发生了变化,建议重新抓取。注意,此处是建议,即使你通知了搜索引擎,搜索引擎何时抓取一直是不确定的,只是比完全不通知要好点。至于好多少,那就看搜索引擎的良心和技术能力了。
不知是无意还是有意,反正有些爬虫不太遵循或则完全忽视robots.txt,不排除开发人员能力的问题,比如说根本不知道robots.txt。另外,本身robots.txt不是一种强制举措怎么利用爬虫技术 提高网站排名,如果网站有数据须要保密,必需采取技术举措,比如说:用户验证,加密,ip拦截,访问频度控制等。
在互联网世界中,每天都有不计其数的爬虫在日夜不息地爬取数据,其中恶意爬虫的数目甚至低于非恶意爬虫。遵守Robots协议的爬虫才是好爬虫,但是并不是每位爬虫就会主动违背Robots协议。
恶意爬虫可以带来好多潜在恐吓,比如电商网站的商品信息被爬取可能会被竞争对手借助,过多的爬虫都会占用带宽资源、甚至造成网站宕机。
反恶意爬虫是一件漫长而繁重的任务,如果借助自身实力无法解决,可以利用岂安科技的业务风险剖析平台 WARDEN 来反恶意爬虫,根据自己的需求来订制功能。