【问题标题】:How to exclude all robots except Googlebot and Bingbot with both robots.txt and X-Robots-Tag如何使用 robots.txt 和 X-Robots-Tag 排除除 Googlebot 和 Bingbot 之外的所有机器人
【发布时间】:2019-09-26 17:07:54
【问题描述】:

我有 2 个关于爬虫和机器人的问题。

背景资料

我只希望将 Google 和 Bing 排除在“不允许”和“无索引”限制之外。换句话说,我希望除 Google 和 Bing 之外的所有搜索引擎都遵循“禁止”和“禁止索引”规则。另外,我还想要一个我提到的搜索引擎的“nosn-p”功能(都支持“nosn-p”)。我使用哪个代码来执行此操作(同时使用 robots.txt 和 X-Robots-Tag)?

我想将它作为 X-Robots-Tag 包含在 robots.txt 文件和 htacess 文件中。我了解 robots.txt 可能已过时,但我希望向爬虫提供明确的说明,即使它们被认为“无效”和“过时”,除非您另有想法。

问题 1

我是否获得了以下代码,仅允许 Google 和 Bing 编制索引(以防止其他搜索引擎在其结果中显示),此外,还阻止 Bing 和 Google 在其搜索结果中显示 sn-ps?

X-Robots-Tag 代码(这是正确的吗?不要认为我需要将“index”添加到 googlebot 和 bingbot,因为“index”是默认值,但不确定。 )

X-Robots-Tag: googlebot: nosnippet
X-Robots-Tag: bingbot: nosnippet
X-Robots-Tag: otherbot: noindex

robots.txt 代码(这是正确的吗?我认为第一个是,但不确定。)

    User-agent: Googlebot
    Disallow:
    User-agent: Bingbot
    Disallow:
    User-agent: *
    Disallow: /

    User-agent: *
    Disallow: /
    User-agent: Googlebot
    Disallow:
    User-agent: Bingbot
    Disallow:

问题 2:robots.txt 和 X-Robots-Tag 之间的冲突

我预计 robots.txt 和 X-Robots-Tag 之间会发生冲突,因为不允许函数和 noindex 函数一起工作 (Is there any advantage of using X-Robot-Tag instead of robots.txt?)。我该如何解决这个问题,您的建议是什么?

最终目标

如前所述,这样做的主要目的是明确告诉所有旧机器人(仍在使用 robots.txt)和除 Google 和 Bing 之外的所有较新机器人(使用 X-Robots-Tag)不要显示我的任何页面在他们的搜索结果中(我假设在 noindex 函数中进行了总结)。我知道他们可能并不都遵循它,但我希望他们都知道,除了 Google 和 Bing 不会在搜索结果中显示我的页面。为此,我正在寻找适用于 robots.txt 代码和 X-Robots-Tag 代码的正确代码,这些代码对于我正在尝试构建的 HTML 网站的此功能不会发生冲突。

【问题讨论】:

  • “我知道 robots.txt 可能已过时”:这是从哪里来的?
  • 嘿,unor,我一定是错的。我猜 robots.txt 仍然是指导爬虫的主要标准。我想我错误地认为一切都从 robots.txt 更改为 X Robots Tag。对这一切都很陌生,感谢您为让我走上正轨所做的努力。谢谢你。

标签: html meta-tags robots.txt x-robots-tag


【解决方案1】:

robots.txt 没有过时。它仍然是控制不应抓取内容的唯一开放/供应商无关方式。 X-Robots-Tag(以及相应的meta-robots)是唯一一种与开放/供应商无关的方式来控制不应编入索引的内容。

如您所知,you can’t disallow both 用于相同的 URL。没有办法解决这个问题。如果机器人想要抓取 https://example.com/foo,它(希望)检查 https://example.com/robots.txt 以查看是否允许抓取它:

  • 如果允许抓取,机器人会请求文档,然后才知道不允许对其进行索引。明明已经爬取了文档,还是允许爬取的。

  • 如果不允许抓取,机器人不会请求文档,因此永远不会知道它也不允许对其进行索引,因为它需要抓取文档才能看到 HTTP 标头或 HTML 元素.

robots.txt 中的Noindex 字段可以解决这个冲突,Google 似乎支持它为experimental feature,但你不能指望它会起作用。

因此,您必须选择:您不想出现在其他搜索引擎的结果中(→ X-Robots-Tag),还是不想让其他搜索引擎的机器人抓取您的文档(→ 机器人.txt)。

X-Robots-标签

如果您想针对 所有 个其他机器人(而不是像您的 otherbot 建议的那样列出每个机器人,这实际上是不可能的),您应该使用

X-Robots-Tag: bingbot: nosnippet
X-Robots-Tag: googlebot: nosnippet
X-Robots-Tag: noindex

(我想 Bingbot/Googlebot 会忽略最后一行,因为它们已经匹配了前一行,但可以肯定的是,您可以将 index 添加到两个机器人的行中。)

robots.txt

记录(每条记录以User-agent行开头)需要用空行分隔:

User-agent: *
Disallow: /

User-agent: Bingbot
Disallow:

User-agent: Googlebot
Disallow:

order of the records 无关紧要,除非机器人“侦听”您的 robots.txt 中的多个名称(它将遵循与其名称匹配的第一条记录;并且仅当没有名称匹配时,它才会遵循 @ 987654334@记录)。因此,添加空行后,您的两个 robots.txt 文件都很好。

您也可以为两个机器人使用一条记录:

User-agent: *
Disallow: /

User-agent: Bingbot
User-agent: Googlebot
Disallow:

【讨论】:

  • 嘿 Unor,所以,为什么我不能同时禁止两者是有道理的。我现在也明白“noindex”功能是 Google 的一项实验性功能,我不应该指望它会起作用。感谢您提供详细信息,我很高兴浏览了您与此主题相关的另外 2 篇文章。
  • 我所需要的只是让所有符合要求的机器人(符合 robots.txt 文件)在 robots.txt 文件中第一次寻求权限,如果他们没有找到任何权限(如本例所示)使用 Google 和 Bing 以及您帮助我编写的代码),然后继续访问受 X-Robots-Tag 代码影响的 URL。因此,Bingbot 和 Googlebot(一旦它们到达受 X-Robots-Tag 影响的 URL)就应该遵循“nosn-p”以及如您所建议的“索引”规则。
  • 在我看来,这应该排除所有符合 robots.txt 的爬虫,除了 Googlebot 和 Bingbot(通过 robots.txt),此外,通过 X-Robots-Tag,允许我作为用户使用“nosn-p”和“index”进一步指定 Googlebot 和 Bingbot 权限(使用 robots.txt 允许进入)。这听起来正确吗?感谢您非常详细的回答!非常感谢您的帮助。非常感谢,文斯
  • @VinceJ:是的,通过我的回答中的两个 sn-ps,Googlebot/Bingbot 可以抓取所有内容并索引所有内容(但没有 sn-p)。不允许所有其他机器人抓取任何内容,但允许它们编制索引。
  • 我正在阅读您之前的一篇文章,内容与您之前评论的最后部分内容相同,“不允许抓取文档的机器人仍可能为其编制索引(从未访问过它”。不是所有受人尊敬的机器人在从任何外部位置跟踪和索引之前首先检查 robots.txt,或者甚至是好的机器人在不检查 robots.txt 的情况下抓取页面?让我们假设在这种情况下站点地图连接网站的所有页面.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2014-12-11
  • 2021-05-17
相关资源
最近更新 更多