當抓取工具讀取robots.txt文件的User-Agent行時,是否嘗試將其與其自己的User-Agent完全匹配,或者是否嘗試將其作爲其User-Agent的子字符串進行匹配?robots.txt中的User-Agent行是完全匹配還是子字符串匹配?
我讀過的一切都沒有明確地回答這個問題。根據另一個StackOverflow thread這是一個完全匹配。
但是,RFC draft讓我相信它是一個子串匹配。例如,「User-Agent:Google」將匹配「Googlebot」和「Googlebot-News」。下面是從RFC相關報價:
機器人必須服從於/robots.txt的第一條記錄包含user-agent行值中包含機器人作爲一個子字符串的名稱標記。
此外,在 「優先級的用戶代理的秩序」 Googlebot的documentation的部分它解釋說,用戶代理谷歌圖片 「的Googlebot圖片/ 1.0」 匹配 「的User-Agent:Googlebot的」 。
我希望這裏有任何澄清,答案可能比我的問題更復雜。例如,Eugene Kalinin的節點機器人模塊提到將用戶代理拆分爲line 29上的「名稱標記」並與之匹配。如果是這樣,那麼Googlebot's User-Agent「Mozilla/5.0(compatible; Googlebot/2.1; + http://www.google.com/bot.html)」將不匹配「User-Agent:Googlebot」。
這是一個艱難的決定。我非常喜歡plasticinsect的答案,但我認爲這是最「正確的」。這聽起來像抓取工具應閱讀robots.txt用戶代理行作爲不區分大小寫的子字符串匹配,但每個應用他們自己的規則,如plasticinsect說。 – josephdpurcell