strokoff

Детектим ботов на javascript в браузере

Понадобилось мне на работе ловить ботов и другие автоматизированные системы для общения с сайтом, после изучения вопроса, выяснилось, что особого лекарства нет, есть несколько подходов к проверке и я решил их собрать в одном месте. В основе лежат следующие подходы:

  1. Проверка userAgent — просто парсим пользовательский userAgent на наличие всяких bot\phatnom\crawler и т.п. Самое крупное решение доступное на разных языках\платформах это crawler.io. Также крутой парсер UAParser.
  2. Также мы можем проверять из браузера окружение в котором мы запущены с помощью разных «хаков» и обращения к тем свойствам, которые недоступны в обычном браузере. Например window._phantom !== undefined, набор проверок для phantomjs\node\coach\rhino\webdriber\selenium я собрал в один gist.
  3. Проверять поведенческие факторы. движение мышки, скорость ввода, скорость реакции на alert. Т.к. эти методы работают только на временном отрезке, они не подойдут для мгновенной синхронной валидации.

Буду рад, если кто-то дополнит или подскажет иные методы детекта.

Используемые источники:

  1. http://vamsoft.com/downloads/articles/vamsoft-headless-browsers-in-forum-spam.pdf
  2. http://www.freepatentsonline.com/y2016/0359904.html
  3. https://blog.shapesecurity.com/2015/01/22/detecting-phantomjs-based-visitors/