Добавление фильтра в conf nginx

Nopassw0rd
На сайте с 01.02.2019
Offline
97
2530

Здравствуйте, подскажите, что я неправильно делаю. Пытаюсь отсечь спам запросы через map в nginx, но не срабатывает, в чем моя ошибка?

В секцию http

map $http_user_agent $bad_useragent {

default 0;

"~*Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" 1;

}

В секцию server

if ($bad_useragent) {

return 444;

}

D
На сайте с 28.06.2008
Offline
969
#1

Вот как у меня и все работает

map $http_user_agent $bad_useragent {

default 0;

~*ia_archiver 1;

~*Curl 1;

~*libwww 1;

~*BLEXBot 1;

~*SBooksNet 1;

~*MJ12bot 1;

~*Java 1;

~*NTENTbot 1;

~*GetIntent 1;

~*SemrushBot 1;

~*HybridBot 1;

~*AhrefsBot 1;

~*SeznamBot 1;

~*DeuSu 1;

~*GrapeshotCrawler 1;

~*SentiBot 1;

~*default 1;

~*Virusdie 1;

~*WordPress 1;

~*WhatsApp 1;

~*SeopultContentAnalyzer 1;

~*WinHTTP 1;

~*MauiBot 1;

~*weborama 1;

~*Python 1;

~*Go-http-client 1;

~*VelenPublicWebCrawler 1;

}

Nopassw0rd
На сайте с 01.02.2019
Offline
97
#2
Dram:
Вот как у меня и все работает

map $http_user_agent $bad_useragent {
default 0;
~*ia_archiver 1;
}

Спасибо, просто в моем случае мне нужно блокировать именно по указанным параметрам. Если в условии одно слово (как в Вашем случае - наименование бота) - все работает, у меня же несколько слов разделенных пробелами, без кавычек правило будет некорректно, а с кавычками не выполняет требуемое действие.

HM
На сайте с 14.01.2012
Offline
208
#3

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" 1;

Вот так работает.

Nopassw0rd
На сайте с 01.02.2019
Offline
97
#4
hakuna matata:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" 1;



Вот так работает.

Спасибо, неужели все так просто, я туда всевозможные регулярки пытался вклеить, чтобы это правило сработало. Теперь посмотрю как сработает.

Nopassw0rd
На сайте с 01.02.2019
Offline
97
#5

Еще вопрос к специалистам, предложенная выше в теме конструкция работает, но с некоторыми, непонятными ограничениями или лучше сказать нюансами.

В секции http

map $http_user_agent $bad_useragent {

default 0;

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:29.0) Gecko/20100101 Firefox/29.0" 1;

}

В секции server

if ($bad_useragent) {

return 444;

}

В этом случае, если заход с указанным в правиле useragent по протоколу HTTP/1.1, то все отрабатывает правильно, если же по протоколу HTTP/1.0, с этим же useragent то отдается ответ 200, не могу понять почему? То есть один и тот же ip (с прописанным в правиле ограничением в виде useragent ) обращается к одной и той же странице по разным протоколам и в одном случае он фильтруется на 444, в другом ему отдается ответ 200. Почему существует такой костыль и как его обойти? Нужно, чтобы независимо от того по какому протоколу обращается клиент с указанным в правиле useragent он получал ответ 444.

K0
На сайте с 16.05.2012
Offline
70
#6

Вопрос по боту HybridBot. Давно его забанил по ua, но вот посмотрел логи и вижу, что он опять бродит по серверу прикидываясь добропорядочным юзером. Более 5 тыс. хитов делает. Несущественно, но всё же.

Насколько я понимаю, это рекламный бот. Реклама на сайтах присутствует.

Прибить его наглухо или пусть ползает?

И аналогичный вопрос по другим рекламным ботам, типа weborama-fetcher, GetIntent и т.п.

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