Боты5 мин чтения·12 августа 2026 г.

HeadlessChrome: почему это самая известная «дыра» для анти-бот систем — и не имя одного бота

Строка HeadlessChrome — заводская настройка по умолчанию Puppeteer и Playwright, а не имя единого оператора вроде «Automaton». Разбираем, почему это один из самых очевидных сигналов автоматизации для систем защиты вроде Cloudflare Bot Management, какие ещё маркеры выдают headless-запуск, и почему «голая» строка обычно говорит о небрежности автора, а не о продуманной маскировке.

TVTrafficVeil TeamЭксперты по защите веб-трафика
Уникальная иллюстрация бота AutomatonHeadlessChrome: нежелательный бот

Строка HeadlessChrome — не имя одного оператора и не «Automaton» как отдельный бренд, а буквальная настройка по умолчанию инструментов браузерной автоматизации Puppeteer и Playwright: если разработчик не переопределил заголовок явно, движок сам подставляет в User-Agent слово HeadlessChrome вместо обычного Chrome, когда браузер запущен без графического интерфейса. Как и в случае с Python-urllib, curl или Scrapy из этой серии, это заводская метка инструмента, которую использует бесчисленное множество независимых скриптов — не бренд одного сервиса.

Почему эта деталь стала известной «дырой» для анти-бот систем

По независимым техническим разборам, наличие подстроки HeadlessChrome в заголовке — один из самых очевидных и известных сигналов автоматизации, на которые ориентируются системы защиты от ботов вроде Cloudflare Bot Management, DataDome или PerimeterX. Именно поэтому практически все профильные руководства по автоматизации браузера в один голос советуют разработчикам в первую очередь переопределить этот заголовок — например, через метод page.setUserAgent() в Puppeteer или настройку контекста в Playwright, — если задача заключается в том, чтобы не выделяться на фоне обычных пользователей. Следствие для владельца сайта прямое: раз это самая базовая и общеизвестная вещь, которую меняют в первую очередь, «голая» строка с HeadlessChrome в логах — почти всегда либо небрежность автора скрипта, либо инструмент, которому попросту всё равно, что его видно, — но точно не свидетельство продуманной маскировки.

Параметры

Параметр Значение
Токен / паттерн headlesschrome
Природа строки Заголовок User-Agent по умолчанию для Chromium/Chrome, запущенного в headless-режиме через Puppeteer, Playwright или похожие инструменты автоматизации браузера
Оператор ❌ Множество независимых пользователей — веб-скрапинг, автоматизированное тестирование, генерация PDF/скриншотов, headless-рендеринг для отчётов и превью
Дополнительный признак автоматизации Помимо самой строки UA, независимые технические источники также перечисляют другие типичные маркеры headless-запуска: свойство navigator.webdriver, возвращающее true, отсутствие или необычный объект window.chrome, пустой список navigator.plugins, неестественно точные и одинаковые интервалы между действиями
Изменение заголовка Тривиально — переопределяется одной строкой кода в обоих основных инструментах, поэтому отсутствие переопределения обычно говорит о невнимательности автора, а не о техническом ограничении
Соблюдение robots.txt Не гарантировано — headless-браузер сам по себе robots.txt не читает, это целиком ответственность автора конкретного скрипта
Список IP-адресов ❌ Неприменимо в принципе — источники организационно и географически не связаны

Почему это не то же самое, что «Automaton»

Важно отделить саму технологию headless-браузера от конкретного имени, под которым она иногда фигурирует в других списках ботов (например, «Automaton» как часть более общего имени бота-соседа из этой серии). HeadlessChrome — универсальная метка технологии, которую используют тысячи разных, никак не связанных друг с другом инструментов и скриптов, а не единый продукт с собственной документацией и политикой. Присвоение этой строке отдельного «имени бренда» в некоторых каталогах ботов — упрощение, которое может ввести в заблуждение: за одним и тем же токеном в разных случаях стоят совершенно разные задачи и разные авторы.

Не уверены, кто ходит по вашему сайту?

Подключите домен и посмотрите живую ленту: кто пришёл, с какой сети, что запрашивал и по какому правилу был пропущен или заблокирован.

Посмотреть свой трафик

Как найти в логах

grep -i "headlesschrome" /var/log/nginx/access.log

Поскольку это не единый оператор, привычная схема верификации через whois/ASN может подтвердить происхождение отдельного IP, но не скажет ничего о характере всего класса трафика в целом.

Как настроить доступ

Для публичного сайта разумная политика по умолчанию — рассматривать нераспознанный headless-трафик как сигнал автоматизации без установленной политики:

if ($http_user_agent ~* "headlesschrome") {
    return 403;
}

Если внутри организации есть собственные легитимные процессы на headless-браузере (генерация PDF-отчётов, автоматизированное тестирование, скриншоты для превью), правильное решение — задать им собственный, узнаваемый User-Agent через явное переопределение в коде, а не оставлять неотличимыми от общего фона:

// Puppeteer
await page.setUserAgent('CompanyName-InternalReports/1.0 (+https://example.com/bot-info)');

// Playwright (на уровне контекста)
const context = await browser.newContext({
  userAgent: 'CompanyName-InternalReports/1.0 (+https://example.com/bot-info)'
});

Правило в robots.txt для этого класса трафика работает ненадёжно — headless-браузер сам по себе его не читает, поэтому основной контроль стоит держать на уровне сервера, а не полагаться на добровольное соблюдение файла политики.

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

HeadlessChrome — это конкретный бот или сервис?
Нет, это заводская настройка по умолчанию для Chromium/Chrome, запущенного через инструменты автоматизации браузера Puppeteer или Playwright — не бренд одного оператора.
Почему эта строка считается таким очевидным сигналом бота?
Потому что это первое, что советуют переопределить все профильные руководства по автоматизации браузера, если задача — не выделяться на фоне обычных пользователей.
Какие ещё признаки выдают headless-запуск помимо строки UA?
Свойство navigator.webdriver, необычный объект window.chrome, пустой список плагинов, и неестественно точные интервалы между действиями.
Это то же самое, что бот «Automaton» из соседних каталогов?
Нет, это универсальная технологическая метка, которую используют тысячи разных, не связанных друг с другом инструментов и скриптов — присвоение ей отдельного «имени бренда» вводит в заблуждение.
Соблюдает ли headless-браузер robots.txt?
Не гарантировано — сам по себе он его не читает, это ответственность автора конкретного скрипта.
Что делать со своими легитимными headless-процессами (отчёты, тестирование)?
Задать им собственный узнаваемый User-Agent через явное переопределение в коде Puppeteer или Playwright, а не оставлять неотличимыми от общего фона.
#headlesschrome#puppeteer#playwright#headless-браузер#бот-энциклопедия#robots.txt#User-Agent#TrafficVeil
TV
TrafficVeil Team

Команда TrafficVeil разрабатывает инструменты защиты сайтов от ботов, DDoS и веб-атак. Разборы ботов пишем по логам подключённых доменов и открытым данным операторов.

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

Ещё материалы из раздела «Боты» — те же вопросы, другие агенты.

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

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

Тарифа на трафик нет. Платите за людей, а не за тех, кого отбили: боты, атаки и всё, что срезали фильтры, в счёт не идут. Тариф — число доменов и глубина настроек.

TrafficVeil