Python-urllib — не имя одного краулера с политикой поведения и контактным email, а буквально настройка по умолчанию стандартной библиотеки языка Python. Как прямо говорится в официальной документации Python: если разработчик ничего специально не настраивал, urllib представляется на сервере строкой Python-urllib/x.y, где x.y — номер версии установленного Python (например, Python-urllib/3.11). Иными словами, эта строка в логах — не бренд, а сигнал того, что кто-то запустил скрипт на Python и не потрудился (или не подумал) заменить заголовок User-Agent на что-то более информативное.
Почему под одной строкой скрывается кто угодно
Именно потому что это настройка по умолчанию целого языка программирования, а не продукт одной компании, под токеном Python-urllib в логах сайта может обнаружиться радикально разный трафик: чей-то внутренний скрипт мониторинга, разовая утилита для проверки доступности страницы, учебный проект студента, инструмент SEO-специалиста, написанный на коленке, — и, конечно, обычный парсинг контента, где автор просто не озаботился идентификацией. Ни официального оператора, ни списка IP, ни единой политики соблюдения robots.txt у этого «бота» в принципе быть не может — потому что это не один бот, а общий шаблонный след тысяч независимых, никак не связанных друг с другом клиентов.
Параметры
| Параметр | Значение |
| Типичные UA | Python-urllib/3.x, устаревший Python-urllib/2.7, а также варианты, где транспортом выступает urllib3 |
| Природа строки | Заголовок User-Agent по умолчанию в стандартной библиотеке Python — задокументировано напрямую в docs.python.org |
| Оператор | ❌ Множество независимых, никак не связанных друг с другом клиентов |
| Родственные строки того же происхождения | python-requests (популярная сторонняя библиотека, тоже использует шаблонный UA по умолчанию, если не переопределён), голый curl/wget, aiohttp |
| Соблюдение robots.txt | Обычно нет — сами по себе urllib и urllib3 не читают и не интерпретируют robots.txt, это ответственность автора конкретного скрипта, которую многие просто не реализуют |
| Список IP-адресов | ❌ Неприменимо в принципе — источники географически и организационно не связаны |
Почему легитимные интеграции обычно не выглядят так
Показательная деталь из практики Python-разработки: даже официальная документация Python прямо советует переопределять User-Agent при обращении к сторонним сайтам, поскольку многие серверы либо блокируют шаблонную строку целиком, либо обслуживают её иначе, чем обычных браузерных пользователей. Профильные руководства для авторов библиотек идут дальше и рекомендуют формат вида ИмяПродукта/Версия (+https://ссылка-на-документацию; контактный email) — то есть ровно то, что делают почти все легитимные боты, разобранные в этой серии: Slack-ImgProxy, redditbot, AddSearchBot и другие подписываются понятным именем с ссылкой на политику именно потому, что заинтересованы в прозрачной, предсказуемой коммуникации с администраторами сайтов. Тот факт, что конкретный клиент оставил дефолтную строку Python нетронутой, — либо небрежность, либо (что стоит держать в уме) сознательный расчёт остаться менее заметным среди фонового шума подобных запросов.
Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.
Сколько трафика он создаёт
По сводке TrafficVeil, паттерн запросов python-urllib на подключённых доменах составил порядка 15 тысяч за март–июнь 2026 года (июнь — по 14 число). Для сравнения, у родственной по смыслу и происхождению строки python-requests объём заметно больше — порядка 769 тысяч запросов за тот же период, что отражает более широкую популярность именно этой сторонней библиотеки среди авторов скриптов и скраперов по сравнению со встроенным в язык urllib.
Как найти в логах
grep -iE "Python-urllib|urllib" /var/log/nginx/access.log
Поскольку это не единый оператор, а общий шаблон бесчисленных независимых клиентов, привычная схема верификации через whois/ASN здесь бессмысленна как способ «подтвердить легитимность» — принадлежность конкретного IP можно установить, но она скажет лишь о происхождении этого отдельного запроса, а не о характере всего класса трафика в целом.
Как настроить доступ
Для публичного сайта разумная политика по умолчанию — рассматривать нераспознанный UA этого класса как сигнал автоматизации без установленной политики, а не как «доброжелательного бота»:
if ($http_user_agent ~* "Python-urllib|python-requests") {
return 403;
}
Если внутри организации есть собственные легитимные скрипты, работающие через urllib (мониторинг, интеграции, автоматизация), правильное решение — не оставлять для них общий доступ открытым, а выдать им собственный, узнаваемый User-Agent и внести конкретные IP-адреса этих скриптов в белый список:
# Пример собственного идентифицируемого UA для внутреннего скрипта
req.add_header('User-Agent', 'CompanyName-InternalMonitor/1.0 (+https://example.com/bot-info)')
Правило в robots.txt для этого класса трафика чаще всего работает слабо — многие скрипты на urllib его попросту не читают и не интерпретируют, поэтому основной контроль стоит держать на уровне сервера (блокировка, rate-limit или challenge), а не полагаться на добровольное соблюдение файла политики.
Частые вопросы
Python-urllib — это конкретная компания или сервис?
Почему под одним токеном может скрываться совершенно разный трафик?
Соблюдает ли этот класс трафика правила robots.txt?
Как должны выглядеть легитимные боты в отличие от дефолтного UA?
Что делать, если внутри компании есть свои легитимные скрипты на urllib?
Работает ли блокировка через robots.txt для этого класса трафика?
Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.