Dram

Рейтинг
1115
Регистрация
28.06.2008
up and down:
У меня тоже боты прут. Причем все сайты забугорные - а боты прут с России в основном.
Я пытался бороться, потом мои силы и терпение иссякли - короче победили боты..

В вашей ситуации вообще очень просто отбиться.

Берете формируете белый список как я показывал выше, далее устанавливаете geoip и подключаете его, указывая страны из которых не хотите видеть трафик

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code:$whitelist:$server_protocol $allowed_country {
default yes;
"DE:0:HTTP/1.1" no;
"NL:0:HTTP/1.1" no;
"FR:0:HTTP/1.1" no;
"CA:0:HTTP/1.1" no;
"US:0:HTTP/1.1" no;
"GB:0:HTTP/1.1" no;
"PL:0:HTTP/1.1" no;
"ES:0:HTTP/1.1" no;
"CN:0:HTTP/1.1" no;
"EG:0:HTTP/1.1" no;
"IN:0:HTTP/1.1" no;
"IT:0:HTTP/1.1" no;
"JP:0:HTTP/1.1" no;
"RO:0:HTTP/1.1" no;
"TW:0:HTTP/1.1" no;
}

И в секцию server { нужного хоста

if ($allowed_country = no) {
return 444;
}

Но повторюсь - у меня http2 и 90% трафика идет по нему, по HTTP/1.1 лезут в основном боты, поэтому мне удобно их отсеивать.

Очень жаль, поле для маневров сильно сужается.

Так как много из этих IP российские - геоайпи тут не поможет, можно попробовать посмотреть будут ли попадать эти запросы в лог без куков

Добавьте в секцию http {


geo $whitelist {
default 0;
# ip server
АЙПИ_ВАШЕГО_СЕРВЕРА 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;
84.201.158.0/24 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.0.0/16 1;
178.154.0.0/16 1;
37.9.0.0/16 1;
37.140.0.0/16 1;
5.45.207.0/24 1;
# mail.ru
217.69.0.0/16 1;
94.100.0.0/16 1;
95.163.255.0/24 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;
131.253.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;
98.139.0.0/16 1;
206.190.34.0/24 1;
# sputnik
5.143.0.0/16 1;
# opera-mini.net
82.145.0.0/16 1;
107.167.96.0/19 1;
185.26.180.0/23 1;
37.228.104.0/22 1;
37.228.111.128/26 1;
141.0.0.0/16 1;
# TelegramBot
149.154.167.0/24 1;
# Applebot
17.142.0.0/24 1;
# боты Rambler
81.19.64.0/19 1;
81.19.78.0/24 1;
# VK
87.240.169.0/24 1;
}


map $http_cookie $cookies {
default 0;
~*(.+) 1;
}
map "$whitelist:$server_protocol:$cookies" $nocookies {
default 0;
"0:HTTP/1.1:0" 1;
}

далее в секцию server {

access_log /var/log/nginx/access.nocookies.log combined if=$nocookies;

И смотрите этот лог. Если все ваши товарищи там - уже можно обрубать.

Лично у меня на 50.000 трафика в этот лог попали вчера 4000 IP, я их глазками посмотрел, пробил вручную несколько десятков - это боты на 99%

Но я их не обрубаю, а при первом же запросе отправляю на гугл капчу (мне мой кодер написал решение на PHP.

Так вот из этих 4000 капчу прошли 21 юзер.

Так же в этом логе практически нет запросов к статике - css, js, которые делают нормальные юзеры, что так же показательно.

2. Вариант - более мягкий.

Сделать 2 лога, 1-й из которых будет собирать все запросы, а второй только к статике. Далее парсим оба лога и тех кто не запрашивает статику - (при условии что они не из подсетей поисковиков) объявляем подозрительными и уже только для них придумываем еще проверку.

Вы знаете свой проект, знаете какая активность в какие разделы нормальна, а какая нет.

P.S. введение https +http2 позволяет строить конструкции с учетом протокола и это сразу же обрубает 95% ботов. Все они в подавляющем большинстве лезут по протоколу HTTP/1.1

1. У вас https + http2 ? вы не ответили

2. К этим php файлам нормальные юзеры обращаются или обращение к ним напрямую уже не нормально?

foxi:
Dram, если это более менее полноценный бот на браузерном движке, то чем спасет http2 ?

Тем что таких ботов от общего числа - 0,5%.

Но все равно - нужно видеть запросы, чтобы понять как их отбить.

Покажите пример запросов из лога. Если у вас сайт на https + http2, то отсечь ботозапросы ооочень просто средствами Nginx

если просто http или https без http2 - тоже можно, но будет сложнее

У меня 7 видов проверки - фиг пролезут.

Мне не реалтайм, проверка раз в сутки нескольно десятков айпи

Не видел ботов проходящих гугл капчу.

2 часа наблюдей на посещаемом сайте показали что в вышенаписанный мап попадают 99% ботов и единично люди у которых куки отключены.

Всех этих персонажей уже средставами пхп я отправляю на гугл капчу

Вроде у меня получилось выделить в отдельный лог тех кто лезет не из подсетей поисковиков по протоколу 1,1 и у которых нет куки

map $http_cookie $cookies {
default 0;
~*(.+) 1;
}
map "$whitelist:$server_protocol:$cookies" $nocookies {
default 0;
"0:HTTP/1.1:0" 1;
}

продолжаю наблюдение

Всего: 6928