Защита от ботов. NGINX limit_req + белый список яндекс на основе rDNS

[umka]
На сайте с 25.05.2008
Offline
456
#71

Нормальные злобные боты, которые хотят спарсить ваш сайт или нащупать уязвимости, точно не будут делать 15 запросов с одного IP.

3-4, максимум 5. И больше вы их никогда не увидите.

Лог в помощь!
D
На сайте с 28.06.2008
Offline
1104
#72

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

Чтобы спарсить пару сотен тысяч страниц (а у меня их более 200.000).

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

по 3-5 запросов, это на прокси разоришься. + HTTP/2.0 у меня разрешен из небольшого числа стран, а это еще очень сильно сужает возможности использования прокси.

Я же хочу ввести два лимита (в минуту и в час)

+ я все же планирую прикрутить еще пару мулек, по типу бана тех кто не загружает стили, мож еще че-то придумаю.

S
На сайте с 17.08.2008
Offline
114
#73
Нормальные злобные боты, которые хотят спарсить ваш сайт или нащупать уязвимости, точно не будут делать 15 запросов с одного IP.
3-4, максимум 5.

А не "злобные" долбят сайт часами.... Бывает еще по несколько запросов в секунду.

Я же хочу ввести два лимита (в минуту и в час)

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

Это же MSN

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

D
На сайте с 28.06.2008
Offline
1104
#74
'[umka:
;14900323']Тогда остаётся два варианта:
1. Боты стали насколько умными, что прикидываются живыми посетителями
2. Часть айпишников сдали под прокси. Типа режим "Интернет-эксплорер Турбо"
:)

А вот и доказательство:

52.164.249.229 - - [31/Jan/2017:09:51:11 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

Запрос из сети ГовоСофта, а косит под Яндекс бота, пока все работает как задумано, тысячи ботозапросов каждый день получают 503 и 444

Да и еще - запросы из подсети 52. не запрашивают картинок, это точно парсеры

---------- Добавлено 31.01.2017 в 11:55 ----------

Открыл свой сайт, сделал запрос из Яндекс барузера с/без режима "Турбо" - рефер и айпи в логе не меняется.

---------- Добавлено 31.01.2017 в 12:00 ----------

У меня тут вопрос - важна ли очередность условий map в конфиге nginx?

D
На сайте с 07.11.2000
Offline
219
#75

Придумал еще вариант защиты - анализ Accept-Encoding в заголовках.

Переменная в конфиге nginx: $http_Accept-Encoding

Гугл, Яндекс, Маил - стремятся получить сжатый контент (проверил в логах) и указывают в заголовке "Accept-Encoding".

Не все, но большинство ботов (особенно самопальных) желают получить несжатый контент и ничего не указывают в заголовке (также проверил гипотезу в логах)

Кроме accept-encoding: gzip, deflate - Гугл возможно уже указывает (или будет) в заголовке sdch (не проверил).

D
На сайте с 28.06.2008
Offline
1104
#76

Dimka, можно вариант рабочего кода, как правильно прописать? Что на счет живых юзеров - все ли браузеры отвечают этими заголовками?

D
На сайте с 07.11.2000
Offline
219
#77
Dram:
Что на счет живых юзеров - все ли браузеры отвечают этими заголовками?

Нет, не все.

В первую очередь это для поиска ботов, кто притворяется Гуглботом, Яндексботом.

D
На сайте с 28.06.2008
Offline
1104
#78

Отсев ботов ПС от всего остального на 100% делает это, не зачем еще что-то мудрить

geo $whitelist {
default 0;
# ip server
155.001.356.004 1;
# боты google
64.68.80.0/21 1;
64.233.0.0/16 1;
66.102.0.0/20 1;
72.14.192.0/18 1;
209.85.128.0/17 1;
216.239.32.0/19 1;
66.249.0.0/16 1;
104.154.0.0/16 1;
# боты yandex
77.88.0.0/18 1;
87.250.224.0/19 1;
93.158.0.0/16 1;
95.108.128.0/17 1;
213.180.192.0/19 1;
141.8.0.0/16 1;
130.193.0.0/16 1;
5.255.253.0/24 1;
178.154.0.0/16 1;
37.9.118.0/24 1;
# mail.ru
217.69.0.0/16 1;
94.100.0.0/16 1;
# bingbot-msn
40.77.0.0/16 1;
207.46.0.0/16 1;
65.52.0.0/14 1;
157.55.0.0/16 1;
# Yahoo
68.180.0.0/16 1;
67.195.0.0/16 1;
69.147.64.0/18 1;
72.30.0.0/16 1;
74.6.0.0/16 1;
63.250.0.0/16 1;
# sputnik
5.143.0.0/16 1;
# opera-mini.net
82.145.216.0/22 1;
107.167.96.0/19 1;
185.26.180.0/23 1;
37.228.104.0/22 1;
82.145.208.0/21 1;
37.228.111.128/26 1;
141.0.14.0/23 1;
82.145.220.0/22 1;
141.0.12.0/23 1;
141.0.8.0/22 1;
}

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";
}
D
На сайте с 07.11.2000
Offline
219
#79
Dram:
можно вариант рабочего кода, как правильно прописать?

Будет два map:

1. первый проверят ЮзерАгент на соответствие нужным ботам (гугл, яндекс...)

2. с переменной с нужным ботом - делаем проверку заголовков.

---------- Добавлено 13.02.2017 в 17:07 ----------

Dram,

Dram:
Отсев ботов ПС от всего остального на 100% делает это

Чтобы не заблокировать новые ip ботов.

D
На сайте с 28.06.2008
Offline
1104
#80

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

map $status:$http_user_agent $good_useragent {
default 0;
~*503:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}



---------- Добавлено 13.02.2017 в 16:09 ----------

Dimka:
Чтобы не заблокировать новые ip ботов.

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

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