Ruby on Rails,如何确定请求是由机器人还是搜索引擎蜘蛛制作的?

Agu*_*tyo 15 search-engine ruby-on-rails web-crawler ruby-on-rails-3

我有Rails应用程序,记录从每个请求到特定URL的IP地址,但在我的IP数据库中,我发现facebook blok IP如66.220.15.*和Google IP(我建议它来自bot).是否有任何公式可以通过机器人或搜索引擎蜘蛛来确定请求中的IP?谢谢

tri*_*bes 27

由于表现良好的机器人至少通常在它们发送的UA字符串中包含引用URI,例如:

request.env["HTTP_USER_AGENT"].match(/\(.*https?:\/\/.*\)/)
Run Code Online (Sandbox Code Playgroud)

是一种简单的方法,可以查看请求是来自机器人与人类用户的代理.这似乎比尝试匹配综合列表更强大.

  • +1 但是,对于这个聪明的解决方案,请记住 Twitter 不遵循此规则,请改用 `request.env["HTTP_USER_AGENT"].match(/Twitterbot\/1.0/)`。 (2认同)

Rya*_*igg 13

机器人需要(通过常识/礼貌比任何类型的法律更多)向用户代理发送他们的请求.您可以根据需要使用request.env["HTTP_USER_AGENT"]和过滤来检查.


dim*_*sjt 12

我认为你可以使用浏览器宝石检查机器人.

if browser.bot?
  # code here
end
Run Code Online (Sandbox Code Playgroud)

https://github.com/fnando/browser