【问题标题】:Do bots' user agents always have "http" in it?机器人的用户代理中是否总是包含“http”?
【发布时间】:2023-12-27 23:22:02
【问题描述】:

假设所有机器人的用户代理在用户代理字符串中总是有 URL 是否安全? 当然,我会将用户代理与机器人列表进行比较,但这里的想法是先进行初步检查,然后再将其与长列表进行检查。

如果我可以更好地改写我的问题,是否有任何有效的非机器人、非爬虫、非蜘蛛或任何非肮脏的生物在用户代理中有 URL?

【问题讨论】:

  • 你真的想按照这个假设工作吗?
  • @Pekka:我想过滤掉机器人/蜘蛛的访问。
  • @user 看到我不久前的相关问题*.com/questions/1717049/…
  • 感谢 Pekka 的回答和链接 :)
  • @user173457 互联网不是这样工作的。你把内容放上去,人们有权按他们的意愿访问它。你能做的最好的就是保留一个有效的robots.txt

标签: browser web-crawler user-agent bots


【解决方案1】:

假设所有机器人的用户代理在用户代理字符串中总是有 URL 是否安全?

不。看看this bot list,它有很多不显示 URL 的机器人。

如果我可以更好地改写我的问题,是否有任何有效的非机器人、非爬虫、非蜘蛛或任何非肮脏的生物在用户代理中有 URL?

我想不出代理字符串中有 URL 的浏览器,但这绝对是一个危险的假设。请记住,例如,Internet Explorer 附加组件可以将其签名添加到浏览器的用户代理字符串中。你不能保证里面没有网址。

【讨论】:

    【解决方案2】:

    您无法对用户代理字符串做出任何假设。 RFC 1945,10.15 User Agent 部分指定格式,3.7 Product Token 部分指定产品令牌的格式。从这两个中可以看出,用户代理字符串几乎可以是 HTTP 代理想要的任何内容。

    注意:严格来说,在产品令牌中使用 URL 会被视为违反 RFC,因为 / 应被视为产品标识符和产品之间的分隔符版本。

    【讨论】:

    • +1 表示“您无法对用户代理字符串做出任何假设”。