Боты5 мин чтения·7 августа 2026 г.

Generic Crawler: почему это не один бот, а десятки разных скриптов

Разбор Generic Crawler (compatible; crawler)) — обобщённого User-Agent, который используют по умолчанию многие HTTP-библиотеки. Почему нельзя строить профиль поведения как для одного бота и как правильно решить allow/deny.

TVTrafficVeil TeamЭксперты по защите веб-трафика

В логах сайт может выглядеть «живым», хотя рост даёт не аудитория, а Generic Crawler с User-Agent вида compatible; crawler). HTTP-клиент с фрагментом «Generic Crawler» в User-Agent — типичен для скриптов, CI-пайплайнов и backend-сервисов. Важно понимать: это не идентификатор конкретного бота, а отражение программной библиотеки запроса, которая используется по умолчанию, если разработчик не задал собственную строку UA.

Что такое Generic Crawler

Параметр Значение
Название Generic Crawler
User-Agent / паттерн compatible; crawler)
Оператор не указан публично / определяется по UA и поведению
Роль Появление Generic Crawler в access.log означает машинный доступ к сайту — не пользовательскую сессию
Документация / ориентир Публичная документация зависит от оператора; опирайтесь на UA + поведение + ASN
Список IP ❌ Редко бывает отдельный полный список именно для этого UA; проверяйте ASN/официальные диапазоны оператора и не доверяйте только строке UA
robots.txt Крупные операторы чаще соблюдают; технические клиенты и user-initiated fetchers — не всегда
Пометка TrafficVeil Нежелательный / Прочие краулеры и сервисы

Почему это не «один бот», а десятки разных скриптов

Ключевое отличие Generic Crawler от других записей энциклопедии: за большинством токенов здесь стоит один конкретный оператор (даже если неизвестный), а за compatible; crawler) может стоять множество совершенно не связанных друг с другом источников одновременно. Многие популярные HTTP-библиотеки — от Python `urllib`/`requests` до Java `Jakarta Commons-HttpClient` и десятков менее известных — исторически ставят обобщённый User-Agent по умолчанию, если разработчик не задал свою строку явно. Разработчикам библиотек прямо рекомендуют избегать слов вроде «bot» или «crawler» в дефолтной строке именно потому, что это создаёт такую путаницу и может привести к более строгим лимитам на стороне сайта. Практическое следствие: не пытайтесь построить единый «профиль поведения» Generic Crawler, как для настоящего бота — под одним и тем же UA-фрагментом могут скрываться: забытый тестовый скрипт коллеги, чей-то CI/CD пайплайн, мониторинг аптайма стороннего сервиса, устаревшая интеграция партнёра и изредка — по-настоящему вредоносный скрапер, который просто не потрудился подделать что-то более убедительное.

Зачем Generic Crawler приходит на сайт

Появление Generic Crawler в access.log означает машинный доступ к сайту — не пользовательскую сессию.

  • Какие зоны чаще трогает: публичные URL, иногда API и статику
  • Что ищет: контент, метаданные, availability или ссылочный граф — в логике категории «Прочие краулеры и сервисы»
  • Чем отличается от браузерного пользователя: нет нормальной сессии, другие интервалы, повторяемый path-паттерн

Типичный кейс: CDN-трафик дорожает, origin CPU пилит HTML. Фильтр по compatible; crawler) показывает, что Generic Crawler вычитывает разделы: публичные URL, иногда API и статику.

Не уверены, кто ходит по вашему сайту?

Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.

Посмотреть свой трафик

Нагрузка и риски

Отдельной строки в публичной сводке top-bot TrafficVeil у compatible; crawler) может не быть, но в категории «Прочие краулеры и сервисы» такие агенты дают характерный фон: на отдельных доменах серии запросов выглядят как мини-волны автоматизации без конверсий. Смотрите не только абсолютный RPS, но и качество хитов: глубина обхода, повторы одних и тех же URL, отсутствие cookie/сессий и концентрация на служебных или листовых страницах. Поскольку источников может быть несколько одновременно, картина в логах иногда выглядит «рваной» — не единый ровный паттерн одного бота, а наложение нескольких разных скриптов.

Как найти Generic Crawler в логах

# Базовый поиск
grep -i "compatible; crawler)" /var/log/nginx/access.log

# Топ URL, которые вычитывает бот
grep -i "compatible; crawler)" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head

# Топ IP за этим UA — один источник или много разных?
grep -i "compatible; crawler)" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

# Суточная активность
grep -i "compatible; crawler)" /var/log/nginx/access.log | awk '{print $4}' | cut -d: -f1 | sort | uniq -c

# Отделить от похожих строк
grep -iE "compatible; crawler)|bot" /var/log/nginx/access.log | wc -l

Разброс IP здесь особенно важен для интерпретации: если запросы идут с одного-двух адресов — вероятно, это один забытый скрипт (возможно, даже внутренний). Если IP разбросаны по множеству разных сетей и стран при одинаковом фрагменте UA — это подтверждает гипотезу «много разных источников», а не один оператор.

Верификация

Подделать User-Agent может любой скрипт. Для решения allow/deny смотрите связку: UA + ASN/IP + частоту + набор URL. Если оператор публикует диапазоны — сверяйте их; если нет, опирайтесь на поведение и политику TrafficVeil.

