TrafficVeil
Боты 6 мин21 августа 2026 г.

Go Client в логах: библиотека net/http, а не Googlebot

Токен go-http-client путают с Google из-за созвучия названия, но это дефолтный User-Agent стандартной HTTP-библиотеки языка Go без какой-либо связи с поисковиком. Разбираемся, почему Go особенно часто выбирают именно для быстрых параллельных скрейперов, что означает цифра в конце UA-строки и как отделить свой же внутренний сервис от чужого агрессивного обхода перед блокировкой.

TV
TrafficVeil Team
Эксперты по защите веб-трафика
Содержание статьи
  1. 1. Что такое Go Client на самом деле
  2. 2. Зачем Go Client приходит на сайт
  3. 3. Нагрузка и риски
  4. 4. Как найти Go Client в логах
  5. 5. robots.txt для Go Client
  6. 6. Блокировка вручную и через TrafficVeil
  7. 7. Что делать: короткий алгоритм
  8. 8. С кем не путать Go Client
  9. 9. Стратегия allow/deny для Go Client
DDoS L7

DDoS атака что это простыми словами и как защитить сайт

Разобрали виды атак, признаки DDoS, последствия, уровни защиты, L7 DDoS и схему подключения TrafficVeil через DNS/reverse proxy.

Читать про DDoS

Энциклопедия ботов TrafficVeil

618 ботов с описаниями, паттернами User-Agent и фильтром по категориям — открытый справочник для аудита логов и настройки защиты.

Открыть справочник

go-http-client в логах — не имя одного сервиса, а технический отпечаток стандартной HTTP-библиотеки языка Go. Несмотря на внешнее созвучие, никакой связи с Googlebot у него нет — это независимая, отдельная от Google история, о которой стоит сказать прямо, потому что путаница на этот счёт реально встречается на профильных форумах. За токеном может стоять что угодно: от внутреннего Go-микросервиса до CLI-утилиты мониторинга, написанной сторонним разработчиком.

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

go-http-client — это дефолтный User-Agent пакета net/http, встроенного в стандартную библиотеку языка программирования Go. Он появляется автоматически в каждом запросе, если разработчик явно не задал собственный заголовок User-Agent. Поскольку Go — один из самых популярных языков для бэкенд-сервисов, микросервисов, CLI-инструментов и облачных приложений, этот UA массово встречается в логах по всему вебу без какой-либо связи между разными его источниками.

Точная строка зависит не от версии Go и не от конкретного приложения, а от версии HTTP-протокола, которым идёт запрос:

Go-http-client/1.1   — запрос по HTTP/1.1
Go-http-client/2.0   — запрос по HTTP/2

Отдельно стоит закрыть частое заблуждение: несмотря на похожесть названия, go-http-client не имеет никакого отношения к Googlebot или другим краулерам Google — это самостоятельная библиотека языка Go, которую использует кто угодно, включая независимых от Google разработчиков собственных ботов.

Параметр Значение
Название Go Client (go-http-client)
Природа Дефолтный User-Agent стандартного пакета net/http языка Go — не отдельный сервис и не компания
User-Agent / паттерн Go-http-client/1.1 (HTTP/1.1) или Go-http-client/2.0 (HTTP/2) — цифра отражает версию протокола, а не версию приложения
Оператор Не существует единого оператора — библиотеку использует неограниченное число независимых Go-программ
Связь с Google Отсутствует, несмотря на созвучие названия — частое заблуждение стоит развеивать явно
robots.txt Поведение полностью зависит от конкретной программы — библиотека сама по себе никакой политики не диктует
Пометка TrafficVeil Легитимный / Технические клиенты

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

Как и с любой языковой HTTP-библиотекой, реальных сценариев использования множество одновременно:

  • Бэкенд-сервисы и микросервисы — многие компании пишут внутреннюю инфраструктуру на Go именно из-за производительности при параллельных запросах;
  • Мониторинг и аптайм-чекеры — популярный язык для написания быстрых, компактных агентов проверки доступности;
  • CLI-утилиты — многие консольные инструменты (в том числе публично распространяемые) написаны на Go и делают HTTP-запросы через стандартный клиент;
  • Собственные и сторонние боты — Go часто выбирают именно для написания краулеров и скрейперов из-за простоты параллелизации запросов, поэтому под этим UA действительно может скрываться и целенаправленный сбор данных.

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

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

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

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

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

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

