Строка okhttp в access.log отличается от большинства других записей в этой энциклопедии: за ней не стоит одна конкретная компания или продукт. OkHttp — это открытая библиотека для HTTP-запросов, и её могут использовать буквально тысячи разных мобильных приложений, серверных сервисов и скриптов. Разбираемся, что это значит на практике и почему одной строки UA здесь категорически недостаточно для решения allow/deny.
Что такое OkHttp на самом деле
OkHttp — open-source библиотека для сетевых запросов, разработанная компанией Square (сейчас часть Block) для JVM, Android и GraalVM. Она экономит трафик за счёт HTTP/2, пула соединений и прозрачного gzip, умеет переживать сетевые сбои и держит современный TLS — поэтому стала одной из самых массово используемых сетевых библиотек в Android-экосистеме и Java/Kotlin-бэкендах. Именно эта популярность и создаёт путаницу: любое мобильное приложение, написанное на Kotlin или Java, скорее всего, использует OkHttp «под капотом» — от банковских приложений до крупных агрегаторов и рядового скрипта, который написал разработчик для парсинга сайта.
| Параметр | Значение |
| Название | OkHttp |
| User-Agent / паттерн | okhttp/<версия> (например, okhttp/4.9.0) — часто без дополнительного контекста |
| Оператор | Не единая компания — библиотека Square/Block, встроенная в тысячи независимых приложений и сервисов |
| Категория TrafficVeil | Технический клиент (генерическая сетевая библиотека, а не бот конкретного оператора) |
| Что делает на сайте | Зависит целиком от того, какое приложение или скрипт стоит за конкретным запросом — от банального API-вызова до скрапинга |
| Список IP | ❌ Список невозможен в принципе — источников бесчисленное множество |
| robots.txt | Поведение зависит от приложения-обёртки, а не от самой библиотеки — она не имеет собственной политики |
| Пометка TrafficVeil | Легитимный статус библиотеки не переносится автоматически на конкретного клиента — решение по каждому случаю индивидуально |
Почему UA почти ничего не говорит о намерениях
По умолчанию OkHttp добавляет к запросу минимальную строку — только имя библиотеки и её версию, без упоминания приложения, пакета или устройства. Разработчик может (и часто должен) переопределить User-Agent, добавив название своего приложения, версию и другие детали — тогда строка выглядит примерно так: okhttp/3.11.0; CEO Mobile; Android 4.0.1; com.example.app; build:51. Голая, «недекорированная» строка вида okhttp/4.9.0 без такого контекста — слабый сигнал сама по себе: это может быть как совершенно нормальное мобильное приложение с ленивой настройкой UA, так и скрипт, написанный специально для обхода защиты.
Зачем OkHttp-клиент может приходить на сайт
Причины предельно разные: мобильное приложение вашего собственного бизнеса обращается к вашему же API; приложение партнёра или агрегатора запрашивает данные по легитимной интеграции; сторонний разработчик написал скрипт для мониторинга или парсинга на Kotlin/Java; либо это попытка скрапинга или подбора, замаскированная под обычный клиент. Сама по себе строка okhttp не различает эти сценарии — различие всегда в деталях: какие URL запрашиваются, с какой частотой и насколько поведение похоже на реальное приложение.
Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.
Как найти OkHttp в логах
# Базовый поиск
grep -i "okhttp" /var/log/nginx/access.log
# Полная строка UA — ищем декорированные версии с названием приложения
grep -i "okhttp" /var/log/nginx/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head
# Топ URL
grep -i "okhttp" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# Топ IP
grep -i "okhttp" /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: okhttp
Allow: /
# Ограничить частоту без полного запрета
User-agent: okhttp
Allow: /
TrafficVeil: прежде чем принимать решение по okhttp, выясните, не ваш ли это собственный мобильный трафик или трафик известного партнёра — в этом случае блокировка сломает часть вашего продукта. Если декорированной информации в UA нет, а поведение похоже на массовый обход (много URL подряд, высокая частота, концентрация на данных, не предназначенных для внешнего доступа) — это повод для rate-limit или блокировки как обычного неопознанного скрапера, а не потому что «okhttp = плохо».
С кем можно перепутать OkHttp
| Клиент | Экосистема | Комментарий |
| go-http-client | Go | Аналог OkHttp для Go-приложений и сервисов |
| Apache HttpClient | Java | Более старая, тоже массово используемая Java-библиотека для HTTP-запросов |
| python-requests / aiohttp | Python | Стандартные библиотеки для HTTP в Python-скриптах и сервисах |
| curl | Кросс-платформенный | Классический универсальный HTTP-клиент командной строки |
Все они объединены одним принципом: это инструменты, а не самостоятельные операторы, и легитимность конкретного запроса определяется не именем библиотеки, а тем, кто и зачем её использует в данном случае.
Что в итоге делать с OkHttp
| Ситуация | Действие |
| Трафик похож на собственное мобильное приложение или известного партнёра | Allow без ограничений |
| UA «голый», без контекста, поведение похоже на массовый обход | Rate-limit, затем точечный Disallow / запрет в TrafficVeil |
| Явные признаки скрапинга закрытых данных или подбора | Блокировать сразу — как обычного неопознанного бота, независимо от имени библиотеки |
| Непонятно, что за источник, а нагрузка небольшая | Зафиксировать и понаблюдать перед тем, как принимать решение |
Частые вопросы
Значит ли строка okhttp в логах, что за ней стоит один конкретный оператор?
Как отличить своё мобильное приложение от постороннего скрипта по одной строке UA?
Можно ли составить список официальных IP для okhttp, как для других ботов?
Стоит ли автоматически блокировать okhttp как подозрительный трафик?
Что делать, если okhttp-трафик ведёт себя как массовый обход закрытых данных?
Чем OkHttp принципиально отличается от ботов вроде dlvr.it или SkroutzBot?
Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.