Блокировка в .htaccess по User-Agent из нескольких составляющих

L
На сайте с 03.05.2009
Offline
145
3803

Здравствуйте, подскажите, пожалуйста как правильно прописать User-Agent.

В справочном центре хостинга приводится пример блокировки по User-Agent (версия Apache 2.4) :

SetEnvIfNoCase User-Agent MJ12Bot bad_bot

<Limit GET POST HEAD>

Require all granted

Require not env bad_bot

</Limit>

На мой вопрос в техподдержку – “как правильно указать User-Agent состоящий из нескольких составляющих”, - меня культурно “отправили в увлекательное путешествие” по просторам Интернета.

Уже попробовал User-Agent заключать в кавычки

SetEnvIfNoCase User-Agent "Здесь User-Agent из нескольких составляющий" bad_bot

или даже так ( используя ^ )

SetEnvIfNoCase User-Agent "^Здесь User-Agent из нескольких составляющий" bad_bot

никак не блокирует.

Если указать без кавычек и без ^ , то блокируется по первой составляющей до пробела.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

lungo, в документации же указано что там должно быть регулярное выражение. Следовательно, как то так:

SetEnvIfNoCase User-Agent "(MJ12Bot|MJ13Bot|MJ14Bot)" bad_bot

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
L
На сайте с 03.05.2009
Offline
145
#2

То есть все это осталось работать только на хостингах с более старой версией Apache?

Так теперь через .htaccess подобные User-Agent в моем случае уже никак не заблокировать?

Или оно просто по-другому теперь указывается?

Извините, но я в этом особо не силен.

Mik Foxi
На сайте с 02.03.2011
Offline
1173
#3

Если в имени юзер агеент пробел - экранировать его обратным слэшем.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ Форум на замену серчу: https://foxi.biz/
L
На сайте с 03.05.2009
Offline
145
#4
foxi:
Если в имени юзер агеент пробел - экранировать его обратным слэшем.

Подскажите, пожалуйста, как должен выглядеть User-Agent с учетом экранирования.

SetEnvIfNoCase User-Agent "Mozilla/5.0 (Windows NT 6.1; rv:55.0) Gecko/20100101 Firefox/55.0" bad_bot

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5

lungo, перед всеми небуквами и нецифрами поставьте \

L
На сайте с 03.05.2009
Offline
145
#6
Оптимизайка:
lungo, перед всеми небуквами и нецифрами поставьте \

Спасибо. Попробую вечером, как буду у ПК.

Я вчера обратные слеши поставил ВМЕСТО пробелов - разумеется выдало ошибку сервера.

L
На сайте с 03.05.2009
Offline
145
#7

Спасибо, все работает (блокирует что нужно). Немного попрактиковался на своем User-Agent.

Понял, что:

1. Кавычки в данном случае обязательны ( ^ не ставил )!

2. Пробелы не нужно экранировать, нужно только точки, двоеточия, запятые, точки с запятой, скобки, обычные слеши и прочее. В общем как сказано выше - “не буквы и не цифры”.

Для себя, конечно, не понимаю, зачем с обновлением Apache допускать такие усложнения? И как быть тем, у кого все работает под старой версией, а на хостинге вдруг решают обновить на новую версию. Хорошо, если вовремя спохватишься и необходимые изменения внесешь.

P.S. Пошел блокировать “злодеев”. :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий