Трафик растёт, заказов нет: как headless-боты и AI-агенты прячутся в Метрике и GA4
Посещаемость растёт, а заказы стоят: часть «посетителей» оказывается браузерами без человека. Автор повесил на тестовую страницу свой счётчик, похожий на Метрику и GA4, и открыл её из curl, Python и Playwright. Краулеры без JavaScript в отчёты не попадают, а любой Chromium даёт полноценный визит с глубиной и кукой.
AI-обработка оригинала Habr AI; редакция Hamidun News
График посещаемости ползёт вверх третью неделю, маркетинг доволен, а заказов нет. Продакт разбирает воронку по шагам и не находит поломку. Возможно, ломать нечего: часть «посетителей» просто не люди. По данным Cloudflare от 30 сентября 2026, больше половины трафика в интернете уже сделали не люди, а запросы AI-агентов за год выросли более чем на 1700%.
Кого слышит счётчик
Счётчик аналитики живёт скриптом на странице. Нет исполненного JavaScript — нет хита. Автор материала проверил это на практике: повесил на тестовую страницу мини-счётчик, который делает то же, что теги Метрики и GA4 (собирает данные браузера, шлёт пинг через 3 секунды, ставит first-party куку), и открыл страницу разными клиентами. Рядом nginx писал свой лог.
Результат простой. curl, Python requests и даже curl с User-Agent GPTBot остаются только в логе. Любой Chromium, включая Playwright в разных режимах и chrome --headless --dump-dom, оставляет и запись в логе, и хит счётчика. Крупные AI-краулеры OpenAI и Anthropic JS-файлы скачивают, но не запускают. JavaScript исполняют Gemini (через инфраструктуру Googlebot) и AppleBot. Независимых свежих замеров автор не нашёл.
Отсюда практическое правило: если трафик на сервере вырос, а в Метрике нет, это скорее всего краулеры, и для аналитики они безвредны. Опасны те, кто в аналитике виден.
Как маскируется headless
Немаскированный Playwright с headless=True сдаёт себя сразу: HeadlessChrome в User-Agent и Client Hints, нет Accept-Language, пустые плагины, webdriver=true. Хватит проверки одной строки UA. С channel='chromium' (новый headless) картина другая: в Client Hints остаётся обычный Chromium, и детектор, перешедший на Client Hints, такой браузер пропустит.
После пары строк маскировки (свой UA, экран 1536×864, русская локаль, московское время, флаг против webdriver, реферер Яндекса, движения мыши) пропадает половина признаков. События мыши приходят с isTrusted=true, по флагу их не отличить.
Остаются расхождения, которые в контексте браузера не поправить: UA говорит «Windows», а navigator.platform «Linux»; нет бренда Google Chrome, потому что Playwright использует Chrome for Testing; внешний размер окна равен внутреннему; в WebGL стоит программный SwiftShader. Последний признак сам по себе слаб (так выглядит и человек в виртуалке), а Chrome 153 уже предупреждает, что откат на программный WebGL устарел. IP датацентра не правится вообще.
Что делать
GA4 исключает ботов по закрытому списку Google и IAB, отключить это нельзя, а объём отсева посмотреть нельзя. Канал «AI Assistant» в GA4 считает переходы из ассистентов и ботов не касается. В Метрике роботы, представившиеся в UA, исключаются сразу, а найденные по поведению учитываются по умолчанию. Начинайте с переключения «Данные: без роботов» и «Сравнить с данными с роботами». Второе сравнение делается вне Метрики: рост в отчёте против роста в логе сервера.
На смоделированных данных (доли задал сам автор, так что проценты ничего не доказывают) важна связка признаков. Поодиночке прямые заходы, отказы или английский язык объяснимы рассылкой, лендингом и рекламой. Вместе с хостинговой сетью и падением доли вернувшихся объяснить их трудно. Связка «хостинговая сеть, прямой заход и визит до 2 секунд или ноль скролла» ловит 86% ботов и задевает 0,43% людей, но из агентов с человеческим поведением находит лишь 215 из 844. Связка «хостинг, новый посетитель, серверный экран» поймала 745 из 844 при 1,2% задетых людей. Для этого к выгрузке Logs API придётся самим добавлять разметку IP по ASN.
Подпись и агенты в браузере
ChatGPT agent подписывает запросы по RFC 9421 (заголовки Signature, Signature-Input, Signature-Agent), и это видит только сервер. Добавьте $http_signature_agent в формат лога nginx и считайте такие визиты там. Протокол Web Bot Auth пока черновик IETF от 1 сентября 2026, но подписывают по нему уже OpenAI, Google и AWS.
Хуже с агентами в браузере самого пользователя: Comet, Atlas, Claude in Chrome. Для Метрики и GA4 это обычный человек на обычной машине, ни один признак среды не срабатывает. Ночной трафик тоже не поможет: агентов запускают люди, поэтому их активность повторяет человеческий недельный цикл.
Вывод для продакта: не лечите воронку, пока не сверили отчёт с логом сервера. А агентные визиты придётся считать отдельным типом посетителя с другой конверсией.
- 8 нояб. 2026 г.Одна фраза тимлида в промпте сдвинула оценку задач у ChatGPT и Claude на 20%
- 8 нояб. 2026 г.Kimi K3 в Amazon Bedrock заработала в Индии: данные не покидают страну
- 8 нояб. 2026 г.У OpenAI и Anthropic внутри обычный энтерпрайз-стек: Salesforce, Workday и Stripe
- 8 нояб. 2026 г.OpenAI и Hacktron сосредоточили аудит на одном слое — внешних интеграциях
Вопросы и ответы по материалу
Что известно по теме: кого слышит счётчик?
Счётчик аналитики живёт скриптом на странице. Нет исполненного JavaScript — нет хита. Автор материала проверил это на практике: повесил на тестовую страницу мини-счётчик, который делает то же, что теги Метрики и GA4 (собирает данные браузера, шлёт пинг через 3 секунды, ставит first-party куку), и открыл страницу разными клиентами. Рядом nginx писал свой лог. Результат простой. curl, Python requests и даже curl с User-Agent GPTBot остаются только в логе.
Что известно по теме: как маскируется headless?
Немаскированный Playwright с headless=True сдаёт себя сразу: HeadlessChrome в User-Agent и Client Hints, нет Accept-Language, пустые плагины, webdriver=true. Хватит проверки одной строки UA. С channel='chromium' (новый headless) картина другая: в Client Hints остаётся обычный Chromium, и детектор, перешедший на Client Hints, такой браузер пропустит.
Что известно по теме: что делать?
GA4 исключает ботов по закрытому списку Google и IAB, отключить это нельзя, а объём отсева посмотреть нельзя. Канал «AI Assistant» в GA4 считает переходы из ассистентов и ботов не касается. В Метрике роботы, представившиеся в UA, исключаются сразу, а найденные по поведению учитываются по умолчанию. Начинайте с переключения «Данные: без роботов» и «Сравнить с данными с роботами». Второе сравнение делается вне Метрики: рост в отчёте против роста в логе сервера.
Внедряйте ИИ быстрее рынка вместе с инженерами и фаундерами
Внутри Vibe Club (hamidun.com/club): еженедельные живые мастермайнды и разборы архитектуры с Жемалом Хамидуном, закрытый Tech Radar, LMS и обновляемая база из 370+ боевых скиллов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.