Dram

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

Как я уже писал выше, более чем за год на 50-80.000 юзеров в день я дополнил этот список всего дважды.

Ну а сравнивать быстроту и простоту решений на nginx и php даже смысла нет, тем более что мои примеры бесплатны...

Bot Inspector:
да в принципе, если боты не кладут сайт и не копипастят его, то можно и забить на них.

А есть третий вариант? :))) Они или кладут или че-то тырят с вашего сайта и лично я с этим мериться не намерен!

Кому интересно - вот топ 10 хитроботов, маскирующихся под ботов Гугла и Яндекса, но таковыми не являющимеся. (слева кол-во запросов за 4 дня)


407-----78.84.201.122
374-----176.9.137.118
214-----13.77.169.115
19-----185.89.101.58
17-----91.243.93.227
17-----91.243.93.176
17-----91.216.3.51
17-----79.133.106.141
17-----5.101.218.25
17-----5.101.218.120
foxi:
Dram, если по правильному - надо отрубать руки по колено тем, кто предлагает создавать вот такие вот белые списки поисковиков в nginx.

А теперь цитрую ваш же сайт

Техническая суть скрипта: «Белые» боты - это Яндекс, Гугл, Мейл, Бинг - которые уже есть в кофиге (также можно добавлять свох ботов и IP), они без препятствий попадают на сайт и никак не замечают присутствия скрипта автобота. Это сделано согласно официальной документации и рекомендации этих поисковиков:

Т.е вам собирать белые списки можно - а мне руки отрубать? :))))

Пользуюсь этим списком более года - траф только растет. Сайты добавлены в кабинеты вебмастеров гугла и яндекса и ниразу не было сообщений о проблемах сканирования.

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

У меня есть так же отдельный лог для "возможно бот поисковика" - где собираются запросы от подсетей НЕ посиковиков, но с юзерагентом поисковиков.

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

А вскоре я автоматизирую этот процесс и вообще не буду туда лазить.

P.S. аа ну все понятно :))) увидел вашу подпись.... мешаю бизнесу да? :)))

Не вижу смысла засирать аптейблс.

Где я на 100% уверен что бот - отдаю 444 ошибку (просто разрываю соединение, nginx этого действа вообще не чувствует, это совершенно его не нагружает.

Например

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;
}

или

map "$whitelist:$server_protocol" $bad_bot {
default 0;
"0:HTTP/1.0" 1;
}

Таким сразу

if ($bad_useragent) {
return 444;
}
if ($bad_bot) {
return 444;
}

остальных торможу через limit_req_zone или отправляю на гугл капчу.

P.S. вот Оптимизайка предлагал еще одно оригинальное решение /ru/forum/958253

если в кратце - блокируются через апсет подсети всех крупных датацентров мира. Ведь 90% мусорного трафика идет как раз с разных серверов (не с домашних компов).

Я юзал его решение почти год - полет был нормальный рекомендую.

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%.

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

Всего: 6924