什么是搜索引擎的Robots协议?Robots协议的写法及使用说明

2015-03-25    分类: 网站建设

什么是Robots协议:

  Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

  Robots协议也称为爬虫协议、爬虫规则、机器人协议,是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。“规则”中将搜索引擎抓取网站内容的范围做了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,而网络爬虫可以据此自动抓取或者不抓取该网页内容。如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些不对搜索引擎开放。

Robots协议的详解:

  Robots协议是Web站点和搜索引擎爬虫交互的一种方式,Robots.txt是存放在站点根目录下的一个纯文本文件。该文件可以指定搜索引擎爬虫只抓取指定的内容,或者是禁止搜索引擎爬虫抓取网站的部分或全部内容。当一个搜索引擎爬虫访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索引擎爬虫就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索引擎爬虫就沿着链接抓取。

  另外,robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。如果搜索引擎爬虫要访问的网站地址是http://www.w3.org/,那么robots.txt文件必须能够通过http://www.w3.org/robots.txt打开并看到里面的内容。

  # robots.txt for http://www.w3.org

  #

  #$Id:robots.txt.v 1.482007/10/1605:3l:15 gerald Exp$

  #

  #Forusebysearch.w3.org

  User-agent:W3C-gsa

  Disallow:/Out-Of-DateUser-agent:W3T_SE

  Disallow:/Out-Of-Date-

  User-agent:MozillaJ4.0(compatible;MSIE6.0;WindowsNT;MSSearch4.0Robot)

  Disallow:

  #W3CLinkchecker

  User-agent:W3C-checklink

  Disallow:

  #excludesomeaccess-controlledareas

  User-agent:*

  Disallow:/Team

  Disallow;/Project

  Disallow:/Web

  Disallow:/Systems

  Disallow:/History

  Disallow:/0ut-Of-Date

  Disallow:/People/all/

  Disallow:/2005/11/Translations/Query

  Disallow:/2000/06/webdata/xslt

  Disallow:/2000/09/webdata/xslt

  Disallow:/2005/08/online-xslt/xslt

  Disallow:/Search/Mail/Public/

  Disallow:/2006/02/chartergen

  具体使用格式如下:

  (1)User.agent:用于描述搜索引擎爬虫的名字。在Robots.txt文件中,如果有多条User-agent记录,说明有多个搜索引擎爬虫会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为木,则该协议对任何搜索引擎爬虫均有效,在Robots.txt文件中,“User-agent:*这样的记录只能有一条。

  (2)Disallow:用于描述不希望被访问到的一个URL。这个URL可以是一条完整的路径,也可以是部分路径,任何以Disallow开头的URL均不会被Robot访问到。

  搜索引擎爬虫必须要遵守Robots协议并执行Web站点的要求。因此搜索引擎爬虫需要有一个分析Robots协议的模块,并严格按照Robots协议的规定抓取Web主机允许访问的目录和网页。

  当然,Robots.txt只是一个协议,如果搜索引擎爬虫的设计者不遵循这个协议,网站管理员也无法阻止搜索引擎爬虫对于某些页面的访问,但一般的搜索引擎爬虫都会遵循这些协议,而且网站管理员还可以通过其他方式来拒绝网络蜘蛛对某些网页的抓取。

  搜索引擎爬虫在下载网页的时候,会去识别网页的HTML代码,在其代码部分会有META标识。通过这些标识,可以告诉搜索引擎爬虫本网页是否需要被抓取,还可以告诉搜索引擎爬虫本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要被跟踪。

  现在一般的网站都希望搜索引擎能更全面地抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面地被抓取到,网站管理员可以建立一个网站地图,即SiteMap。许多搜索引擎爬虫会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么搜索引擎爬虫可以很方便地把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。

