Код, интерфейсы и трафик без воды
lawebbox

KillBot: эволюция системы защиты от ботов на реальном трафике

По данным автора проекта Григория Мельникова на Хабре, сервис защиты от ботов KillBot за два года эволюционировал из сырого JS-скрипта до распределённой системы на 12+ серверах, через которую…

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 28 сентября 2026 г.

KillBot: эволюция системы защиты от ботов на реальном трафике

По данным автора проекта Григория Мельникова на Хабре, сервис защиты от ботов KillBot за два года эволюционировал из сырого JS-скрипта до распределённой системы на 12+ серверах, через которую ежесуточно проходит более 2 миллионов реальных посетителей и почти столько же ботов — то есть твой худший сценарий на проде, когда метрика тонет, CPU кипит, а ты не понимаешь, кто из посетителей живой. Сейчас к сервису подключено свыше 3000 сайтов, в интеграторах — ActiveCloud, eLama, CDNVideo. Для бэкенда — антибот, который держит нагрузку реального трафика, а не маркетинговую презентацию.

Путь от костыля на Drupal до боевой инфраструктуры

Мельников признаёт: первая версия появилась в 2019-м, без анализа рынка. Классическое мышление кодера: умеешь писать код — значит пишешь. Тогда ботов было меньше, Метрика не была забита, и проект просто положили на полку. К маю 2024-го поведенческий трафик стал нормой, и тот же код вытащили из архива — всё ещё на Drupal 8, всё ещё сырой: ни DNS-экранов, ни нескольких серверов, ни API. JS на стороне сайта анализировал посетителя и помечал визиты ботов в Метрике. Хватило, чтобы пошли первые продажи. Мораль: сначала продукт, потом рынок. Знакомо каждому, кто хоть раз пилил MVP в гараже.

Слепок вместо fingerprint

Главное отличие от привычных антиботов: KillBot не смотрит на IP, User-Agent и не собирает классический fingerprint. Вместо этого — собственная технология «программных слепков браузера». Логика простая: бот порождён конкретным софтом, и все боты от одной программы помечаются одним числом, даже если внешне они маскируются под разные браузеры, ОС и IP. Отдельно от слепка — нагрузка CPU на бота, наблюдение, как бот тапает поверх капчи, выпиливание из аналитики, UserID без привязки к кукам, счётчик решённых и показанных капч. И главное — это не чёрный ящик: по каждому визиту открыто видно, почему он помечен как бот, и при ошибке разметку можно поправить.

Что проверить у себя на проде

Если Метрика показывает подозрительный всплеск визитов без конверсий — открывай логи веб-сервера и фильтруй по поведению:

tail -f access.log | awk '{print $1, $4, $7, $9}' | grep -v "Chrome|Firefox|Safari"

Смотри распределение по IP. Если с одной подсети идут сотни «уникальных» посетителей с разными fingerprint — это бот-сетка, и классический fingerprint тебя уже не спасёт. Дальше — либо эвристика по софту на стороне клиента, либо серверный анализ TLS/HTTP2 fingerprint. Бэкапы — каждый день. Не потому что красиво звучит, а потому что когда придёт реальный DDoS и ты поедешь разбираться, кто из подключений бот, а кто клиент — у тебя будет откат. Без него ты не бэкендер, а статист.