0
点赞
收藏
分享

微信扫一扫

.NetCore gRpc 客户端与服务端的单工通信Demo

简介

robots.txt 文件是网站对搜索引擎抓取工具1的抓取行为的规则声明。robots.txt文件中写明了什么搜索引擎抓取工具可以做什么事。它就类似于学校的学生行为规范。

robots.txt 的作用

robots.txt 主要用于限制抓取工具对资源访问。例如不想让抓取工具抓取不重要或者相似的网页。

robots.txt 的不足

需要注意的是,robots.txt 并不能完全阻止网页被收录。原因如下:

  • 并非所有的搜索引擎都支持 robots.txt。robots.txt文件中的命令并不能强制规范抓取工具对网站采取的行为;是否遵循这些规范由抓取工具自行决定。一般的,正规的搜索引擎抓取工具都会遵循 robots.txt 文件中的规则。
  • 不同的搜索引擎抓取工具会以不同的方式解析语法。需要为不同的搜索引擎抓取工具编写不同的语法。
  • 如果其他网站上有链接指向被 robots.txt 文件屏蔽的网页,则此网页仍可能会被编入索引。阻止网页被收录的正确做法应该是为服务器上的文件设置密码保护、使用 noindex 元标记或响应标头,或者彻底移除网页。

创建 robots.txt

对robots.txt有了初步了解后,接下来就是创建robots.txt。
创建robots.txt步骤非常简单:编写 robots.txt 文件,然后将写好的robots.txt文件上传的服务器的正确位置即可

第一步:编写 robots.txt

先来了解 robots.txt 的构成:

robots.txt 是由一条条规则组成的。创建robots.txt,也就是编写robots.txt规则然后将编写好的文件保存为纯文本文件。

下面是一个适用于Google的robots.txt文件,其包含两条规则:

User-agent: Googlebot
Disallow: /nogooglebot/

User-agent: *
Allow: /

其含义如下

  1. 名为 Googlebot 的用户代理(即,Google的抓取工具)不能抓取任何以 http://example.com/nogooglebot/ 开头的网址。
  2. 其他搜索引擎抓取工具均可抓取整个网站。不指定这条规则也无妨,结果是一样的;默认行为是搜索引擎抓取工具可以抓取整个网站。

robots.txt 的基本指令

一条规则主要由User-agentallowdisallow三个指令组成:

指令是否必需数值类型描述
User-agentrequired(每条规则需含一个或多个)[name]指定了规则适用的抓取工具。必须在 allow/disallow的前面。指定多个抓取工具时可以列举多个 User-agentUser-agent: *表示匹配所有的抓取工具。
allowoptional(每条规则需含至少一个或多个 disallowallow 条目)[path]其值为路径/目录(相对于根网域)。用于指定允许访问的目录与网页。如果指定的是网页,则必须提供浏览器中显示的完整网页名称且必须以 / 字符开头;如果指定的是某个目录,则必须以 / 标记结尾。区分大小写
disallowoptional(每条规则需含至少一个或多个 disallowallow 条目)[path]其值为路径/目录(相对于根网域)。用于指定禁止访问的目录与网页。如果指定的是网页,则必须提供浏览器中显示的完整网页名称且必须以 / 字符开头;如果指定的是某个目录,则必须以 / 标记结尾。区分大小写
sitemapoptional(每个文件可含零个或多个 sitemap 条目)[absoluteURL]其值为绝对路径。用于指出网站的站点地图的位置。

举例:

user-agent: otherbot
disallow: /kale

sitemap: https://example.com/sitemap.xml

规则分组

一般来说,一个user-agent指令搭配allow/disallow就组成了一条规则。如

# 规则一
user-agent: e
disallow: /g

# 规则二
user-agent: f
disallow: /g

不过,上面两个规则是可以组合在一块写的:

# 规则一与规则二合并成一组
user-agent: e
user-agent: f
disallow: /g

即,将具有相关规则的user-agent指令写在一块,组成规则组

事实上,一条user-agent的规则也是一个规则组,它是最小、最基本的规则组。

又如:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

user-agent: h

上面示例中有四个不同的规则组:

  • 用户代理“a”为一组
  • 用户代理“b”为一组
  • 用户代理“e”和“f”为一组
  • 用户代理“h”为一组

robots.txt 编写说明

第二步:将 robots.txt 放置到服务器的正确位置

写好 robots.txt 后,剩下的就是将 robots.txt 放置到服务器的正确位置——robots.txt文件必须位于其要应用到的网站主机的根目录下,且文件名必须是robots.txt

基于上面的要求,可以得出如下几个要点:

  • 文件必须命名为robots.txt
  • 网站只能有1个robots.txt文件
  • robots.txt 文件必须位于其要应用到的网站主机的根目录下。例如,若要控制对 https://www.example.com/ 下所有网址的抓取,就必须将 robots.txt 文件放在 https://www.example.com/robots.txt 下,一定不能将其放在子目录中(例如 https://example.com/pages/robots.txt 下)。

搜索引擎对robots.txt的处理

用户代理的优先顺序

如果 robots.txt 文件中有多个规则组与特定抓取工具相关,则 Google 抓取工具会在内部合并这些组。如:

user-agent: googlebot-news
disallow: /fish

user-agent: *
disallow: /carrots

user-agent: googlebot-news
disallow: /shrimp

抓取工具会自动合并并分组:

user-agent: googlebot-news
disallow: /fish
disallow: /shrimp

user-agent: *
disallow: /carrots

规则的优先顺序

匹配 robots.txt 规则与网址时,抓取工具会根据规则路径的长度使用最具体的规则。如果规则(包括使用通配符的规则)存在冲突,Google 将使用限制性最弱的规则。

参考文章

  • 《Robots.txt 简介与指南 | Google 搜索中心 | 文档 | Google Developers》
  • 《创建并提交 robots.txt 文件 | Google 搜索中心 | 文档 | Google Developers》
  • 《Google 如何解读 robots.txt 规范 | 文档 | Google Developers》

  1. 搜索引擎抓取工具是一种由搜索引擎公司开发的自动访问网站并收录网站的脚本机器人。俗称爬虫。 ↩︎

举报

相关推荐

0 条评论