wget检查robots.txt中是否允许指定的用户代理



如果我为wget指定一个自定义用户代理,例如"MyBot (info@mybot...)"如果机器人被禁止,或者只有一般的机器人排除,我们是否也会在robots.txt中检查这个?

不,如果您指定自己的用户代理,Wget不会在robots.txt文件中检查它。事实上,我相信我在回答你的问题时发现了Wget的另一个bug。即使您指定了自定义用户代理,Wget在解析robots.txt时似乎也会遵循自己的用户代理规则。我已经为此创建了一个测试用例,并将尽快在Wget中修复实现。

现在是你最初问题的权威答案。答案是否定的,因为在Wget的源代码中,您可以在解析robots文件查找规则的函数之前看到以下注释:

/*解析以length开头的文本RES规范。返回一个spec对象,准备被馈送到res_match_path。

解析本身并不重要,但是创建一个正确的SPECS对象却很重要比看起来要复杂得多,因为RES非常复杂尝试正确地实现它。

一个"记录"是一个或多个User-Agent' lines followed by one or more Allow'或Disallow' lines. Record is accepted by Wget if one of the user - agent '行是"wget",或者如果用户代理行"*"

在读取了所有行之后,我们检查是否正确("wget") user-agent字段被指定。如果是,则删除所有的行读在"User-Agent: *"块下,因为我们有自己的Wget-specific块。这使得管理员可以说:

User-Agent: * Disallow:/

User-Agent: google User-Agent: wget禁止:/cgi-bin

这意味着对于Wget和Google,/cgi-bin是不允许的,而对于所有其他爬虫,一切都是不允许的。res_parse是实现使得记录的顺序无关紧要。在这种情况下在上面,"User-Agent: *"可以出现在另一个后面。*/

最新更新