Почему мы выбрали движок Obscura и открыли исходный код
История технического решения. Совместимость, безопасность и независимость — как мы балансируем между этими понятиями.
Когда мы начинали работать над «Калинкой», перед нами стоял непростой выбор. Создать браузер с нуля на собственном движке — это годы работы. Взять готовый Chromium — получить зависимость от Google, которой мы хотели избежать. Мы искали третий путь. И нашли его в проекте Obscura.
Что такое Obscura и почему он уникаен
Obscura — это полностью открытый headless-браузер, написанный с нуля на Rust. Он не является форком Chromium и не использует его код. Вместо этого Obscura построен на собственном лёгком ядре с интеграцией V8 для выполнения JavaScript.
Его главная особенность — минимализм без потери функциональности. Obscura реализует ровно то, что нужно для рендеринга страниц и автоматизации: JavaScript-движок (V8), построение DOM-дерева и протокол Chrome DevTools (CDP) для удалённого управления.
| Параметр | Obscura | Headless Chrome |
|---|---|---|
| Память (среднее потребление) | ~30 МБ | 200+ МБ |
| Размер бинарника | ~70 МБ | 300+ МБ |
| Загрузка страницы (среднее время) | ~85 мс | ~500 мс |
| Запуск (cold start) | Мгновенный | ~2 секунды |
Obscura в 6–10 раз легче по памяти, в 4 раза меньше по размеру и запускается в 40 раз быстрее.
Почему не Chromium?
Большинство браузеров сегодня — это, по сути, Chromium с другой обёрткой. «Яндекс Браузер», Opera, Vivaldi, Brave — все они основаны на коде Google.
Это создаёт несколько проблем:
- Зависимость от Google. Любое решение корпорации — от API до политик конфиденциальности — становится вашим решением.
- Раздутый код. Chromium весит сотни мегабайт и потребляет гигабайты памяти. Это оправдано для десктопного браузера, но не для встраиваемых решений.
- Сложность модификации. Вносить изменения в миллионы строк кода Chromium — задача, сравнимая с созданием собственного движка.
Мы решили пойти другим путём.
Почему Rust?
Выбор Rust не случаен. Этот язык обеспечивает:
- Безопасность памяти — никаких утечек и segfault'ов.
- Высокую производительность — сравнимую с C++.
- Надёжность — строгая система типов предотвращает целые классы ошибок на этапе компиляции.
Именно эти качества сделали Rust идеальной основой для браузерного движка. Не случайно другие амбициозные проекты, такие как Ladybird, тоже переходят на Rust.
Безопасность и приватность «из коробки»
Obscura предоставляет возможности, которые мы считаем критически важными для «Калинки»:
- Stealth-режим — встроенная защита от обнаружения и блокировка трекеров.
- Блокировка трекеров — более 3500 доменов в чёрном списке.
- Защита от SSRF — предотвращение Server-Side Request Forgery атак.
Эти функции встроены в движок и не требуют дополнительных надстроек.
Совместимость с существующими инструментами
Одно из главных преимуществ Obscura — поддержка Chrome DevTools Protocol (CDP). Это означает, что «Калинка» может работать с теми же инструментами, что и Chrome:
- Puppeteer
- Playwright
- Любые другие CDP-клиенты
Разработчикам не придётся переучиваться — всё работает так же, как и с привычным Chrome.
Открытый исходный код: почему это важно
Мы приняли решение открыть исходный код «Калинки». Не потому, что это модно, а потому что это правильно.
Прозрачность
Пользователи могут видеть, что именно делает браузер. Нет скрытых механизмов, нет телеметрии, которую нельзя отключить, нет «сюрпризов» в обновлениях.
Безопасность
Открытый код проходит проверку тысячами глаз. Это не гарантия отсутствия уязвимостей, но это лучшая защита, которую можно получить — сообщество, которое помогает находить и исправлять проблемы.
Независимость
Никто не может внезапно изменить условия использования или закрыть доступ к коду. «Калинка» принадлежит сообществу так же, как и нам.
Баланс: совместимость, безопасность, независимость
Мы часто слышим вопрос: «Как вы балансируете между этими тремя понятиями?»
- Совместимость обеспечивается за счёт CDP — мы работаем с теми же инструментами, что и Chrome, но без его веса.
- Безопасность достигается благодаря Rust и встроенным механизмам Obscura — мы не полагаемся на сторонние решения для защиты.
- Независимость — это наша главная ценность. Мы не зависим от Google, не зависим от корпоративных политик и не зависим от закрытых решений.
Что дальше?
Мы продолжаем развивать «Калинку» на основе Obscura. В планах:
- Полноценная поддержка всех платформ (Windows, macOS, Linux)
- Расширение функциональности при сохранении лёгкости
- Вовлечение сообщества в разработку
Мы открыты для вопросов, предложений и пул-реквестов. Присоединяйтесь к нам в этом путешествии.