Dram

Рейтинг
1115
Регистрация
28.06.2008

Так как медленные боты бывало быстро запросят пару тройку страниц и затыкаются на пару минут дбавил еще вот что (жирным выделил)

map "$whitelist:$server_protocol" $limit1 {
default "";
"1:HTTP/1.0" "";
"1:HTTP/1.1" "";
"1:HTTP/2.0" "";
"0:HTTP/1.1" "$binary_remote_addr";
}
limit_req_zone $limit1 zone=bot11:20m rate=7r/m;
limit_conn_zone $limit1 zone=addr:10m;

и в хост

limit_conn addr 1;



---------- Добавлено 23.01.2017 в 17:34 ----------

Появилась еще идея - создать черный список - страны, где расположены крупнейшие и любимые у нас хостеры:

Америка, Германия, Нидерланды, Франция.

и условие -

не из белого списка + из черного списка - limit_req_zone

Сегодня активно умирают - Розембаум, Пугачева и Стас Михайлов :)) ищется этот шлак по запросу - "в тяжелом"

Andreyka:
С куками - не вариант.
Делайте отдельный лог для css/js и анализируйте его вместе с полным.

Можете привести пример логики - как его можно анализировать?

Хочу обойтись только Nginx, не хочу добавлять ничего другого.

---------- Добавлено 23.01.2017 в 09:13 ----------

Вот еще вариант защиты, может кому пригодится


map "$whitelist:$request_uri" $bad_location {
default 0;
"0:~*^/+phpmyadmin" 1;
"0:~*^/+myadmin" 1;
}



---------- Добавлено 23.01.2017 в 09:26 ----------

Вот нашел интересный вариант http://www.gofuckbiz.com/showpost.php?p=920742&postcount=41

---------- Добавлено 23.01.2017 в 09:55 ----------

Вопрос - делают ли нормальные браузеры HEAD запросы?

Изменил код вот так, я все же думаю что два нуля были причиной ошибки

map $http_cookie $cookie {
default 1;
~somecookie 2;
}

map "$whitelist:$server_protocol:$cookie" $limit3 {
default "";
"0:HTTP/1.1:1" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Все вроде работает, боты сводобно ходят по сайту, пособираю статистику пару часов - отпишусь потом.

Добавлено: код работает, проверено. Но! пока в эту ловушку ЧАЩЕ попадают обычные юзеры без кук. Все таки это не выход.

Нужно думать как фильтровать IP которые не запрашивают картинки/ксс/js.

---------- Добавлено 23.01.2017 в 08:52 ----------

Либо, если бы это было возможно, я бы еще добавил лимит на обращений в день с одного IP по протоколу HTTP/1.1 если он не из белого списка. А то пока "медленные" боты проходят мой фильтр.

Не так не прокатит. Нужно сначала объявить какую куку ищем, потом ее и проверять, щас подумаю....

---------- Добавлено 22.01.2017 в 22:11 ----------

Вот как надо

map $http_cookie $cookie {
default 0;
~somecookie 1;
}

map "$whitelist:$server_protocol:$cookie" $limit3 {
default 0;
"0:HTTP/1.1:0" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

пошел пробовать :)

---------- Добавлено 22.01.2017 в 22:16 ----------

Че то перемудрил - добавил это в конфиг и сам получил 503 на первом же перезапуске страницы, а мой то браузер делал запрос по HTTP/2.0 и вообще не дожен было попасть под условие.

---------- Добавлено 22.01.2017 в 22:23 ----------

Изменил код так

map "$whitelist:$server_protocol:$cookie" $limit3 {
default 0;
"0:HTTP/2.0:1" "";
"0:HTTP/1.1:1" "";
"0:HTTP/1.1:0" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Вроде все ок, пошел смотреть за логами

---------- Добавлено 22.01.2017 в 22:27 ----------

Нет - где-то ошибка, 503 ошибку стали получать даже боты из белого списка

Смотрите что сваял в плане добавить к коду выше. 99.8% ботов лезут по протоколу HTTP/1.1

Не могу че то понять как тут указать что если нет куки - то binary_remote_addr?

map "$whitelist:$server_protocol:$http_cookie" $limit3 {
default 0;
"0:HTTP/1.1:~somecookie" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Спс за идею + эта мысль повесить куку не обязательно к какртинке - просто куку и тормозить тех кто ее не имеет. (если он не из белого списка естественно)

Dimka - я тоже нашел эту статью на Хабре, не нравится мне этот метод. Примерно 2% юзеров юзают сайт без кук, не хочу их банить

smbbws я бы хотел вычеслять ботов НЕ ЗАГРУЖАЮЩИХ ксс, а не тормозить загрузку статики для всех :))) Что за бред вы предлагаете?

Походу тема пошла в массы - раньше я шлак чистил раз в день, пару недель назад уже дважды в день, и вот второй день приходится заходить каждые пол часа или весь топ в Якубовичах. Я в шоке господа!

Всего: 6928