Виталий Литвинов

Виталий Литвинов
Рейтинг
134
Регистрация
08.05.2008
Интересы
Музыка
Я сделал чтобы на сайте распознавало и банило быстрых ботов - кроме поисковиков создающих большую нагрузку на сервер.
Я их вычисляю так - показываю картинку через джава скрипт которая ставит куки в браузер - люди в нормальных браузерах ходят с этой cookies, а роботы ходят без неё - так и распознаю людей и роботов! А дальше дело техники - делай с ними что хочешь!
Можно ещё так заблокировать.
2a07::/16
О, в логах всякого можно насмотреться там бывает и не такое :)
 RewriteEngine On

# Если запрос не к robots.txt, то делаем редирект
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteRule ^.*$ http://new-domain.com%{REQUEST_URI} [R=302,L]

# Если запрос к robots.txt, то возвращаем код 200
<Files "robots.txt">
    Allow from all
</Files>

Я себе настроил чтобы всех кто делает слишком много запросов в минуту без cookies банило автоматически - кроме поисковых роботов!
На зеркалах нужно для всего делать 301 редирект кроме /robots.txt для него должен быть код ответа 200. 
Ваше текущее правило .htaccess блокирует все запросы, которые не имеют HTTP_REFERER и не содержат определенных строк в HTTP_FROM. Это может быть проблемой для Google-Site-Verification и других ботов, которые не всегда отправляют HTTP_REFERER.
Вместо этого, вы можете попробовать использовать HTTP_USER_AGENT для идентификации ботов. Большинство поисковых ботов, включая Google, идентифицируют себя через HTTP_USER_AGENT.
Ваше новое правило может выглядеть так:

RewriteEngine On RewriteCond %{HTTP_REFERER} ^$ RewriteCond %{HTTP_USER_AGENT} !(google|Google-Site-Verification|yandex|mail|rambler) RewriteRule ^ - [F]


Вот что чат GPT 4 пишет по этому поводу!

Ваш текущий код .htaccess не работает с IPv6 из-за того, что директивы allow и deny устарели и не поддерживаются в новых версиях Apache (начиная с версии 2.4). Вместо них следует использовать директивы Require и RequireNot.
Вот пример того, как можно заблокировать IPv6 адреса с использованием нового синтаксиса:

apache

Copy

<RequireAll>

Require all granted
RequireNot ip 2a07:ac82::/32
RequireNot ip
Так весь смысл в том что когда есть атака то сайт тормозит и показывает ошибки часа 4, потом все ip участвующие в атаке сами блокируются и атака прекращается. Потом можно перезагрузить сервер и все разбанятся и так снова по кругу! И всех записывать в список - потом можно этот список банить при наличии атаки.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20000 > /root/file10.txt

Как не странно - нагрузки почти нет и всё очень быстро!

Нагрузка большая когда добавляешь 20000 правил iptables сразу, я переделал и использую iptables-restore он не тормозит.

Всего: 77