Я наткнулся на интересную статью из Принстонского университета , в которой представлены отличные идеи для автоматического обнаружения роботов.Идея довольно проста.Люди ведут себя не так, как машины, и автоматический доступ обычно делает вещи не так, как люди.
В статье представлены некоторые базовые проверки, которые можно выполнить в течение нескольких запросов.Вы тратите несколько запросов на сбор информации о том, как клиент просматривает данные, и через некоторое время вы берете все свои переменные и делаете утверждение.Вот что нужно включить:
Движение мыши: робот, скорее всего, не будет использовать мышь и, следовательно, не будет генерировать события движения мыши в браузере.Вы можете подготовить функцию javascript, скажем «onBodyMouseMove ()», и вызывать ее всякий раз, когда мышь перемещается по всей области тела страницы.Если эта функция вызывается, подсчитайте +1 в счетчике сеанса.
Javascript: некоторые роботы не будут тратить время на запуск JavaScript (т. Е. Curl, wget, axel и другая командная строкаинструменты), так как они в основном отправляют конкретные запросы, которые возвращают полезный вывод.Вы можете подготовить функцию, которая будет вызываться после загрузки страницы и считать +1 в счетчике сеанса.
Невидимые ссылки: роботы-гусеницы - это засасывающие машины, которые не заботятся о содержимомвеб-сайта.Они предназначены для того, чтобы нажимать на все возможные ссылки и высасывать все содержимое в зеркальном местоположении.Вы можете вставить невидимые ссылки где-нибудь на вашей веб-странице - например, несколько nbsp;пробелы внизу страницы, окруженные якорным тегом.Люди никогда не увидят эту ссылку, но вы получите запрос по ней, сосчитайте +1 в счетчике сеанса.
CSS, изображения и другие визуальные компоненты: роботы, скорее всего, будут игнорироватьCSS и изображения, потому что они не заинтересованы в предоставлении веб-страницы для просмотра.Вы можете скрыть ссылку внутри URL-адреса, оканчивающегося на * .css или * .jpg (вы можете использовать переписывание Apache или отображения сервлетов для Java).Если к этим конкретным ссылкам обращаются, то, скорее всего, браузер загружает CSS и JPG для просмотра.
ПРИМЕЧАНИЕ: * .css, * .js, * .jpg и т. Д. Обычно загружаются толькоодин раз за страницу в сеансе.Вам нужно добавить уникальный счетчик в конце, чтобы браузер перезагружал эти ссылки каждый раз, когда запрашивается страница.
Как только вы соберете всю эту информацию в течение сеанса в течение нескольких запросов, вы можете сделатьутверждение.Например, если вы не видите активности перемещения javascript, css или мыши, вы можете предположить, что это бот.Это зависит от вас, чтобы эти счетчики учитывались в соответствии с вашими потребностями ... поэтому вы можете программировать их на основе этих переменных любым удобным для вас способом.Если вы решите, что какой-то клиент является роботом, вы можете заставить его решить некоторую капчу, прежде чем продолжить выполнение дальнейших запросов.
Примечание: планшеты обычно не создают никаких событий перемещения мыши.Поэтому я все еще пытаюсь понять, как с ними бороться.Предложения приветствуются:)