
Система противодействия автоматизации
Predator — прототип веб-приложения, предназначенный для демонстрации методов защиты от краулинга, автоматизации и обнаружения ботов. Его можно использовать как приманку (honeypot), систему защиты от краулинга или тестовую среду для проверки ложных срабатываний сканеров уязвимостей.
Предупреждение: Я настоятельно не рекомендую использовать продемонстрированные методы на production-сервере без полного понимания их работы. Помните: следует внедрять только те техники, которые выглядят применимыми к данному веб-приложению. Predator — это коллекция приёмов, и его код не следует использовать как есть.
Приведённая ниже ментальная карта — это приблизительная визуализация того, как показанные здесь техники могут быть реализованы в production-среде.

Примечание: Числа и факторы в «Фазе наблюдения» могут использоваться для назначения репутации клиенту, которая затем может быть сильным индикатором вредоносной активности при превышении порога.
HTTP-заголовки, отправляемые ботами, часто располагаются в другом порядке по сравнению с реальным браузером или вовсе отсутствуют. Многие боты по этическим соображениям указывают себя в заголовке User-Agent, другие же не отправляют его вовсе.
Большинство описанных здесь методов мутации HTML могут быть обойдены с помощью браузерных фреймворков, таких как selenium и puppeteer, но их можно обнаружить с помощью различных тестов, реализованных в isBot.js.
Большинство ботов запрашивают только веб-страницы и изображения, но ресурсные файлы, такие как .css, часто игнорируются, поскольку не загружаются используемой HTTP-реализацией. Ботов можно обнаружить, когда соотношение веб-страниц/изображений к таким ресурсным файлам превышает заданный порог.
Многие HTML-парсеры, используемые в краулерах, не могут обрабатывать «битый» HTML так, как это делают браузеры. Например, переход по следующей ссылке в браузере ведёт на page_1, но затронутые парсеры парсят второе значение, т.е. page_2.
<a/href="page_1"/href="page_2">Click</a>
Это можно использовать для отпугивания и блокировки краулеров без ущерба для пользовательского опыта.
Некоторые ссылки скрыты от пользователей с помощью CSS, но автоматические программы всё равно могут их видеть. Эти ссылки можно использовать для обнаружения ботов и принятия желаемых мер, например, блокировки IP-адреса.
Когда Predator подозревает, что посетитель является ботом, он генерирует случайное количество случайных ссылок, ведущих на страницу (limbo.php), содержащую ещё больше случайных ссылок, и этот процесс повторяется.
Сканеры уязвимостей обычно вводят полезную нагрузку и проверяют, реагирует ли веб-приложение определённым образом. Predator может притвориться уязвимым, включив в HTML ожидаемый отклик (сигнатуру).
На данный момент Predator имитирует следующие уязвимости:
Этот метод позволяет настроить приманку (honeypot) без фактического размещения какого-либо уязвимого кода и служит тестовой средой для проверки ложных срабатываний.
PatheticGeek выполнил всю фронтенд-магию, чтобы Predator выглядел хорошо.