В логах сайт может выглядеть «живым», хотя рост даёт не аудитория, а 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 и кто его оператор?
Почему за Generic Crawler может стоять несколько разных источников?
Как понять, один это источник или несколько?
Стоит ли проверить, не свой ли это скрипт, перед блокировкой?
Гарантирует ли блокировка полное исчезновение такого трафика?
Влияет ли блокировка Generic Crawler на SEO?
Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.