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

Python Client: три разных UA под одним названием

«Python Client» в черновых списках выглядит как одна строка, но на деле это минимум три разных дефолтных User-Agent от разных библиотек — urllib, requests и urllib3, каждая со своим форматом. Разбираемся, почему грубый поиск по python/ неточен, как правильно сегментировать этот трафик и почему нетронутый python-заголовок чаще говорит о легитимном скрипте, чем о попытке спрятаться.

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

Python Client в логах — как и aiohttp или go-http-client, это не один сервис с конкретным оператором, а технический отпечаток целого семейства Python-библиотек для HTTP-запросов. Причём внутри самого «python» скрывается не одна строка UA, а минимум три разных стандартных варианта в зависимости от того, какую именно библиотеку использует конкретный скрипт — это стоит учитывать уже на этапе поиска в логах.

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

В экосистеме Python нет единого «HTTP-клиента» — есть несколько широко используемых библиотек, и у каждой свой дефолтный User-Agent, если разработчик не задал собственный:

Python-urllib/3.11        — встроенный модуль urllib.request (стандартная библиотека)
python-requests/2.31.0    — сторонняя библиотека requests, самая популярная для HTTP в Python
python-urllib3/2.2.3      — библиотека urllib3, на которой построен requests и многие другие клиенты

Обратите внимание на формат: официальные дефолты используют дефис после «python» (python-requests/, python-urllib3/) или заглавную P с дефисом (Python-urllib/) — а не слэш сразу после «python», как в паттерне черновика. Поиск по буквальному python/ может пропустить часть реального трафика или, наоборот, зацепить что-то постороннее в зависимости от точной формы регулярного выражения — стоит перепроверить паттерн на реальных логах.

Параметр Значение
Название Python Client
Природа Семейство дефолтных UA нескольких Python-библиотек — не единый сервис и не компания
Основные варианты UA Python-urllib/X.Y (стандартная библиотека), python-requests/X.Y.Z (requests), python-urllib3/X.Y.Z (urllib3)
Оператор Не существует единого оператора — библиотеки используют неограниченное число независимых разработчиков и сервисов
Особенность Подмена UA на браузерную строку — buквально одна строка кода (headers={"User-Agent": "..."}), поэтому нетронутый дефолт — слабый, но реальный сигнал ненамеренной маскировки
robots.txt Полностью зависит от конкретного скрипта — у библиотек самих по себе нет встроенной политики
Пометка TrafficVeil Легитимный / Технические клиенты

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

  • внутренние скрипты компаний — парсинг курсов, синхронизация данных, автоматизация задач, написанные на Python как одном из самых популярных языков для скриптинга и data-задач;
  • API-интеграции — сторонний сервис, подключённый к вашему сайту, реализован на Python и использует requests/urllib для запросов;
  • мониторинг и автоматическое тестирование — скрипты проверки доступности или автоматические тесты, написанные на Python;
  • учебные и исследовательские скрипты — Python часто выбирают именно из-за низкого порога входа, поэтому здесь выше, чем у других языковых клиентов, доля непрофессиональных или разовых скриптов;
  • неаккуратные скрейперы — как и с любым языковым HTTP-клиентом, часть трафика может быть сбором данных теми, кто не позаботился о маскировке под браузер.

Типичный кейс: в аналитике фиксируется рост hits без реальных сессий, в access.log под этим временем преобладает один из python-UA на пагинации и карточках. Поскольку у семейства нет единого владельца, ключевой вопрос — не «кто такой Python Client», а какой конкретно скрипт стоит за конкретным IP.

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

Главный практический риск — фоновый шум в аналитике и расход CPU/bandwidth, искажающий статистику «живого» трафика. Поскольку Python — один из самых доступных языков для написания скриптов, здесь стоит учитывать более широкий разброс качества кода: от аккуратных интеграций с соблюдением rate-limit до наспех написанных скриптов без всякого ограничения частоты запросов.

Как и с другими языковыми HTTP-клиентами: подмена UA на строку браузера — тривиальная операция. Нетронутый python-UA в логах — слабый, но реальный сигнал легитимного внутреннего трафика или интеграции, а не целенаправленной маскировки. Прежде чем блокировать весь UA целиком, стоит учитывать, что под ним могут быть сразу несколько разных, никак не связанных источников — включая, возможно, собственный скрипт компании.

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

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

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

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

# Базовый поиск — все варианты сразу
grep -iE "python-requests|python-urllib|Python-urllib" /var/log/nginx/access.log

# Разбивка по конкретной библиотеке — помогает отличать разные скрипты
grep -oiE "python-requests/[0-9.]+|python-urllib3/[0-9.]+|Python-urllib/[0-9.]+" /var/log/nginx/access.log | sort | uniq -c | sort -rn

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

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

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

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

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

5. robots.txt для Python Client

# Жёсткий запрет по всем вариантам сразу
User-agent: python-requests
Disallow: /
User-agent: python-urllib3
Disallow: /
User-agent: Python-urllib
Disallow: /

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

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

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

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

Nginx:

if ($http_user_agent ~* "python-requests|python-urllib") {
    return 403;
}

limit_req_zone $binary_remote_addr zone=pythonclient:10m rate=10r/m;
location / {
    if ($http_user_agent ~* "python-requests|python-urllib") {
        limit_req zone=pythonclient burst=20 nodelay;
    }
}

Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} python-requests [NC,OR]
RewriteCond %{HTTP_USER_AGENT} python-urllib [NC]
RewriteRule ^ - [F,L]

TrafficVeil:

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

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

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

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

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

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

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

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

Python Client — это один конкретный UA?
Нет, это минимум три разных дефолта: Python-urllib, python-requests и python-urllib3, каждый со своим форматом строки.
Почему поиск по python/ может не сработать?
Потому что реальные дефолты используют дефис после «python» (python-requests/, python-urllib3/), а не слэш сразу после названия.
Значит ли нетронутый python-заголовок, что бот безобиден?
Не гарантия, но слабый позитивный сигнал: подмена UA на браузерную строку — одна строка кода, и тот, кто хочет спрятаться, обычно так и делает.
Можно ли просто заблокировать весь трафик с этим UA?
Осторожно — под этим семейством может скрываться и чужой скрапер, и собственный внутренний скрипт или интеграция компании.
Почему у Python выше разброс качества скриптов, чем у других языков?
Из-за низкого порога входа язык часто выбирают для разовых и учебных задач, поэтому здесь больше скриптов без базовых ограничений частоты запросов.
Как отличить разные источники под одним семейством UA?
По связке IP/ASN, конкретной библиотеке и её версии в строке заголовка, а не по общему совпадению слова «python».
#Python Client#python-requests#urllib#User-Agent#технические клиенты#robots.txt#TrafficVeil
TV
TrafficVeil Team

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

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

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

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

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

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

TrafficVeil