Строка python-httpx в логах — тот же случай, что OkHttp, уже разобранный в этой энциклопедии: за именем не стоит один оператор, это открытая библиотека, которую использует кто угодно. В черновике она почему-то попала в «нежелательные», хотя её прямые технические аналоги — OkHttp, go-http-client, Apache HTTPClient — помечены как легитимные. Разбираемся, почему такая избирательность не обоснована и что на самом деле определяет риск.
Что такое python-httpx на самом деле
HTTPX — современная HTTP-библиотека для Python 3 от команды Encode (авторы Starlette, Uvicorn, Django REST Framework), задуманная как более продвинутая альтернатива классической requests: поддерживает HTTP/2, синхронные и асинхронные запросы, а API специально сделан совместимым с requests для лёгкой миграции. Библиотека автоматически подставляет в заголовок User-Agent строку вида python-httpx/0.x.x, если разработчик не переопределил её вручную.
| Параметр | Значение |
| Название | python-httpx |
| User-Agent / паттерн | python-httpx/<версия> — часто без дополнительного контекста |
| Оператор | Не единая компания — открытая библиотека Encode, встроенная в бесчисленное множество независимых скриптов и сервисов |
| Категория TrafficVeil | Технический клиент (генерическая библиотека, а не бот конкретного оператора) |
| Что делает на сайте | Зависит целиком от того, какой скрипт или сервис стоит за конкретным запросом |
| Список IP | ❌ Список невозможен в принципе — источников бесчисленное множество |
| robots.txt | Поведение зависит от скрипта-обёртки, а не от самой библиотеки — она не имеет собственной политики |
| Пометка TrafficVeil | Требует индивидуальной проверки — статус не должен зависеть от того, на каком языке написан клиент |
Почему пометка «нежелательный» здесь непоследовательна
httpx, requests, OkHttp, go-http-client и Apache HTTPClient — библиотеки одного и того же класса: инструменты для отправки HTTP-запросов, которые использует любой разработчик на своём языке. У Python-библиотек нет ничего более «нежелательного» в самой природе, чем у Java- или Go-аналогов, — легитимность запроса определяется не языком реализации клиента, а тем, кто и с какой целью его использует в конкретном случае.
Зачем python-httpx-клиент может приходить на сайт
Причины ровно те же, что и для любого генерического HTTP-клиента: ваш собственный сервис или скрипт обращается к своему же API; легитимная интеграция партнёра написана на Python; разработчик мониторит доступность страниц; либо это скрипт для скрапинга или подбора. Сама по себе строка python-httpx не различает эти сценарии.
Как найти python-httpx в логах
# Базовый поиск
grep -i "python-httpx" /var/log/nginx/access.log
# Полная строка UA — ищем декорированные версии с дополнительным контекстом
grep -i "python-httpx" /var/log/nginx/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head
# Топ URL
grep -i "python-httpx" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# Топ IP
grep -i "python-httpx" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Поскольку список IP в принципе невозможен, для каждого конкретного случая нужно проверять IP/ASN отдельно:
IP="1.2.3.4"
whois -h whois.cymru.com " -v $IP"
robots.txt и настройка через TrafficVeil
# Разрешить (стандартный вариант для API-интеграций)
User-agent: python-httpx
Allow: /
TrafficVeil: прежде чем автоматически резать python-httpx в «нежелательный» по умолчанию, выясните, не ваш ли это собственный сервис или трафик партнёра, — иначе блокировка сломает часть рабочей интеграции. Решение принимайте по фактическому поведению (частота, набор URL, наличие декорированного контекста в UA), а не по тому, что запрос пришёл именно от Python-библиотеки.
Что в итоге делать с python-httpx
| Ситуация | Действие |
| Трафик похож на собственный сервис или известного партнёра | Allow без ограничений |
| UA «голый», без контекста, поведение похоже на массовый обход | Rate-limit, затем точечный Disallow / запрет в TrafficVeil |
| Явные признаки скрапинга закрытых данных или подбора | Блокировать сразу — как обычного неопознанного бота, независимо от языка клиента |
| Непонятен источник, а нагрузка небольшая | Зафиксировать и понаблюдать перед тем, как принимать решение |