Боты часто подделывают язык или страну браузера, чтобы выглядеть «реальнее». В BotBlocker есть продвинутая, но необязательная функция: фильтрация по несоответствию языка и страны (GeoIP Language mismatch).
Как работает фильтр GeoIP Language mismatch
При включении этой опции BotBlocker сравнивает два параметра каждого посетителя:
- Accept-Language из браузера
- Страну, определённую по IP (GeoIP)
Если язык браузера не соответствует стране и не входит в список распространённых языков этой страны, посетитель попадает под фильтр. Например, IP из Италии и единственный язык японский.
Как читается заголовок Accept-Language
Браузер присылает список языков в порядке предпочтения: de-CH,de;q=0.9,en;q=0.8. Первый язык считается основным, параметр q задаёт вес остальных.
Фильтр смотрит на основной язык и сверяет его со страной. Если посетитель присылает несколько языков, решение принимает первый, а не второй или третий. Пустой заголовок или его отсутствие тоже сигнал: живой браузер почти всегда присылает хотя бы один язык.
Список языков можно изменить в настройках браузера, поэтому сам по себе он не доказывает, что перед вами бот. Фильтр даёт повод присмотреться, а не приговор.
Откуда берётся страна
Страну даёт база GeoIP по IP-адресу. У локальных адресов (10.0.0.0/8, 192.168.0.0/16) страны нет, такие запросы фильтр не трогает.
Если сайт стоит за CDN или обратным прокси, проверьте, что страна считается по IP посетителя, а не по адресу прокси. Иначе весь трафик выглядит как одна страна и проверка теряет смысл.
Учёт многоязычных стран
В некоторых странах официально или массово используются сразу несколько языков:
- Швейцария: немецкий, французский, итальянский
- Канада: английский, французский
- Бельгия: французский, фламандский, немецкий
BotBlocker опирается на справочник языков по странам, чтобы снизить риск ложных срабатываний. Для каждой страны в нём задан набор допустимых языков, а не один.
Ложные срабатывания
Фильтр ошибается там, где язык и страна расходятся по делу:
- посетитель сидит через VPN или корпоративный прокси другой страны;
- экспат или турист держит браузер на родном языке;
- человек вручную выставил язык в настройках браузера;
- компания выдаёт сотрудникам технику с одним языком на все офисы.
Поэтому на международном проекте фильтр не включают по умолчанию. Сначала его проверяют в режиме логирования.
Когда и для кого актуальна эта функция
Этот фильтр подходит опытным администраторам:
- Проекты с локальной аудиторией, где язык почти всегда совпадает с регионом.
- Магазины, туристические сервисы и международные СМИ: здесь фильтр может ошибочно задевать реальных пользователей.
В настройках можно выбрать реакцию: блокировать, показать капчу или только логировать событие.
Как включить фильтрацию GeoIP + язык
- Откройте настройки BotBlocker
- Найдите пункт GeoIP Language mismatch
- Выберите реакцию: лог, капча или блокировка
- Включите фильтр
- Сохраните настройки
Что смотреть в журнале
Включите логирование на день или два и посмотрите, кого фильтр пометил. Если среди них есть живые клиенты, добавьте язык в список для страны или переведите реакцию на капчу.
Отдельно проверьте посетителей из стран, где много приезжих: ОАЭ, Сингапур, курортные регионы. Там несовпадение языка и страны встречается чаще.
FAQ
Может ли фильтр зацепить туристов или экспатов?
Да, при строгих настройках они могут получить капчу или попасть в лог. Перед включением убедитесь, что это не помешает вашим клиентам.
Можно ли использовать для многоязычных сайтов?
Возможно, но добавьте дополнительные языки в список допустимых для конкретных стран.
Влияет ли на скорость сайта?
Проверка быстрая, не даёт заметной нагрузки.
Что делать, если реальный клиент попал под фильтр?
Проверьте его язык и страну. Если пара нетипичная, добавьте язык в разрешённые для этой страны или оставьте капчу вместо блокировки.
Нужен ли отдельный GeoIP-сервис?
Нет. Страна определяется по базе GeoIP, которая идёт вместе с проверками.
