当爬虫读取 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 的 User-Agent " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
" 将不匹配User-Agent: Googlebot
。