Боты6 мин чтения·21 августа 2026 г.·обновлено 8 сентября 2026 г.

Aiohttp Client в логах: библиотека, а не единый бот

За токеном aiohttp/ в access.log может стоять что угодно — от собственного скрипта мониторинга до чужого скрейпера, потому что это открытая Python-библиотека без единого оператора, а не именованный сервис. Разбираемся, почему нетронутый aiohttp-заголовок часто выдаёт скорее легитимный внутренний трафик, чем попытку спрятаться, и как не заблокировать случайно свою же интеграцию вместе с чужим фоновым шумом.

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

aiohttp/ в логах — не имя одного конкретного бота, а технический отпечаток открытой Python-библиотеки для асинхронных HTTP-запросов. За этим токеном может стоять буквально что угодно: внутренний скрипт компании, webhook-сервис, монитор аптайма, интеграция через API — или наивный скрейпер, который просто не потрудился подменить User-Agent. Именно поэтому категория «Технические клиенты» здесь точнее, чем «бот» в привычном смысле: единого оператора у aiohttp нет и быть не может.

1. Что такое aiohttp Client на самом деле

aiohttp — популярная библиотека с открытым кодом (проект Aio-Libs) для асинхронных HTTP-запросов на Python, официальная документация — docs.aiohttp.org. Библиотекой пользуются тысячи независимых разработчиков и сервисов для совершенно разных задач: от простых internal-скриптов до промышленных интеграций. Библиотека может выступать и клиентом (делает запросы к вашему сайту — именно этот случай попадает в access.log), и сервером — это два разных режима использования одного и того же проекта.

Если разработчик не переопределяет заголовок явно, aiohttp автоматически подставляет собственный User-Agent в формате версии Python и версии библиотеки:

Python/3.9 aiohttp/3.8.6

Именно поэтому черновой паттерн поиска только по aiohttp/ технически верен, но обедняет картину: полная строка обычно включает и версию Python, что может пригодиться при более точной сегментации трафика по разным клиентам/скриптам.

Параметр Значение
Название aiohttp Client
Природа Открытая Python-библиотека для HTTP-запросов, а не отдельный именованный сервис или компания
User-Agent / паттерн Полная форма по умолчанию: Python/X.X aiohttp/X.X.X; краткий поиск по aiohttp/ тоже сработает
Оператор Не существует единого оператора — библиотеку использует неограниченное число независимых разработчиков и сервисов
Важная особенность Заголовок User-Agent тривиально подменяется одной строкой кода — то, что он НЕ подменён, само по себе слабый сигнал: чаще так ведут себя внутренние скрипты и легитимные интеграции, а не боты, целенаправленно маскирующиеся под браузер
robots.txt Нет смысла ожидать единообразного поведения — соблюдение полностью зависит от того, как написан конкретный скрипт конкретного разработчика
Пометка TrafficVeil Легитимный / Технические клиенты

2. Зачем aiohttp Client приходит на сайт

Поскольку это не единый сервис, а инструмент, реальных сценариев использования много одновременно на одном и том же домене:

  • Мониторинг доступности — самописный или коробочный скрипт проверяет, что сайт или конкретный эндпоинт отвечает;
  • Webhook и интеграции — сторонний сервис, подключённый к вашему сайту по API, делает запросы через aiohttp внутри своего кода;
  • Внутренняя автоматизация — собственные скрипты компании (парсинг курсов, синхронизация данных, тестирование) написаны на Python с этой библиотекой;
  • Начинающий или неаккуратный скрейпер — кто-то собирает данные с сайта и не позаботился о том, чтобы выглядеть как обычный браузер.

Типичный кейс: в аналитике фиксируется рост hits без реальных сессий, в access.log под этим временем преобладает aiohttp/ на пагинации и карточках. Поскольку у библиотеки нет единого владельца, разбираться нужно не «кто такой aiohttp», а какой конкретно скрипт это делает — через паттерн запрашиваемых URL, IP и время суток.

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

Главный практический риск — фоновый шум в аналитике и расход CPU/bandwidth, который искажает статистику «живого» трафика в Метрике/GA. Поскольку под одним UA может скрываться сразу несколько разных клиентов с разными целями, стоит сегментировать трафик по IP/ASN, а не считать весь aiohttp/-трафик однородным.

Полезный практический нюанс: если бы кто-то целенаправленно хотел замаскировать скрейпинг под обычного пользователя, подмена User-Agent на строку браузера — это буквально одна строка кода в aiohttp. Поэтому нетронутый заголовок aiohttp/ в логах чуть чаще указывает на легитимный внутренний или интеграционный трафик, чем на попытку скрытного парсинга, — хотя это лишь статистическая склонность, а не гарантия.

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

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

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

4. Как найти aiohttp Client в логах

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

# Более точный поиск с версией Python — помогает отличать разные скрипты
grep -iE "Python/[0-9.]+ aiohttp/" /var/log/nginx/access.log

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

# Топ IP — здесь особенно важно, так как под одним UA могут быть разные источники
grep -i "aiohttp/" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

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

