Каждый HTTP (S)-запрос к сайту за Cloudflare проходит примерно такой путь:
TLS/HTTP-слой — устанавливается защищенное соединение (HTTPS), разбираются заголовки и путь запроса.
Core proxy (основной прокси, FL / FL2) — главный «конвейер», написанный на Rust, где по очереди отрабатывают модули:
- кеш;
- система защиты от DDoS;
- WAF (веб-файрвол);
- Bot Management (управление ботами);
- переадресация трафика на Workers, R2 и т. п.
Обращение к origin-серверу — если ответа нет в кеше, FL/FL2 устанавливает соединение с исходным сервером. Для этого Cloudflare использует отдельную подсистему/proxy-инфраструктуру, построенную на Pingora (Rust-фреймворк и HTTP-прокси, который сейчас заменил NGINX и обслуживает значительную часть трафика).
Bot Management — один из этих модулей. Это система, которая с помощью машинного обучения пытается определить, кто перед нами: живой человек, «хороший» бот (например, поисковый робот Google) или вредный бот (скрейпер, программа для взлома паролей и т. п.).
Модель принимает на вход набор признаков (features): технические характеристики запроса — заголовки, поведение соединения, параметры клиента, IP-метаданные и т. д. Эти признаки описываются в специальном конфигурационном feature-файле, который пересобирается каждые несколько минут и рассылается на все узлы сети.
Описание признаков хранится в базе ClickHouse — популярной аналитической СУБД, хорошо подходящей для больших объемов логов и телеметрии.