Как WAF спасает сайт от ботов, которые его убивают
В подборке за неделю встретил статью про WAF и нагрузку на серверы — и она сразу зацепила. Не потому что там что-то новое, а потому что вижу это каждый день: сайты, которые ломаются не от трафика, а от *неправильного* трафика. Особенно те, что на WordPress с WooCommerce.
О чём речь и почему я считаю это важным для сайта
Речь о том, как обычный интернет-магазин на WordPress может быть перегружен не из-за популярности, а из-за автоматизированного трафика. Боты не ломают сайт, они просто обходят всё, что можно — фасетные фильтры, категории, поисковые запросы. И каждый такой запрос запускает PHP и SQL-запрос к базе. Это не DDoS, но результат тот же — сервер падает.
Я считаю это важным, потому что большинство владельцев не видят разницы между «много посетителей» и «много вредоносных запросов». И пока они думают, что нужно «оптимизировать сайт», на самом деле нужно просто *не пускать* этих ботов на сайт. Это не про скорость, а про безопасность и стабильность.
Как это устроено — что тут вообще происходит
Когда бот перебирает фасетные URL — например, комбинации брендов, цен, цветов — каждый такой адрес выглядит как отдельная страница. WordPress его не знает, он его генерирует в реальном времени. И каждый раз — PHP, запрос к базе, сбор данных.
Это не статика. Это нагрузка. И если таких запросов тысячи — даже с маленьким RPS, сервер может упасть. Особенно на shared-хостинге, где лимиты жёсткие. WAF — это не защита от взлома, а фильтр, который учитывает, *как* пришёл запрос, а не просто *что* он просит.
Как понять, что это касается вашего сайта
Я это проверяю первым делом: смотрю, сколько запросов приходит к каталогу, поиску, фильтрам. Если в логах много разных URL с длинными параметрами — типа /category/brand-x/color-red-or-blue — и при этом нагрузка на БД высокая, но трафик не растёт — это тревога.
Также смотрю, сколько уникальных IP за сутки. Если 10–20 тысяч, но каждый делает по 1–2 запроса — это не люди. Это боты, которые перебирают всё. У меня на поддержке такие сайты уже были — и они падали, несмотря на «нормальную» нагрузку.
Что с этим делать
Я не начинаю с оптимизации кода. Не сменяю хостинг. Не обновляю плагины. Сначала — фильтрация трафика. Внешний WAF, который умеет отличать бота от человека.
Проверяю, какие запросы идут в базу. Отключаю старые фильтры, если они не работают. Включаю специализированный WAF, который пропускает только нужный трафик: поисковиков, SEO-сервисы, реальных пользователей. Остальное — не доходит до сайта. Объём работ зависит от сложности фильтров, но это всегда быстрее, чем переписывать код.
Что здесь даёт поддержка
На нашей поддержке задача уходит в работу сразу, а не в переписку про смету. Нет нужды ждать согласования, нет «а сколько это будет стоить». Мы уже знаем, что такое фильтрация трафика — и как её сделать.
У нас абонентский договор — первый месяц за наш счёт; на абонентском сроки задач сокращаются примерно на 70%. Это не реклама — это факт. И если сайт падает, мы не ждём, пока вы это заметите. Мы видим это раньше.
Предсказуемость вместо авралов — это не про «мы починим», а про то, что вы перестаёте думать о сайте. Аудит сайта — бесплатный. Попробуйте, не будете жалеть.