使用Robots.txt文件时,用户代理字符串是否必须与我的服务器日志中显示的完全相同?
例如,在尝试匹配GoogleBot时,我可以使用googlebot
吗?
另外,部分匹配会有效吗?例如,只使用Google
?
答案 0 :(得分:3)
至少对于googlebot,用户代理不区分大小写。阅读“用户代理的优先顺序”部分:
https://code.google.com/intl/de/web/controlcrawlindex/docs/robots_txt.html
答案 1 :(得分:2)
(已经answered in another question)
在original robots.txt specification (from 1994)中,它说:
用户代理
[...]
机器人应该自由地解释这个领域。建议不带版本信息的名称不区分大小写的子串匹配。
[...]
但是,如果/解析器的工作方式是另一个问题。您最好的选择是查找要添加的机器人的文档。您通常会在其中找到代理标识符字符串,例如:
Bing:
我们希望网站管理员知道
bingbot
仍然会遵守为msnbot
编写的robots.txt指令,因此您的robots.txt文件不需要进行任何更改。
DuckDuckBot是DuckDuckGo的Web爬虫。它尊重WWW :: RobotRules [...]
Google用户代理(恰当地)
Googlebot
。
用户代理
archive.org_bot
用于我们对网络的广泛抓取。它旨在尊重robots.txt和META机器人标签。
...
答案 2 :(得分:1)
是的,用户代理必须完全匹配。
来自robotstxt.org:“User-agent或Disallow行不支持globbing和正则表达式”
答案 3 :(得分:1)
robots.txt区分大小写,虽然谷歌比其他机器人更保守,并且可能接受其字符串,其他机器人可能不会。
答案 4 :(得分:1)
另外,部分匹配会有效吗?例如,只使用
理论上,是的。然而,在实践中,它似乎是特定的部分匹配或"子串" (如@ unor的答案所述)匹配。这些特定的"子串"似乎被称为"令牌"。对于这些"令牌"通常必须是完全匹配。
对于标准Googlebot,这似乎只与Googlebot
匹配(不区分大小写)。任何较小的部分匹配(例如Google
)都无法匹配。任何较长的部分匹配(例如Googlebot/1.2
)都无法匹配。并且使用完整的用户代理字符串(Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html
)也无法匹配。 (尽管Googlebot在技术上有多个用户代理,但无论如何都不建议匹配完整的用户代理字符串 - 即使它确实有效。)
这些测试是使用Google's robots.txt tester执行的。
参考:
robots.txt
)