Нижепредложенный скрипт был наконец написан (лет 6 назад), когда устал каждый день смотреть логи сервера, где чётко видно было "мусорные" запросы, раздувающие лог и дающие лишнюю нагрузку на хостинге. Исключительно в познавательных целях! Нормальную защиту реализуют средствами сервера, а этот php-скрипт лишь превентивная мера. Огромная часть бот-трафика это запросы вида:  51.120.240.89 - - [01/Apr/2022:15:28:26 +0300] "GET /wp-content/plugins/ubh/up.php/.well-known/ HTTP/1.1" 403 "Mozlila/5.0 (Linux; Android 7.0; SM-G892A Bulid/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Moblie Safari/537.36" 51.120.240.89 - - [01/Apr/2022:15:28:44 +0300] "GET /wp-content/plugins/ubh/up.php/.well-known/ HTTP/1.1" 403 "Mozlila/5.0 (Linux; Android 7.0; SM-G892A Bulid/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Moblie Safari/537.36" 51.120.240.89 - - [01/Apr/2022:15:29:16 +0300] "GET /wp-content/uploads/ HTTP/1.1" 403 "Mozlila/5.0 (Linux; Android 7.0; SM-G892A Bulid/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Moblie Safari/537.36" 51.120.240.89 - - [01/Apr/2022:15:29:42 +0300] "GET /wp-includes/ HTTP/1.1" 403 "Mozlila/5.0 (Linux; Android 7.0; SM-G892A Bulid/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 И все 50-200 строк в таком духе, за короткий промежуток времени. То есть видим ip-адрес атакующего -- [дата:время] "вид запроса и собственно сам запрос (/wp-content/wp-includes)" код ответа сервера 403 (т.к. ip-адрес не российский, город Осло, но об этом в следующих постах) строка UserAgent (может быть любой). Сам скрипт настраиваемый по частоте запросов в единицу времени. Например, 4 запроса за 1 секунду приведут к блокировке атакующего ip-адреса на 60 секунд. Чтобы не было вопросов "А как же поисковые боты, типа Яндекса и пр." встроил проверку на поискового бота. Если это например робот Яндекса, то скрипт пропускает его и не проверяет больше ничего, не следит за активностью. Если это не из списка разрешённых ботов, то идёт отслеживание активности и если это откровенно "долбёжка", парсинг или как в вышеприведённом кусочке лога - попытка узнать/взломать вашу CMS - однозначно блокировка на указанное в настройках время (у меня 60 сек). Собственно сам скрипт: Для установки скрипта:  создаём папку, например block; в ней создаём папки active и block; создаём php-файл с вышеприведённым скриптом, например bot_block_ip.php; на любом сайте, в индексном файле, в самом начале подключаем наш скрипт: Например, в Битрикс я разместил скрипт в папке tools: Скрипт прекрасно работает на php 7.4. Анализируя логи сервера стал замечать, что атакующие боты стали делать паузы между запросами (раньше доходило до 10-20 запросов в секунду, сейчас некоторые боты стали делать 1-2 запроса в секунду-две) и было решено - отсечь трафик не из России. Конечно пользоваться vpn и proxy никто не запрещает, но доля "мусорного" трафика сошла почти на нет. Если этот пост заинтересует достаточное количество людей, то напишу в следующих постах о доработанной версии этого скрипта, который блокирует все запросы не из России например (можно любую страну выбрать). Спасибо, что прочитали. Сильно не критикуйте, скрипт работает, что от него и требовалось :-)  Программист 1С-Битрикс