Robots协议的约束力:

  “Robots的约束力固然仅限于自律,无强制性,但这不等于说它背后反映的精神,没有法律基础。”中国社会科学院信息化研究中心秘书长姜奇平表示,美国的电子隐私权法就规定“将决定权交给消费者,让其切实有效地授权或者拒绝他人采集和使用其个人信息”,可见遵守规则就是要遵守公平竞争,不是没有强制力就可以不公平竞争。

  例子

  允许所有的机器人:

  User-agent: *

  Disallow:

  另一写法

  User-agent: *

  Allow:/

  仅允许特定的机器人:(name_spider用真实名字代替)

  User-agent: name_spider

  Allow:

  拦截所有的机器人:

  User-agent: *

  Disallow: /

  禁止所有机器人访问特定目录:

  User-agent: *

  Disallow: /cgi-bin/

  Disallow: /images/

  Disallow: /tmp/

  Disallow: /private/

  仅禁止坏爬虫访问特定目录(BadBot用真实的名字代替):

  User-agent: BadBot

  Disallow: /private/

  禁止所有机器人访问特定文件类型:

  User-agent: *

  Disallow: /*.php$

  Disallow: /*.js$

  Disallow: /*.inc$

  Disallow: /*.css$

为什么需要Robots协议:

  互联网上的网页是通过超级链接互相关联起来的,从而形成了网页的网状结构。爬虫的工作方式就像蜘蛛在网上沿着链接爬来爬去,最基本的流程可以简化如下:

  喂给爬虫一堆url,我们称之为种子(seeds);

  爬虫抓取seeds,解析html网页,抽取其中的超级链接;

  爬虫接着抓取这些新发现的链接指向的网页。

  步骤2和步骤3循环往复。

  了解了上面的流程就能发现:对爬虫来说网站非常被动,只有老老实实被抓取的份。

  所以,对于网站的管理者来说,就存在这样的需求:

  某些路径下是个人隐私或者网站管理使用,不想被搜索引擎抓取,比如说日本爱情动作片;

  不喜欢某个搜索引擎,不愿意被他抓取,最有名的就是之前淘宝不希望被百度抓取;

  小网站使用的是公用的虚拟主机,流量有限或者需要付费,希望搜索引擎抓的温柔点;

  某些网页是动态生成的,没有直接的链接指向,但是希望内容被搜索引擎抓取和索引。

  网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。

Robots协议的写法:

  既然网络爬虫在爬取一个网站之前,要先获取到这个文件,然后解析到其中的规则,那么,Robots就必须要有一套通用的语法规则。

  最简单的robots.txt只有两条规则:

  User-agent:指定对哪些爬虫生效

  Disallow:指定要屏蔽的网址

  先说User-agent,爬虫抓取时会声明自己的身份,这就是User-agent,没错,就是http协议里的User-agent。robots.txt利用User-agent来区分各个引擎的爬虫,比如说google网页搜索爬虫的User-agent为Googlebot。

  可能有读者要问了,我怎么知道爬虫的User-agent是什么?你还可以查相关搜索引擎的资料得到官方的数据,比如说百度的爬虫列表是这样的:

  Disallow 行列出的是要拦截的网页,以正斜线 (/) 开头,可以列出特定的网址或模式。要屏蔽整个网站,使用正斜线即可;要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线;要屏蔽某个具体的网页,就指出这个网页。

  下面我们来看一些Robots的具体写法:

  允许所有的robot访问

  User-agent: *

  Disallow:

  或者也可以建一个空文件 "/robots.txt" file。

  禁止爬虫访问所有目录

  User-agent: *

  Disallow: /

  禁止爬虫访问某些目录

  User-agent: *

  Disallow: /a/

  Disallow: /b/

  Disallow: /c/

  禁止某些爬虫访问

  User-agent: BadBot

  Disallow: /

  只允许某个爬虫访问

  User-agent: MangCrawler

  Disallow:

  User-agent: *

  Disallow: /

  我们再来结合两个真实的范例来学习一下。先看这个例子:

  User-agent: Baiduspider

  Disallow: /

  User-agent: baiduspider

  Disallow: /

  这个是淘宝网的Robots协议内容,相信你已经看出来了,淘宝网禁止百度的爬虫访问。

  再来看一个例子:

  User-agent: *

  Disallow: /?*

  Disallow: /pop/*.html

  User-agent: EtaoSpider

  Disallow: /

  这个稍微复杂点,京东有2个目录不希望所有的爬虫来抓。同时,京东完全屏蔽了一淘网的蜘蛛(EtaoSpider是一淘网的蜘蛛)。

Robots.txt以外的内容:

  除了Robots.txt以外,还可以使用Robots Meta来向搜索引擎传递信息,先看示例如下:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"

  content部分有四个选项:index、noindex、follow、nofollow,指令间用“,”分隔。

  共有四种组合:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"

  META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW"

  META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW"

  META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"

  其中:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"可以写成META NAME="ROBOTS" CONTENT="ALL"

  META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"可以写成META NAME="ROBOTS" CONTENT="NONE"

  目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于Robots META标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。例如:

  META NAME="googlebot" CONTENT="index,follow,noarchive"

  表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照。

Robots.txt使用上应注意的一些问题:

  1、每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以你应该在网站中添加一个robots.txt。

  2、如果后台和前台在一个域名下,不希望爬虫抓取后台程序的,可以在Robots.txt明确不让爬虫抓取的目录。但这会不会被某些恶意分子一下子就能够知道后台目录呢?

  3、国内常见搜索机器人的名字

防君子不防小人:

  Robots协议不是什么技术壁垒,而只是一种互相尊重的协议,好比私家花园的门口挂着“闲人免进”,尊重者绕道而行,不尊重者依然可以推门而入。目前,Robots协议在实际使用中,还存在一些问题。

  缓存

  robots.txt本身也是需要抓取的,出于效率考虑,一般爬虫不会每次抓取网站网页前都抓一下robots.txt,加上robots.txt更新不频繁,内容需要解析。通常爬虫的做法是先抓取一次,解析后缓存下来,而且是相当长的时间。假设网站管理员更新了robots.txt,修改了某些规则,但是对爬虫来说并不会立刻生效,只有当爬虫下次抓取robots.txt之后才能看到最新的内容。尴尬的是,爬虫下次抓取robots.txt的时间并不是由网站管理员控制的。当然,有些搜索引擎提供了web 工具可以让网站管理员通知搜索引擎那个url发生了变化,建议重新抓取。注意,此处是建议,即使你通知了搜索引擎,搜索引擎何时抓取仍然是不确定的,只是比完全不通知要好点。至于好多少,那就看搜索引擎的良心和技术能力了。

  ignore

  不知是无意还是有意,反正有些爬虫不太遵守或者完全忽略robots.txt,不排除开发人员能力的问题,比如说根本不知道robots.txt。另外,本身robots.txt不是一种强制措施,如果网站有数据需要保密,必需采取技术措施,比如说:用户验证,加密,ip拦截,访问频率控制等。

  恶意爬虫

  在互联网世界中,每天都有不计其数的爬虫在日夜不息地爬取数据,其中恶意爬虫的数量甚至高于非恶意爬虫。遵守Robots协议的爬虫才是好爬虫,但是并不是每个爬虫都会主动遵守Robots协议。

  恶意爬虫可以带来很多潜在威胁,比如电商网站的商品信息被爬取可能会被竞争对手利用,过多的爬虫还会占用带宽资源、甚至导致网站宕机。

  反恶意爬虫是一件漫长而艰巨的任务,如果依靠自身实力难以解决,可以借助业务风险分析平台来反恶意爬虫,根据自己的需求来定制功能。

新闻标题:什么是搜索引擎的Robots协议?Robots协议的写法及使用说明
文章URL:/news7/34157.html

成都网站建设公司_创新互联,为您提供网站排名网站制作服务器托管软件开发标签优化Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司