В BotBlocker (бесплатная версия) анализ заголовка Accept-Language — это простой, но эффективный способ отсечь автоматический трафик. Всё работает «из коробки», не требует ручных таблиц или тонкой настройки.
Как фильтрация Accept-Language реализована в BotBlocker
Любой современный браузер отправляет корректный заголовок Accept-Language (ru, en-US, de-DE). Большинство скриптов, ботов и простых парсеров:
- не отправляют этот заголовок вовсе
- вставляют туда случайные символы, звёздочки, запятые, мусор
- используют синтаксически некорректные значения
BotBlocker отсекает такие запросы сразу, на ранней стадии — до загрузки сайта.
Почему фильтрация эффективна
- Почти все реальные посетители отправляют валидный Accept-Language
- Простые боты и скрипты — нет, и сразу попадают в фильтр
- Никаких ручных карт, никаких дополнительных настроек
- Проверка быстрая, не нагружает сервер
Как включить защиту по Accept-Language
Достаточно просто активировать BotBlocker. Проверка работает по умолчанию, дополнительных действий не требуется.
Что происходит с заблокированным запросом
Когда BotBlocker определяет, что заголовок отсутствует или содержит недопустимые символы, запрос блокируется до того, как WordPress начинает обработку страницы. Это значит, что сервер не тратит ресурсы на отрисовку контента, не выполняет запросы к базе данных и не подключает плагины. Бот получает отказ, а сайт продолжает работать в обычном режиме.
Такой подход особенно важен для сайтов с большим числом страниц или интернет-магазинов, где каждый лишний запрос к базе данных создаёт нагрузку. Парсеры и боты нередко обходят сотни страниц подряд, и без фильтрации это заметно замедляет работу сервера для реальных пользователей.
Какие боты попадают под фильтр
Под действие проверки попадают прежде всего простые HTTP-клиенты и скрипты, написанные без имитации браузерного поведения. Это могут быть самописные парсеры на Python или PHP, инструменты для массовой проверки ссылок, спам-боты, которые ищут формы обратной связи, а также различные сканеры уязвимостей. Они, как правило, не задаются целью подделывать заголовки, потому что их задача — скорость, а не маскировка.
Более сложные боты могут имитировать браузер и подставлять правдоподобные значения. Для таких случаев BotBlocker использует дополнительные методы проверки, которые работают в связке с анализом заголовков. Но даже базовая проверка отсекает значительную часть нежелательного трафика без каких-либо настроек.
Примеры некорректных значений, которые блокирует фильтр
- пустая строка вместо языкового кода
- набор случайных символов, например
***или;;;; - слишком длинная строка, не соответствующая стандарту
- полное отсутствие заголовка в запросе
Стандарт для HTTP-заголовков языка описан в спецификации RFC 9110. Именно на него ориентируются браузеры при формировании запроса, и именно с ним сверяется BotBlocker при проверке входящего трафика.
Влияние на реальных пользователей
Беспокойство о ложных блокировках понятно, но на практике случаи, когда реальный пользователь попадает под фильтр, крайне редки. Все актуальные версии браузеров — Chrome, Firefox, Safari, Edge — формируют корректный заголовок автоматически на основе языковых настроек операционной системы. Пользователю не нужно ничего делать вручную.
Браузеры следуют единому стандарту уже много лет. Согласно данным Can I Use, поддержка корректной передачи языковых заголовков присутствует во всех браузерах с долей рынка выше 0.5%. Это означает, что риск заблокировать живого посетителя при использовании данной проверки минимален.
Что если пользователь использует нестандартный браузер
Нестандартные и устаревшие браузеры, как правило, всё равно передают языковой заголовок — это базовое требование протокола HTTP. Если браузер не передаёт его совсем, он, скорее всего, уже не используется реальными людьми для обычного веб-сёрфинга.
Как проверить, какие заголовки отправляет ваш браузер
Это можно сделать бесплатно через онлайн-инструменты. Например, сервис What Is My Browser показывает все заголовки, которые ваш браузер отправляет при загрузке страницы. Там будет виден и языковой заголовок с его точным значением.
Такая проверка полезна, если вы хотите убедиться, что ваши собственные тесты или скрипты не попадут под блокировку. Если заголовок присутствует и содержит стандартное значение вроде ru-RU или en-US, BotBlocker пропустит запрос без вопросов.
FAQ
Может ли фильтр заблокировать реального пользователя?
Почти невозможно — все современные браузеры ставят Accept-Language автоматически.
Влияет ли на скорость?
Нет, проверка минимальна и происходит до загрузки WordPress.
Нужно ли обновлять списки или правила вручную?
Нет. Фильтр работает на основе синтаксической проверки заголовка, а не на основе списков. Обновлять ничего не требуется.
Работает ли защита на shared-хостинге?
Да. Проверка выполняется на уровне PHP до инициализации WordPress, поэтому не требует root-доступа или специальных серверных настроек.