Ruby on Rails, Как определить, был ли запрос сделан роботом или поисковым пауком? - PullRequest
15 голосов
/ 04 мая 2011

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

Ответы [ 4 ]

27 голосов
/ 15 февраля 2012

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

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

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

13 голосов
/ 04 мая 2011

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

12 голосов
/ 01 февраля 2016

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

if browser.bot?
  # code here
end

https://github.com/fnando/browser

0 голосов
/ 18 августа 2018

Другой способ - использовать crawler_detect gem:

CrawlerDetect.is_crawler?("Bot user agent")
=> true

#or after adding Rack::Request extension
request.is_crawler?
=> true

Это может быть полезно, если вы хотите обнаружить большое количество различных ботов (более 1000).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...