IP="1.2.3.4"
whois -h whois.cymru.com " -v $IP"
dig +short -x "$IP"

robots.txt для Generic Crawler

# Жёсткий запрет
User-agent: compatible; crawler)
Disallow: /

# Разрешить всё
User-agent: compatible; crawler)
Allow: /

# Компромисс: закрыть служебные разделы, оставить публичку
User-agent: compatible; crawler)
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /api/
Allow: /

Важно: Disallow/403 для compatible; crawler), если пользы нет. Если агент игнорирует robots.txt, переходите к nginx/Apache или запрету в TrafficVeil. Учитывая, что источников может быть несколько, полное исчезновение трафика после блокировки не гарантировано — какой-то из скриптов может использовать другую библиотеку с иным дефолтным UA.

Блокировка вручную и через TrafficVeil

Nginx

if ($http_user_agent ~* "compatible; crawler)") {
    return 403;
}

limit_req_zone $binary_remote_addr zone=compatiblecrawler:10m rate=10r/m;
location / {
    if ($http_user_agent ~* "compatible; crawler)") {
        limit_req zone=compatiblecrawler burst=20 nodelay;
    }
}

Apache (.htaccess)

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} compatible; crawler) [NC]
RewriteRule ^ - [F,L]

TrafficVeil

  • Найдите compatible; crawler) / Generic Crawler в ботах домена или в /system/bots
  • Для нежелательного сценария — категорию «запретить»; для мягкого — rate-limit
  • Allow только при явной пользе от Generic Crawler
  • После изменения сверьте логи: хиты Generic Crawler должны уйти в блок/лимит, а нужные поисковики остаться

Стоит ли проверить, не ваш ли это собственный скрипт

Прежде чем блокировать, есть смысл на минуту заглянуть внутрь компании: обобщённый UA часто означает забытую интеграцию, а не внешнюю угрозу. Стоит спросить у разработки и DevOps, не запускает ли кто-то мониторинг аптайма, парсер для внутренних нужд или тестовый CI-джоб на дефолтных настройках HTTP-библиотеки — иногда проще поправить одну строку кода на своей стороне (задать нормальный UA), чем гадать, легитимен ли трафик, каждый раз заново.

Рекомендации: что делать с Generic Crawler

  • Если пользы нет — Disallow/403 для compatible; crawler)
  • Если польза есть — Allow только при явной пользе от Generic Crawler
  • Если нагрузка мешает — сначала rate-limit, затем полный запрет
  • Не режьте слишком широко User-agent: *, чтобы случайно не закрыть Googlebot/YandexBot
  • Перед блокировкой стоит уточнить у своей же команды, не их ли это забытый скрипт
  • Что будет при блокировке: обычно ничего критичного для SEO не теряете, если это не поисковик и не ваш сервисный агент

Стратегия allow/deny

Ситуация Действие
Нужна польза от оператора (не указан публично / определяется по UA и поведению) Allow + закрыть /admin /cart /api
Только мешает и жрёт ресурсы Disallow + запрет в TrafficVeil
Нужен доступ, но пики по ночам Rate-limit на nginx/TrafficVeil
Похоже на внутренний забытый скрипт Уточнить у команды, поправить UA на стороне скрипта вместо блокировки
Подозрение на spoofing UA Не доверять строке UA; смотреть IP/ASN и поведение

Частые вопросы

Что такое Generic Crawler и кто его оператор?
Это не конкретный бот, а обобщённый User-Agent по умолчанию, который используют многие HTTP-библиотеки, если разработчик не задал свою строку.
Почему за Generic Crawler может стоять несколько разных источников?
Десятки популярных HTTP-библиотек (Python requests, urllib, Java Jakarta Commons-HttpClient и другие) исторически используют похожие дефолтные UA, поэтому под одним фрагментом могут скрываться разные несвязанные скрипты.
Как понять, один это источник или несколько?
По разбросу IP-адресов: один-два адреса обычно говорят о единичном скрипте, а множество разных сетей и стран — о нескольких независимых источниках.
Стоит ли проверить, не свой ли это скрипт, перед блокировкой?
Да, обобщённый UA часто означает забытую внутреннюю интеграцию (мониторинг, CI-джоб, тестовый парсер), а не внешнюю угрозу.
Гарантирует ли блокировка полное исчезновение такого трафика?
Не всегда: если источников несколько, один из них может использовать другую библиотеку с иным дефолтным UA, и потребуется отдельное правило.
Влияет ли блокировка Generic Crawler на SEO?
Нет, если это не поисковый бот и не ваш собственный сервисный агент — критичных потерь для позиций в поиске не будет.
#Generic Crawler#обобщённый User-Agent#HTTP-библиотеки#боты#robots.txt#TrafficVeil#верификация ботов
TV
TrafficVeil Team

Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.

Похожие статьи

Ещё материалы из раздела «Боты» — те же вопросы, другие агенты.

Проверьте защиту своего сайта

Подключение занимает несколько минут. Начните с анализа трафика и включайте блокировки после проверки логов.

Тарифа на трафик нет. Платите за людей, а не за тех, кого отбили: боты, атаки и всё, что срезали фильтры, в счёт не идут. Тариф — число доменов и глубина настроек.

TrafficVeil