Scarnox · Blog

Headless-браузер обнаружен: причины и решения (2026)

Сайт пишет «headless browser detected» или тихо отдает вашему автоматизированному браузеру другую страницу. Сайты так делают, потому что headless-браузер работает без окна и во многих мелких, измеримых деталях отличается от обычного настольного браузера. В этом руководстве рассказано, по каким признакам сайты судят о браузере, как понять, что ваш браузер сообщает о себе, и каким должно быть разумное исправление. Также описано, когда правильный ответ — остановиться или считать проверку шагом с капчей.

Почему сайты проверяют headless-браузеры

Фреймворки автоматизации управляют настоящим движком браузера, поэтому большая часть страницы работает так же. Различия проявляются по краям:

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

Шаг 1: посмотрите, что ваш браузер сообщает о себе

Прежде чем что-то менять, посмотрите, что страница может прочитать из вашей автоматизации. Скрипт ниже открывает страницу, которой вы владеете, и выводит важные сигналы. Это диагностика: запускайте ее на собственных тестовых страницах, а не для проверки чужих систем.

from playwright.sync_api import sync_playwright

CHECK = """() => ({
    webdriver: navigator.webdriver,
    languages: navigator.languages,
    plugins: navigator.plugins.length,
    userAgent: navigator.userAgent,
    screen: [screen.width, screen.height],
    viewport: [window.innerWidth, window.innerHeight],
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
})"""

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")  # замените на страницу, которой вы владеете
    print(page.evaluate(CHECK))
    browser.close()

Запустите тот же скрипт с headless=False и сравните два вывода. Различия и есть то, что сайт может заметить.

Шаг 2: исправляйте несогласованность, а не только флаги

Самая частая ошибка — скрыть один флаг и оставить остальные без изменений. User-Agent, который говорит «Windows», при шрифтах, часовом поясе и размере экрана, описывающих Linux-сервер, дает более сильный сигнал, чем одно отдельное свойство. Стремитесь к внутренне согласованной среде:

Playwright позволяет задать несколько таких параметров в одном месте:

context = browser.new_context(
    locale="en-US",
    timezone_id="America/New_York",
    viewport={"width": 1366, "height": 768},
)
page = context.new_page()

Шаг 3: замедлитесь и ведите себя как посетитель

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

Шаг 4: поймите, когда проверка является капчей

Некоторые проверки заканчиваются не блокировкой, а задачей. Вы увидите виджет капчи, и для этого шага нужен токен от решателя. Живой тип капчи в Scarnox сейчас — PopularCaptcha. Руководство по PopularCaptcha на Python показывает, как запрашивать и отправлять токен. Другие виджеты, например Cloudflare Turnstile, в планах, но пока не работают, поэтому сначала посмотрите типы капчи, прежде чем что-то планировать.

Шаг с капчей не означает, что остальная часть вашей настройки верна. Если сайт блокирует каждую headless-сессию независимо от настроек, это ясный сигнал, что владелец не хочет автоматизированного доступа. Уважайте это.

Чего не делать

Не пытайтесь скрыть автоматизацию от сайта, который ее запрещает, и не используйте инструменты обхода обнаружения, чтобы пройти механизмы контроля доступа. Это совсем другой тип проекта, чем тестирование и сбор открытых данных, о которых говорит это руководство. Если вашему проекту нужен доступ, который вам не предоставили, спросите владельца сайта или поищите официальный API или поток данных.

Ответственный парсинг

Куда двигаться дальше

Если ваша автоматизация нужна для сквозных тестов, подход другой: см. капчу в автоматизированных тестах. Если вы используете Playwright или Puppeteer, обработка капчи в Playwright и Puppeteer объясняет, куда попадает токен.

Начните с бесплатного пробного баланса, карта не нужна: создайте аккаунт и протестируйте поток PopularCaptcha на собственной странице. Актуальные тарифы — на странице цен.

Следующие шаги