Настройка robots.txt и rate limiting для AI-краулеров
Хочу себе такие же кнопкиВведение
Вы уже знаете, как поисковые роботы читают ваш сайт, но AI‑краулеры (модели, которые сканируют веб‑страницы для обучения) работают по чуть‑чуть другим правилам. Правильная настройка файла robots.txt и ограничение частоты запросов (rate limiting) позволяют:
- Защитить сервер от перегрузки, когда несколько сотен запросов приходят одновременно.
- Сохранить «чистоту» данных, которые используют для обучения, исключив конфиденциальные или низкокачественные страницы.
- Улучшить индексацию, потому что краулер получает именно те ресурсы, которые вы хотите ему показать.
В этом уроке мы разберём, как создать и поддерживать robots.txt для AI‑краулеров, а также как реализовать rate limiting на уровне веб‑сервера и CDN. Всё подано простыми словами, с аналогиями и готовыми примерами, которые вы сможете сразу применить.
1. Что такое robots.txt и почему он важен для AI
| Понятие | Описание | Аналогия |
|---|---|---|
| robots.txt | Текстовый файл в корне сайта, который сообщает роботам, какие части сайта они могут, а какие — нет. | Как вывеска «Вход только для сотрудников» у входной двери. |
| AI‑краулер | Автоматический сканер, который собирает данные для обучения нейросетей (например, GPT‑4, Claude). | Как исследователь, который собирает образцы для своей лаборатории. |
| User‑agent | Идентификатор робота, который отправляет запрос (например, Googlebot, Bingbot, OpenAI‑Crawler). |
Как имя посетителя в журнале входов. |
Ключевой термин: User‑agent — в robots.txt вы указываете, какие правила применимы к какому агенту. AI‑краулеры часто используют свои собственные User‑agent‑ы, например OpenAI‑Crawler или Meta‑AI‑Bot. Если вы не задаёте правила, такие боты могут сканировать всё без ограничений, что приводит к:
- Перегрузке сервера (много запросов в секунду).
- Утечке конфиденциальных данных (страницы, которые не предназначены для публичного доступа).
2. Синтаксис robots.txt для AI‑краулеров
Файл состоит из блоков, каждый из которых начинается с директивы User-agent: и заканчивается Disallow:/Allow:. Пример базовой структуры:
User-agent: *
Disallow: /private/
Allow: /public/
2.1. Как добавить отдельный AI‑краулер
User-agent: OpenAI-Crawler
Disallow: /admin/
Disallow: /test-data/
Allow: /
User-agent: OpenAI-Crawler— правило применяется только к этому боту.Disallow:— путь, который бот не будет сканировать.Allow:— путь, который бот может сканировать, даже если выше стоит более общийDisallow:.
2.2. Приоритет правил
- Более конкретный
User-agentпереходит над глобальным*. - Если один и тот же путь указан в обоих
DisallowиAllow,Allowберёт приоритет (по спецификации Google).
2.3. Специальные директивы для AI
| Директива | Описание | Пример |
|---|---|---|
Crawl-delay |
Задержка в секундах между запросами от одного бота. | Crawl-delay: 5 |
Noindex (через X-Robots-Tag) |
Инструктирует бота не индексировать страницу, но всё равно её скачать. | В HTTP‑заголовке: X-Robots-Tag: noindex |
Sitemap |
Указывает путь к файлу карты сайта, облегчая навигацию. | Sitemap: https://example.com/sitemap.xml |
Важно: Не все AI‑краулеры поддерживают
Crawl-delay. Поэтому в следующем разделе мы покажем, как задать ограничение частоты запросов на уровне сервера.
3. Ограничение частоты запросов (Rate Limiting)
3.1. Почему robots.txt не всегда спасает
- Crawl-delay иногда игнорируется (особенно у экспериментальных ботов).
- Боты могут использовать многопоточные запросы, обходя задержку.
Поэтому необходимо серверное решение, которое будет контролировать количество запросов от одного IP‑адреса или от одного User-agent.
3.2. Основные стратегии
| Стратегия | Как работает | Пример использования |
|---|---|---|
| Token Bucket | На каждый IP‑адрес «бакет» с токенами; каждый запрос «покупает» токен, если их нет — запрос отклоняется. | Позволяет выдерживать пиковые нагрузки, но ограничивает средний поток. |
| Leaky Bucket | Поток запросов «вытекает» из бакета с фиксированной скоростью; избыточные запросы «переполняют» и отклоняются. | Простой для реализации в Nginx/Apache. |
| Fixed Window | Счётчик запросов за фиксированный интервал (например, 1 минуту). | Хорошо подходит для небольших сайтов. |
| Sliding Window | Похож на Fixed Window, но учитывает запросы за скользящее окно, более точный контроль. | Требует более сложных хранилищ (Redis). |
3.3. Реализация в популярных веб‑серверах
3.3.1. Nginx (модуль ngx_http_limit_req_module)
http {
# Параметры лимитера
limit_req_zone $binary_remote_addr zone=ai_zone:10m rate=5r/s;
server {
location / {
# Применяем к AI‑User‑agent
if ($http_user_agent ~* "OpenAI-Crawler|Meta-AI-Bot") {
limit_req zone=ai_zone burst=10 nodelay;
}
# Обычная обработка запросов
proxy_pass http://backend;
}
}
}
rate=5r/s— 5 запросов в секунду с одного IP.burst=10— допускает до 10 «взрывных» запросов, после чего начинает отклонять.
3.3.2. Apache (модуль mod_ratelimit)
<IfModule mod_ratelimit.c>
# Ограничиваем только для AI‑User‑agent
SetEnvIfNo User-Agent "OpenAI-Crawler|Meta-AI-Bot" ai_crawler
<Location "/">
RateLimitSet 200 K
RateLimitEnable on
Order allow,deny
Allow from all
# Применяем только к переменной
SetEnvIf Request_URI ".*" ai_crawler
</Location>
</IfModule>
RateLimitSet 200 Kограничивает скорость передачи до 200 KB/s, что косвенно снижает количество запросов в секунду.
3.3.3. CDN (Cloudflare, Fastly)
Большинство CDN‑служб предоставляют Rate Limiting Rules в UI. Пример правила для Cloudflare:
| Условие | Действие |
|---|---|
User-Agent содержит OpenAI-Crawler |
Block после 100 запросов в минуту с одного IP. |
Path начинается с /api/ |
Throttle до 10 rps. |
Совет: Сочетайте
robots.txt(для указания что сканировать) с серверным лимитером (для указания как быстро).
4. Лучшие практики и типичные ошибки
4.1. Что следует включать в robots.txt для AI
| Что | Почему | Как оформить |
|---|---|---|
| Disallow: /admin/ | Защита конфиденциальных панелей. | Disallow: /admin/ |
| Disallow: /private-data/ | Не хотите, чтобы обучающие модели «видели» личные данные. | Disallow: /private-data/ |
| Allow: /public/ | Явно открываем полезный контент. | Allow: /public/ |
| Crawl-delay: 2 | Пытаемся снизить нагрузку (если бот её поддерживает). | Crawl-delay: 2 |
| Sitemap: https://example.com/sitemap.xml | Помогаем боту быстрее находить нужные URL. | Sitemap: https://example.com/sitemap.xml |
4.2. Частые ошибки
| Ошибка | Последствия | Как исправить |
|---|---|---|
Отсутствие User-agent |
Бот будет применять глобальные правила, которые могут быть слишком «жёсткими». | Указывайте отдельный блок для каждого AI‑User‑agent. |
Неправильный путь (Disallow: admin/ без слеша) |
Бот может всё равно сканировать /admin/. |
Всегда ставьте завершающий /. |
Игнорирование Crawl-delay |
Перегрузка сервера. | Добавьте серверный лимитер (см. §3). |
Размещение robots.txt не в корне |
Бот не найдёт файл и будет сканировать всё. | Файл обязан находиться по адресу https://example.com/robots.txt. |
Слишком агрессивный Disallow |
Потеря индексации полезных страниц. | Делайте Disallow только там, где действительно нужно. |
4.3. Мониторинг и отладка
- Проверка синтаксиса — онлайн‑инструменты (например,
robots.txt validator). - Логи сервера — ищите строки
User-Agent: OpenAI-Crawlerи смотрите, сколько запросов в минуту. - Метрики CDN — часто есть графики «Rate Limiting Events».
5. Пример полного robots.txt для сайта, который хочет контролировать AI‑краулеров
# Общие правила для всех ботов
User-agent: *
Disallow: /tmp/
Disallow: /cgi-bin/
Allow: /
# Правила для OpenAI‑Crawler
User-agent: OpenAI-Crawler
Disallow: /admin/
Disallow: /user-data/
Allow: /public/
Crawl-delay: 3
# Правила для Meta‑AI‑Bot
User-agent: Meta-AI-Bot
Disallow: /secret/
Allow: /
Crawl-delay: 2
# Карта сайта
Sitemap: https://example.com/sitemap.xml
- Общие правила защищают временные и системные каталоги.
- Отдельные блоки позволяют задать разные задержки и пути для каждого AI‑бота.
6. Как проверить, что всё работает
-
Запрос к
robots.txtcurl -I https://example.com/robots.txtДолжен вернуть
200 OKи правильный контент. -
Тестовый запрос от AI‑User‑agent (симуляция)
curl -A "OpenAI-Crawler" -I https://example.com/admin/dashboardОжидаем
403 Forbiddenили404 Not Found(в зависимости от настройки сервера). -
Проверка лимитера
Сгенерируйте 20 запросов за 5 секунд и убедитесь, что после 5‑го запрос отклоняется (получаем429 Too Many Requests).
7. Практика для закрепления
-
Создайте файл
robots.txtдля сайтаmyblog.com, где нужно закрыть/drafts/и/private/от всех ботов, но открыть/public/дляOpenAI-Crawler. УкажитеCrawl-delay: 4для этого бота. -
Настройте Nginx‑лимитер так, чтобы
OpenAI-Crawlerмог делать не более 3 запросов в секунду с одного IP, но позволял «взрывные» до 6 запросов. Приведите конфигурацию. -
Симулируйте запросы с помощью
curl(или любого HTTP‑клиента) и покажите, как выглядит ответ сервера, когда лимит превышен. -
Проанализируйте логи (пример в виде фрагмента) и ответьте: сколько запросов от
Meta‑AI‑Botбыло отклонено за последнюю минуту? -
Объясните в двух‑трёх предложениях, почему стоит использовать одновременно
robots.txtи серверныйrate limiting.
Готово! После выполнения упражнений вы будете уверенно управлять доступом AI‑краулеров к вашему сайту, защищая ресурсы и поддерживая стабильную работу сервера. 🚀
БЕСПЛАТНЫЙ КУРС: «КАК ЗАЩИТИТЬ ДАННЫЕ ЦИФРОВЫМ СЕЙФОМ»
Бесплатный урок: Как оптимизировать Битрикс на VDSina
Быстрое общение через чат онлайн
Быстрые способы исправления AutoCAD
Чат-встреча
Что такое маркетинговый аудит
Инновационные подходы Сбер Нейросети в моделировании временных рядов для экономических прогнозирован
ИП или ООО: выбор структуры бизнеса в 2024 году
Как исправить ошибки при создании видео с помощью нейросети
Как оплатить ИИ-услуги
Как создать видео с помощью нейросети без вложения средств
Как заработать $3000/мес в РФ 2026 с РКН и Adsense на европейских запросах
Китайские фитинги и трубы для инженерных систем
Коттеджный поселок "Дуслык" — у Уфы
Лучшие практики создания видео с помощью нейросети в 2023 году
Материалы ОГЭ по обществознанию: кратко и понятно
Онлайн диалоги Екатеринбург
Онлайн видеорулетка
Подписи к направлениям на схемах
Путешествуйте самостоятельно: полное руководство для новичков
Рулетка онлайн демо версия
Субтитры — в сторону, уши — в деле: 5 минут на погружение


Follow Gidin on Twitter!