Scarnox · Blog

Headless-браузер виявлено: причини і способи вирішення (2026)

Сайт показує "виявлено headless-браузер" або тихо віддає іншу сторінку вашому автоматизованому браузеру. Сайти так роблять, бо 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 чи канал даних.

Скрапінг відповідально

Що далі

Якщо ваша автоматизація призначена для end-to-end тестів, підхід інший: див. капча в автоматизованих тестах. Якщо ви використовуєте налаштування Playwright або Puppeteer, обробка капчі в Playwright і Puppeteer пояснює, куди йде токен.

Почніть з безкоштовного пробного кредиту, картка не потрібна: створіть обліковий запис і протестуйте потік PopularCaptcha на власній сторінці. Актуальні ціни дивіться на сторінці тарифів.

Наступні кроки