Продолжаю свои банальные заметки. Посредством правил в .htaccess, robots.txt и fail2ban удалось заметно снизить фактическую нагрузку на систему посредством поражения в правах сервисов, которые не конвертируют своих клиентов в наших посетителей, но… количество запросов значительно снизить не удалось.
Т.е. забаненные в robots.txt и .htaccess (по юзерагенту) роботы продолжают методично обходить ресурс по старым картам и/или внешним ссылкам, получая 403 до тех пор пока не сработает fail2ban (тоже по юзерагенту).
В интернетах рекомендации относительно robots.txt сводятся обычно к чему-то такому:
Disallow: /
Рекомендации для конфигурации веб-сервера, к чему-то такому:
RewriteRule (.*) - [F,L]
И это не ошибка выжившего, реально рекомендации в этих ваших интернетах вот точно такие, но бот никуда не уходит и продолжает долбить сайт получая 403. Что в таких случаях предлагают интернеты? Правильно, zip-бомбу. Но если посмотреть в логи, то… очевидно противоречие:
Строчка логов вполне реальная.
Так что, код:
RewriteRule (.*) - [F,L]
стоит заменить на код:
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
и уже после этого смело говорить что этот ваш чатгпт does not respect robots.txt.
Пока, настройки на стороне web-сервера выглядят так:
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} OAI-SearchBot
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} ChatGPT-User
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} ClaudeBot
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} keys-so-bot
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} curl
RewriteRule (.*) - [F,L]
RewriteCond %{HTTP_USER_AGENT} Hello-World
RewriteRule (.*) - [F,L]
Про то что код выше можно свести к «двум правилам» я знаю, но так нагляднее. Объяснений по поводу curl и Hello-World не будет 🙂