Как запустить браузер в 10 раз быстрее Chrome и не разориться на серверах
Знакомая боль: нужно собрать данные с пары сотен страниц, вы запускаете Puppeteer или Playwright, и через пять минут кулер ноутбука имитирует взлет истребителя, а оперативная память исчезает в черной дыре. Chrome — великолепный браузер для людей, но для автоматизации это настоящий монстр, который тащит за собой тонны лишнего кода, графический движок и кучу сервисов, которые в консоли просто не нужны.
Недавно наткнулся на проект Lightpanda. Ребята решили пойти по хардкору: вместо того чтобы в очередной раз «допиливать» Chromium, они пишут браузер с нуля на Zig. Без графического интерфейса, без отрисовки пикселей, заточенный только под выполнение JavaScript и работу с DOM.
Почему просто не взять готовый headless режим
Обычно когда мы говорим «headless браузер», мы подразумеваем обычный Chrome, у которого просто отключили окно. Но под капотом остаются все те же мегабайты кода для рендеринга шрифтов, обработки CSS-анимаций и поддержки WebGL. Для парсинга или обучения нейросетей это балласт.
Lightpanda работает иначе. Разработчики выкинули всё, что касается визуализации, и оставили только «мозги»: движок V8 для исполнения JS и собственную реализацию DOM на Zig. Результаты тестов на AWS EC2 впечатляют: потребление памяти в 9 раз ниже, чем у Chrome, а скорость выполнения задач выше в 11 раз. Это не просто оптимизация, это другой уровень эффективности.
Что под капотом
Проект написан на Zig. Если вы следите за системным программированием, то знаете, что этот язык сейчас на подъеме из-за своей производительности и безопасности памяти без тяжелого рантайма.
Внутри Lightpanda использует:
- V8 для работы с JavaScript.
- Libcurl для сетевых запросов.
- html5ever для парсинга HTML.
Самое приятное — браузер поддерживает протокол CDP (Chrome DevTools Protocol). Это значит, что вам не нужно переписывать свои скрипты на какой-то новый экзотический фреймворк. Можно просто подключить существующий проект на Puppeteer или Playwright к Lightpanda как к обычному удаленному браузеру.
Как это пощупать
Попробовать инструмент в деле можно буквально за пару минут. Если у вас Linux или macOS, достаточно скачать бинарник. Есть и Docker-образ, что удобно для тестов в изолированной среде.
Запуск сервера через Docker:
docker run -d --name lightpanda -p 9222:9222 lightpanda/browser:nightly
После этого можно подключаться из Node.js. Вот пример, как использовать Lightpanda вместе с Puppeteer:
import puppeteer from 'puppeteer-core';
// Подключаемся к запущенному серверу Lightpanda
const browser = await puppeteer.connect({
browserWSEndpoint: "ws://127.0.0.1:9222",
});
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: "networkidle0" });
const data = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log(data);
await browser.disconnect();
Код выглядит абсолютно стандартно, но выполняется он не в тяжелом Chrome, а в легковесном инстансе Lightpanda.
Для чего это пригодится
Я вижу несколько сценариев, где такой подход выигрывает всухую.
Во-первых, это AI-агенты и обучение LLM. Если вам нужно скармливать модели тысячи страниц в реальном времени, экономия ресурсов на масштабе будет колоссальной. Во-вторых, это сложный скрапинг сайтов, которые намертво завязаны на JS и не отдают данные без исполнения скриптов. Ну и, конечно, юнит-тестирование фронтенда в CI/CD пайплайнах, где скорость прохождения тестов напрямую влияет на время деплоя.
Нюансы и ограничения
Проект находится в стадии беты. Нужно понимать, что написать браузер с нуля — это задача титанической сложности. Web API огромен, и Lightpanda пока поддерживает его частично. Если ваш скрипт полагается на какие-то специфические или редкие API, он может упасть.
Разработчики честно предупреждают: Playwright может капризничать, потому что он часто использует хитрые внутренние механизмы браузера, которые в Lightpanda могут быть еще не реализованы. Но база — клики, ввод текста, работа с куками, прокси и перехват сетевых запросов — уже работает.
Кстати, в браузере есть встроенная поддержка robots.txt. Если запустить его с флагом --obey_robots, он будет автоматически соблюдать правила сайта, что полезно для «этичного» сбора данных.
Lightpanda — это смелая попытка сделать инструмент для автоматизации, который не пытается притворяться десктопным приложением. Если вы устали от того, что ваши скрипты для парсинга едят больше ресурсов, чем база данных, к этому проекту точно стоит присмотреться.
Пока это не полная замена Chrome для любых задач, но для специфических кейсов вроде массового скрапинга или работы AI-агентов это может стать стандартом. Проект активно развивается, и за ним интересно наблюдать хотя бы ради того, как Zig показывает себя в таких серьезных задачах.
