robots.txt 中的 User-Agent 行是完全匹配还是子字符串匹配?

jos*_*ell 6 user-agent robots.txt web-crawler

当爬网程序读取 robots.txt 文件的 User-Agent 行时,它是否尝试将其与自己的 User-Agent 完全匹配,还是尝试将其作为其 User-Agent 的子字符串进行匹配?

我读过的所有内容都没有明确回答这个问题。根据另一个 StackOverflow 线程,这是完全匹配的。

然而,RFC 草案让我相信这是一个子字符串匹配。例如,User-Agent: Google将匹配“Googlebot”和“Googlebot-News”。以下是 RFC 的相关引用:

机器人必须遵守/robots.txt包含 User-Agent 行的第一条记录,该行的值包含机器人的名称标记作为子字符串。

此外,在Googlebot 文档的“用户代理的优先顺序”部分中,它解释了 Google 图片的用户代理“ Googlebot-Image/1.0”与User-Agent: googlebot.

我希望这里能有任何澄清,答案可能比我的问题更复杂。例如,Eugene Kalinin 的节点机器人模块提到在第 29 行拆分用户代理以获取“名称令牌”并与之匹配。如果这是真的,那么Googlebot 的用户代理Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”将不匹配User-Agent: Googlebot

uno*_*nor 5

最初的 robots.txt 规范(1994 年)中,它说:

\n\n
\n

用户代理

\n\n

[\xe2\x80\xa6]

\n\n

机器人应该自由地解释这个领域。建议对不带版本信息的名称进行不区分大小写的子字符串匹配。

\n\n

[\xe2\x80\xa6]

\n
\n\n

机器人/解析器是否以及哪些机器人/解析器符合这一点是另一个问题,并且可以\xe2\x80\x99t 一般性地回答。

\n