如果我为wget指定自定义用户代理,例如" MyBot(info @ mybot ...)"如果机器人被禁止,或者只是一般的机器人排除,wget会在robots.txt中检查这个吗?
答案 0 :(得分:1)
不,如果您指定自己的用户代理,Wget不会在robots.txt文件中检查它。事实上,我相信在尝试回答你的问题时,我发现了Wget中的另一个错误。即使您指定了自定义用户代理,Wget在解析robots.txt时也似乎遵循自己的用户代理规则。我为此创建了一个测试用例,并将在Wget ASAP中修复实现。
现在对原始问题进行权威回答。答案是否定的,因为在Wget的源代码中,您会在解析规则的机器人文件的函数之前看到以下注释:
/ *解析以长度为LENGTH的SOURCE开头的文本RES规范。 返回准备送入res_match_path的specs对象。
解析本身很简单,但是创建一个正确的SPECS对象是 比看起来更棘手,因为如果你,RES令人惊讶的拜占庭 试图正确实施它。
“记录”是一个或多个
User-Agent' lines followed by one or more
允许'或Disallow' lines. Record is accepted by Wget if one of the
用户代理'行的块是“wget”,或者如果是用户代理行 是“*”。在阅读完所有行后,我们检查是否确切 (“wget”)指定了用户代理字段。如果是这样,我们删除所有 在“User-Agent:*”块下读取的行因为我们有自己的行 特定于Wget的块。这使管理员能够说:
User-Agent:* Disallow:/
User-Agent:google User-Agent:wget Disallow:/ cgi-bin
这意味着,对于Wget和Google,/ cgi-bin是不允许的,而 对于所有其他爬虫,一切都是不允许的。 res_parse是 实施,以便记录的顺序无关紧要。在这种情况下 在上面,“User-Agent:*”可能是在另一个之后。 * /