Ruby on Rails, Как определить, был ли запрос обработан роботом или поисковым роботом?

У меня есть приложения Rails, которые записывают IP-адрес с каждого запроса на определенный URL-адрес, но в моей базе данных IP я обнаружил IP-адрес Facebook-блогов как 66.220.15. * и IP-адрес Google (я предлагаю, чтобы он пришел от бота). Существует ли какая-либо формула для определения IP-запроса от робота или поискового робота? Благодаря

Ответы

Ответ 1

Роботы требуются (по здравому смыслу/вежливости больше, чем любой закон), чтобы отправить через Агента-агента по их запросу. Вы можете проверить это с помощью request.env["HTTP_USER_AGENT"] и фильтровать, как вам удобно.

Ответ 2

Так как хорошо выполненные боты, по крайней мере, обычно включают ссылочный URI в строке UA, которую они отправляют, что-то вроде:

request.env["HTTP_USER_AGENT"].match(/\(.*https?:\/\/.*\)/)

- это простой способ увидеть, является ли запрос ботным или пользовательским агентом. Это кажется более надежным, чем попытка сопоставления с полным списком.

Ответ 3

Я думаю, вы можете использовать браузер для проверки ботов.

if browser.bot?
  # code here
end

https://github.com/fnando/browser