2

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

背景资料

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

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

问题 1

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

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 函数一起工作(使用 X-Robot-Tag 代替 robots.txt 有什么优势吗?) . 我该如何解决这个问题,您的建议是什么?

最终目标

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

4

1 回答 1

2

robots.txt 没有过时。它仍然是控制不应该被抓取的唯一开放/供应商无关的方式。X-Robots-Tag (和相应的meta- robots)是控制不应该被索引的唯一开放/供应商无关的方法。

如您所知,您不能同时禁止同一个 URL。没有办法解决这个问题。如果机器人想要抓取https://example.com/foo,它(希望)检查https://example.com/robots.txt是否允许抓取它:

  • 如果允许抓取,机器人会请求文档,然后才知道不允许对其进行索引。它显然已经爬取了文档,并且仍然允许对其进行爬取。

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

robots.txt 中的一个Noindex字段可以解决这个冲突,谷歌似乎已经支持它作为实验性功能,但你不能指望它会起作用。

因此,您必须做出选择:您是否希望出现在其他搜索引擎的结果中(→ X-Robots-Tag),或者您是否希望其他搜索引擎的机器人抓取您的文档(→ robots.txt) .

X-Robots-标签

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

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

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

机器人.txt

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

User-agent: *
Disallow: /

User-agent: Bingbot
Disallow:

User-agent: Googlebot
Disallow:

记录的顺序无关紧要,除非机器人“侦听”您的 robots.txt 中的多个名称(它将遵循与其名称匹配的第一条记录;并且只有当没有名称匹配时,它才会遵循该*记录)。因此,添加空行后,您的两个 robots.txt 文件都可以。

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

User-agent: *
Disallow: /

User-agent: Bingbot
User-agent: Googlebot
Disallow:
于 2019-05-10T01:35:04.973 回答