
Headless-браузер — это веб-браузер без графического интерфейса (без окна, без вкладок, без кнопок «назад/вперёд»).
Он работает «в фоне», управляется программно и может выполнять те же действия, что и обычный браузер: загружать страницы, запускать JavaScript, кликать по кнопкам, заполнять формы — но автоматически и без участия человека.
Headless-браузеры используются в задачах, где важно, как сайт ведёт себя в реальном браузере, но не нужно показывать интерфейс пользователю.
Популярные headless-браузеры
|
Название
|
На чем основан
|
Язык
|
|
Puppeteer
|
Chromium (движок Chrome)
|
JavaScript / Node.js
|
|
Playwright
|
Chromium, Firefox, WebKit
|
JS/TS, Python, C#, Java
|
|
Selenium + Headless Chrome/Firefox
|
Chrome, Firefox
|
Python, Java, C#, JS и др.
|
|
PhantomJS(устарел)
|
Собственный движок
|
JavaScript
|
Пример: простой скрипт на Puppeteer (Node.js)
const puppeteer = require('puppeteer');
(async () => {
// Запускаем headless-браузер
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Переходим на сайт
await page.goto('https://example.com');
// Делаем скриншот
await page.screenshot({ path: 'example.png' });
// Получаем заголовок страницы
const title = await page.title();
console.log('Заголовок:', title);
// Закрываем браузер
await browser.close();
})();
Этот код:
- Запустит Chromium без окна,
- Откроет сайт,
- Сохранит скриншот,
- Выведет заголовок в консоль.
Почему headless-браузеры опасны в контексте DDoS и спама?
Потому что они имитируют реального пользователя почти идеально:
- Выполняют JavaScript,
- Обрабатывают куки и сессии,
- Могут обходить CAPTCHA (в связке с другими инструментами),
- Используют разные User-Agent, разрешения экрана и т.д.
Это делает их идеальным инструментом для L7-атак:
- Ботнет из headless-браузеров может отправлять реалистичные HTTP-запросы,
- Сервер не отличит их от настоящих посетителей,
- Атака требует меньше ресурсов, чем классический флуд.
Как определить, что запрос пришёл от headless-браузера?
Сайты могут использовать детекцию headless-режима, например:
- Проверка свойств
navigator.webdriver, - Отсутствие некоторых плагинов или параметров WebGL,
- Необычное разрешение экрана (например, 800×600),
- Отсутствие взаимодействия (скролл, клики).
Однако опытные злоумышленники маскируют headless-браузеры под обычные.