Фильтр по языку браузера

Браузер передаёт сайту языки, которые предпочитает пользователь, в заголовке Accept-Language, например ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7. По этому заголовку и работает фильтр. Он выручает там, где одной страны мало: у посетителя, который заходит через VPN в другой стране, в браузере обычно всё равно стоит его родной язык.

Фильтр входит в гео-блокировку: в настройках сайта, вкладка Дополнительно, Гео-блокировка, раздел Язык браузера. Сама гео-блокировка должна быть включена. Фильтру по языку не нужна база GeoIP.

Режимы

Режим Действие
Выкл. Язык браузера не учитывается (по умолчанию).
Запрещены Блокировать посетителей, чей браузер запрашивает любой из выбранных языков.
Разрешены Пускать только посетителей, чей браузер запрашивает хотя бы один из выбранных языков.

Фильтр смотрит на все языки в заголовке, в том числе на те, что идут после первого. В режиме «Запрещены» браузер, отправляющий en-US,de;q=0.5, блокируется, если запрещён немецкий. В режиме «Разрешены» он проходит, если разрешён английский или немецкий.

В режиме «Разрешены» в списке должен быть хотя бы один язык: с пустым списком сайт не открылся бы ни у кого, и панель такое не сохранит. На сайт можно задать до 100 языков.

Языки выбираются так же, как страны: введите название или код, нажмите Enter, и язык появится в виде метки.

Языки и регионы

Язык охватывает все регионы, где на нём говорят. Если выбрать ru, под правило попадут ru, ru-RU, ru-BY и ru-KZ, а pt охватит и pt-PT, и pt-BR.

Чтобы выбрать только один регион, введите точный тег, например en-GB или pt-BR. Точный тег совпадает только с самим собой: правило для pt-BR не срабатывает для посетителя, который отправляет pt без региона или pt-PT.

Запросы без языка

Отметьте Блокировать посетителей без языка, чтобы отклонять запросы без заголовка Accept-Language (или с заголовком, в котором нет ничего пригодного). Настоящие браузеры этот заголовок отправляют всегда, а большинство скриптов и многие боты не отправляют. Проверка работает вместе с режимом «Запрещены» или «Разрешены»: когда режим языка «Выкл.», эта проверка тоже выключена. Если нужна только эта проверка, выберите «Запрещены» и оставьте список языков пустым.

Насколько это надёжно

Заголовок языка подделать так же легко, как User-Agent: любой скрипт может отправить Accept-Language: en-US. Используйте фильтр как дополнительный признак рядом со страной. Обычных ботов и случайных посетителей он отсеет, а тот, кто целенаправленно атакует ваш сайт, его обойдёт.

Посетители, заблокированные фильтром по языку, получают страницу блокировки гео-блокировки, а адреса из белого списка сайта освобождены от этой проверки.