Первый тестовый выпуск Web-браузера FixBrowser

Опубликован первый тестовый выпуск web-браузера FixBrowser, рассчитанного на низкое потребление ресурсов и обеспечение конфиденциальности. Браузер развивается с нуля и принципиально не поддерживает выполнение JavaScript, но при этом позволяет работать сайтами, завязанными на JavaScript. Код написан на языках Си и FixScript, и распространяется под лицензией ZLIB. Готовые сборки сформированы для Linux (GTK2) и Windows. Намечено создание сборок для Haiku и macOS 10.6+, а также формирование сборок для Linux, использующих GTK3/4.

Для работы с сайтами, завязанными на JavaScript, в FixBrowser задействована прослойка FixProxy, на лету преобразующая подобные сайты в представление, c которым можно работать без JavaScript. Замена осуществляется как по типовыми шаблонам, так и при помощи fix-обработчиков, учитывающих специфику конкретных сайтов (в комплект включены fix-обработчики для более чем 1200 сайтов). FixProxy развивается в форме отдельного прокси-процесса, не привязанного к FixBrowser и пригодного для использования с другими браузерами.

Отмечается, что для отображения большинства сайтов без JavaScript требуются лишь незначительные изменения. Кроме того, на многих сайтах используются однотипные технологии для динамической генерации контента , что позволяет применять для их отрисовки типовые fix-обработчики. Например, можно использовать универсальные fix-обработчики для сайтов на базе движка WordPress и форумов на платформе Disqus. Возможно создание обработчиков и для сайтов динамически отрисовывающих контент – например, для вывода списка комментариев, изначально загружаемых динамически при помощи JavaScript, fix-обработчик напрямую загружает данные в формате JSON и своими силами формирует HTML на их основе.

Для обработки капчи и JavaScript-компонентов, таких как проверки CloudFlare, без которых невозможен вход на некоторые сайты, планируют подготовить прослойку на базе фреймворка CEF (Chromium Embedded Framework), которая сможет выборочно выполнять только необходимый JavaScript-код. Прослойка для JavaScript будет реализована в виде отдельного сервиса (можно запустить как на своей системе, так воспользоваться общедоступным облачным сервисом).

Для блокировки отслеживания активности пользователя загрузка ресурсов со сторонних хостов запрещена, а для разрешения загрузки изображений через сети доставки контента применяются белые списки. Имеется поддержка HTTPS. Возможно подключение расширений, написанных на языке FixScript.

Проект развивает Мартин Дворжак (Martin Dvorak) из Чехии, в своё время создавший язык программирования FixScript. Большая часть кода FixBrowser написана на языке FixScript, за исключением критичных к производительности операций и базового каркаса. Код на FixScript встраивается в код на Си, а для сборки используется компилятор, поставляемый в одном файле, включающем примерно 27 тысяч строк кода на языке Си (800 Кб). Язык напоминает Си, но использует динамическую типизацию, сборщик мусора и JIT-компиляцию. FixBrowser обеспечивает безопасную работу с памятью и потоками, а также имеет встроенную защиту от целочисленных переполнений.

Реализацию браузерного движка удалось существенно упростить, так как FixBrowser выполняет только первичную отрисовку и не поддерживает динамическое обновление содержимого. После того как страница отображена она больше не меняется, соответственно можно обойтись без таких абстракций как DOM (Document Object Model). В настоящее время работа сосредоточена на создании HTML-парсера, поддерживающего спецификации HTML5. Предложенная в первом тестовом выпуске реализация пока охватывает лишь 30% тестов HTML5. Реализована базовая поддержка CSS.


Release. Ссылка here.