DSpace и боты — банальные откровения

Продолжаю свои банальные заметки. Посредством правил в .htaccess, robots.txt и fail2ban удалось заметно снизить фактическую нагрузку на систему посредством поражения в правах сервисов, которые не конвертируют своих клиентов в наших посетителей, но… количество запросов значительно снизить не удалось.

Т.е. забаненные в robots.txt и .htaccess (по юзерагенту) роботы продолжают методично обходить ресурс по старым картам и/или внешним ссылкам, получая 403 до тех пор пока не сработает fail2ban (тоже по юзерагенту).

В интернетах рекомендации относительно robots.txt сводятся обычно к чему-то такому:

User-agent: ChatGPT-User
Disallow: /

Рекомендации для конфигурации веб-сервера, к чему-то такому:

RewriteCond %{HTTP_USER_AGENT} ChatGPT-User
RewriteRule (.*) - [F,L]

И это не ошибка выжившего, реально рекомендации в этих ваших интернетах вот точно такие, но бот никуда не уходит и продолжает долбить сайт получая 403. Что в таких случаях предлагают интернеты? Правильно, zip-бомбу. Но если посмотреть в логи, то… очевидно противоречие:

elar.urfu.ru:443 40.116.73.214 - - [02/Jun/2025:12:55:26 +0500] "GET /robots.txt HTTP/1.1" 403 3781 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot"

Строчка логов вполне реальная.

Так что, код:

RewriteCond %{HTTP_USER_AGENT} ChatGPT-User
RewriteRule (.*) - [F,L]

стоит заменить на код:

RewriteCond %{HTTP_USER_AGENT} ChatGPT-User
RewriteCond %{REQUEST_URI} !robots\.txt$
RewriteRule (.*) - [F,L]

и уже после этого смело говорить что этот ваш чатгпт does not respect robots.txt.

Пока, настройки на стороне web-сервера выглядят так:

RewriteCond %{HTTP_USER_AGENT} Yatcybot
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 не будет 🙂

Запись опубликована в рубрике Библиотека с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *