- Разработчик Ян Эспозито предложил простой способ защиты экземпляра Forgejo от веб-краулеров с искусственным интеллектом с помощью конфигурации в Nginx.
- Решение основано на проверке определённого cookie и перенаправлении посетителей без него на страницу с ошибкой 418 и установкой cookie через JavaScript.
- Данная стратегия позволяет сохранять полноценную работу сервиса для обычных пользователей и эффективно блокирует избыточные запросы краулеров, не перегружая сервер.
Ян Эспозито, разработчик и пользователь платформы совместной разработки Forgejo, поделился практическим решением, как защитить свой экземпляр Forgejo от агрессивных веб-краулеров с искусственным интеллектом. Эта проблема возникла из-за чрезмерной нагрузки от множества запросов, которые просматривали каждый коммит на его сервисе, приводя к сбоям и постоянным перезапускам.
Изначально Эспозито применил радикальную меру – полную блокировку сайта для всех, кроме себя, однако это противоречит концепции публичного ресурса. Затем была попытка использовать Anubis – более продвинутую систему защиты, однако она оказалась слишком ресурсоёмкой и сложной для его нужд. В поисках более лёгкого решения, он адаптировал идею из статьи о блокировке AI-краулеров с помощью Caddy и внедрил её в конфигурацию Nginx.
Суть метода проста и эффективна: при заходе на сайт проверяется наличие определённого cookie (рекомендуется заменить строку Yogsototh_opens_the_door на своё уникальное имя). Если cookie отсутствует, пользователь перенаправляется на страницу с HTTP-статусом 418 и JavaScript, создающим этот cookie и перезагружающим страницу. Благодаря этому стандартные браузеры проходят проверку и продолжают работу без заметных задержек, а многие веб-краулеры, особенно не поддерживающие выполнение JavaScript, блокируются и не создают нагрузку на сервер.
Эспозито отмечает, что подобный метод не является непроходимой защитой, так как искусственные краулеры могут со временем адаптироваться, особенно если этот приём станет массово использоваться. Тем не менее, на данный момент это простое, минимально инвазивное и практически незаметное для обычных пользователей средство помогает избежать перегрузок.
Автор подчеркивает важность баланса между доступностью публичного хостинга и защитой от бесконтрольных сканеров и вручая пользователям эффективный инструмент, который можно быстро внедрить без существенных затрат ресурсов и сложных настроек.
Стоит отметить, что инциденты с интенсивным парсингом и ботами не новы. Недавно другой инженер столкнулся с падением производительности своего ресурса из‑за массовых запросов AI-ботов, а сторонние проекты предлагают более сложные ловушки для краулеров, вроде лабиринта Nepenthes, генерирующего случайные страницы для отвлечения сканеров.
Таким образом, представленное Эспозито решение является практичным примером того, как можно защитить высоконагруженные публичные репозитории от нежелательных сканирующих роботов с искусственным интеллектом, сохраняя комфорт для легитимных пользователей.