# Разбивка по версии протокола — HTTP/1.1 vs HTTP/2, может указывать на разные источники
grep -oiE "go-http-client/[0-9.]+" /var/log/nginx/access.log | sort | uniq -c | sort -rn

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

# Топ IP — здесь особенно важно из-за высокой вероятности параллельного обхода
grep -i "go-http-client" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

# RPS с одного IP в минуту — Go-скрейперы чаще агрессивны по параллелизму
grep -i "go-http-client" /var/log/nginx/access.log | awk '{print $1, $4}' | cut -d: -f1,2 | sort | uniq -c | sort -rn | head

Верификация. Строку UA подделать может любой скрипт. Для решения 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 для Go Client

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

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

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

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

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

Nginx:

if ($http_user_agent ~* "go-http-client") {
    return 403;
}

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

Apache (.htaccess):

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} go-http-client [NC]
RewriteRule ^ - [F,L]

TrafficVeil:

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

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

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

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

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

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

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

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

Go Client как-то связан с Googlebot?

Нет, несмотря на созвучие названий это полностью независимая история — стандартная HTTP-библиотека языка Go, не имеющая отношения к Google.

Что означает цифра в конце строки go-http-client/1.1 или /2.0?

Версию HTTP-протокола запроса — HTTP/1.1 или HTTP/2, а не версию Go или конкретного приложения.

Соблюдает ли go-http-client правила robots.txt?

Это зависит исключительно от конкретной программы — у самой библиотеки нет встроенной политики поведения.

Почему этот UA считается более рискованным, чем некоторые другие технические клиенты?

Go особенно часто выбирают для написания быстрых параллельных скрейперов, поэтому вероятность агрессивного многопоточного обхода здесь выше среднего.

Можно ли просто заблокировать весь трафик с этим UA?

Осторожно — под одним заголовком может скрываться и чужой скрейпер, и ваш собственный внутренний Go-сервис или система мониторинга.

Значит ли нетронутый UA go-http-client, что бот точно безобиден?

Не гарантия, но слабый позитивный сигнал: подмена на браузерную строку — одна строка кода, и тот, кто хочет спрятаться, обычно так и делает.

#Go Client#go-http-client#Golang#User-Agent#технические клиенты#robots.txt#TrafficVeil
TV
TrafficVeil Team

Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак.

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

Skype (общий токен): не один бот, а минимум три разных

Общий поиск по слову «skype» в логах цепляет сразу несколько разных, исторически связанных механизмов Microsoft — от закрытого в мае 2025 года превью-бота до активной внутренней инфраструктуры Teams, унаследовавшей кодовое имя SkypeSpaces. Разбираемся, почему общее правило блокировки по этому слову рискованно, и как разделить разные варианты в своих логах.

7 мин

Fedicabot: превью-fetcher Fedica, а не краулер Fediverse

Fedicabot принадлежит Fedica — крупной платформе публикации и аналитики соцсетей, а не имеет отношения к Fediverse, несмотря на созвучное название. Официальная страница оператора прямо заявляет: бот не обходит сайты целиком, а читает только страницу, которую указал конкретный пользователь при планировании публикации, — это меняет всю логику оценки риска.

6 мин

Amazon Kendra: возможно, ваш корпоративный поиск

Amazon Kendra — реальный сервис корпоративного поиска AWS, и его коннектор Web Crawler обходит только те конкретные URL, которые явно указал клиент AWS при настройке источника данных — то есть это не свободный обход, а целевая индексация по чьему-то заданию. Разбираемся, почему первый шаг здесь — проверить, не настроен ли на вашем сайте (или у партнёра) такой поисковый индекс, прежде чем блокировать бота как постороннего.

6 мин

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

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