Dram

Рейтинг
1115
Регистрация
28.06.2008
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 я бы хотел вычеслять ботов НЕ ЗАГРУЖАЮЩИХ ксс, а не тормозить загрузку статики для всех :))) Что за бред вы предлагаете?

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

Я бы сюда еще добавил бы блокирование ботов, которые на запрашивают css и js, только пока не придумал как это реализовать в NGINX. Возможно ли это?

adel92:
Ограничьте кол-во подключений в минуту, в час.В чем сложность то?

Да, вероятно вы правы, я поэтому и не врубался в limit_conn_zone потому что она по сути дублирует то, что умеет limit_req_zone

Всего: 6926