# Разбивка по версии библиотеки — разные IP с разными версиями почти наверняка разные клиенты
grep -oiE "aiohttp/[0-9.]+" /var/log/nginx/access.log | sort | uniq -c | sort -rn

Верификация. Подделать строку легко, но, как отмечено выше, сам факт «честного» aiohttp-заголовка — слабый позитивный сигнал. Для решения allow/deny смотрите связку UA + IP/ASN + частоту + набор URL — при таком общем UA это единственный способ понять, кто именно за ним стоит:

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

5. robots.txt для aiohttp Client

# Жёсткий запрет
User-agent: aiohttp/
Disallow: /

# Разрешить всё
User-agent: aiohttp/
Allow: /

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

Важно: поскольку под этим UA скрываются разные, никак не связанные между собой клиенты, правило в robots.txt заблокирует их все разом — включая, возможно, ваш собственный внутренний скрипт или полезную интеграцию. Прежде чем ставить общий Disallow, стоит убедиться, что среди источников нет своего же сервиса.

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

Nginx:

if ($http_user_agent ~* "aiohttp/") {
    return 403;
}

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

Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} aiohttp/ [NC]
RewriteRule ^ - [F,L]

TrafficVeil:

  • перед блокировкой по UA уточните у команды разработки, не завязана ли на aiohttp своя интеграция или мониторинг;
  • если источников несколько и часть из них полезна — точнее блокировать по конкретным IP/ASN нежелательных источников, а не по всему UA сразу;
  • для разовых непонятных всплесков без явного вреда — rate-limit безопаснее полного deny именно из-за смешанной природы этого трафика;
  • после изменения сверьте логи: нежелательные хиты должны уйти в блок/лимит, а собственные интеграции (если есть) — продолжать работать штатно.

7. Что делать: короткий алгоритм

  • Убедитесь, что среди источников нет вашего же скрипта или подключённой интеграции — это единственный шаг, специфичный именно для этого UA;
  • Пользы не найдено, источник чужой — Disallow/403;
  • Источников несколько с разными целями — сегментируйте по IP/ASN вместо блокировки всего UA целиком;
  • Нагрузка мешает, но природа трафика не ясна — сначала rate-limit, полный запрет позже;
  • Не блокируйте по маске User-agent: *, чтобы не задеть Googlebot/YandexBot заодно.

8. С кем не путать aiohttp Client

Бот / сосед Кластер UA Комментарий
Python Client (requests) Технические клиенты python-requests/ легитимный, синхронный аналог aiohttp — та же логика «библиотека, не сервис»
Go Client Технические клиенты go-http-client легитимный, тот же принцип для экосистемы Go
OkHttp Технические клиенты okhttp легитимный, HTTP-библиотека для Java/Kotlin/Android — в том числе внутри мобильных приложений
curl Технические клиенты curl/ легитимный, консольная утилита, а не библиотека приложений
Java HTTPClient Технические клиенты apache-httpclient легитимный

9. Стратегия allow/deny для aiohttp Client

Ситуация Действие
Источник — собственный скрипт или подключённая интеграция Allow, при необходимости закрыть только /admin /cart /api
Несколько разных источников под одним UA, часть полезна Разделять по IP/ASN, не блокировать весь UA целиком
Явно посторонний и мешает Disallow + запрет в TrafficVeil
Нужен доступ, но пики нерегулярны Rate-limit на nginx/TrafficVeil
Подозрение на скрытный скрейпинг под этим UA Маловероятно технически — маскировка под браузер тривиальна, поэтому чистый aiohttp-заголовок чаще не признак попытки спрятаться, но проверяйте IP/ASN на всякий случай

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

aiohttp Client — это конкретный бот с одним оператором?
Нет, это открытая Python-библиотека, которую независимо используют тысячи разработчиков для совершенно разных задач.
Соблюдает ли aiohttp правила robots.txt?
Это зависит целиком от того, как написан конкретный скрипт — у библиотеки нет единого поведения, которое можно было бы гарантировать.
Как выглядит User-Agent aiohttp по умолчанию?
Обычно это строка вида Python/3.9 aiohttp/3.8.6, а не просто голый токен aiohttp/.
Значит ли нетронутый aiohttp-заголовок, что это точно безобидный трафик?
Не гарантия, но слабый позитивный сигнал: подменить UA на браузерный — одна строка кода, и тот, кто хочет спрятаться, обычно так и делает.
Можно ли просто заблокировать весь трафик с этим UA?
Осторожно — под одним заголовком может скрываться и чужой скрейпер, и ваш собственный внутренний скрипт или интеграция, которую вы случайно отключите.
Как отличить разные источники под одним UA aiohttp?
По связке IP/ASN, паттерну запрашиваемых URL и версии Python/aiohttp в строке заголовка.
#aiohttp#Python#HTTP-клиент#User-Agent#технические клиенты#robots.txt#TrafficVeil
TV
TrafficVeil Team

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

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

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

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

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

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

TrafficVeil