Как стать автором
Обновить

Как я сделал GovnoBrowser: легкий браузер на Python и QtWebEngine?

Уровень сложностиПростой

Почему я решил создать свой браузер?

  • Все современные браузеры стандартные и однотипные

  • Желание создать свой продукт

  • Хотел создать что-то контролируемое и просто

  • Я хотел создать облегченный браузер для комфортной работы даже на старых устройствах

Технологии моего браузера

  • Python + PyQt6

    • PyQt6 - библиотека для GUI интерфейса

    • QtWebEngine - "мозг" браузера. Движок рендеринга на основе Chromium

  • Почему не CEF?

    • CEF мощнее, но за ним пришлось тащить весь Chromium.

    • CEF сложнее в сборке.

    • CEF написан на C++, следовательно для Python нужна обертка: cefpython, а она в свою очередь не поддерживает новейшую версию Python.

    • Высокое потребление ресурсов системы.

Хоть эти технологии не дают большего преимущества перед тем же Google Chrome, но они более ресурсоэффективны и будут производительнее но слабом железе.

Особенности браузера

  • Минималистичный интерфейс.

  • Отсутствие телеметрии - QtWebEngine по умолчанию не собирает данные, соответственно не нагружает ПК.

  • Поддержка всех современных веб-стандартов - HTML5, CSS36 JS. (Несмотря на его простоту)

  • Приватность - браузер не передает данные пользователей.

  • Браузер полностью бесплатный.

  • Полностью открытый код.

Дизайн

Я хотел сделать максимально лаконичный и удобный интерфейс, без лишней рекламы и прочих ненужных элементов, у  меня это получилось! Все элементы браузера выполнены в темных цветах, мне показалось, что это придаст стиля.  

  • Основные элементы интерфейса:

    • Поле для ввода поисков запроса либо URL

    • Кнопки навигации (назад, вперед, перезагрузить, домой)

    • Система вкладок (вкладки в современном стиле)

    • Меню специальных возможностей.

  • Начальная страница:

    Вместо стандартной "гугловской" стартовой страницы, я сделал свою. И старался сделать ее максимально минималистично.

    • Так-же в темной дизайне

    • На самой странице: поле для ввода запроса, выбор поисковой машины (Яндекс, Google, DuckDuckGo), кнопка найти.

    • Все элементы динамичные и реагируют на наведение курсора

    • Никакого трекинга.

Скриншот начальной страницы:
Скриншот начальной страницы:

Специальные функции

В моем браузере есть меню специальных функций, да, я понимаю что все из них есть и в других браузерах, но не могу обойти их стороной.

  1. Менеджер паролей - несложная система по добавлению паролей в сохраненные. Представляет собой меню с кнопками "Добавить пароль" и "Обновить". Все пароли отображаются в этом же окне, при нажатии на какой-то из них выпадает список с именем пользователя и скрытым паролем, с возможность показать либо скопировать. Сами пароли сохраняются в JSON файл, но, т.к система в разработке не имеют шифрования, но в скором времени я все переработаю.

  2. Прокси мастер - такая же несложная система прокси, с выпадающим списком. Про нее на данный момент сказать нечего, т.к она активно дорабатывается, и работает не так как задумывалось, но ее можно отключить и не пользоваться.

  3. Встроенная игра "Змейка" - максимально простая оффлайн игра встроенная в браузер. Ее знает каждый.

Проблемы и решения

  1. При запуске браузера (на ОС windows) на PyQt6 может возникнуть распространенная ошибка связанная с видеокартой, т.к движок рендерит страницы благодаря ей.

    Решение: Обновите драйвера видеокарты.

    В скором времени я выпущу версию как раз с исправлениям этой ошибки, страницы будут рендерится не на видеокарте, а на процессоре.

  2. Ошибки при использовании старой версии на PyQt5:

    Предисловие: на сайте доступна старая версия, содержащая ошибки

    1. Неверное отображение шрифтов и прочей инфомации, задействующей JavaScript

    2. Некорректная работа "ТулПанели" и системы вкладок

    3. Некоторые сайты не открываются, по причине отсутствия корректной системы вкладок

    Решение: Обновление браузера до PyQt6


Тест производительности

Все тесты проводились на MacBook air a1466: I5, 8гб ОЗУ, Intel HD Graphics 6000.

Chrome

Мой браузер

Запуск

примерно 2сек.

примерно 1.6 сек

Тест JS-производительности

49 баллов

62 балла

ОЗУ (1 вкладка)

191,4мб

88,1мб

ОЗУ (10 вкладок)

612,2мб

200,8мб

ЦП

28%

13%

Ключевые моменты:

Экономия ОЗУ - в пользу GovnoBrowser

Chrome выигрывает в JS-производительности, это не критично.

Мой браузер меньше нагружает систему из-за облегченного движка и прочих "Умных" функций Chrome.

Chrome быстрее в рендеринге, но разница не критична.

Планы по развитию

  • Выпуск версии браузера под Linux, MacOS, Android.

  • Улучшенная оптимизация.

  • Улучшение системы вкладок - переключение вкладок по горячим клавишам.

  • Простое восстановление сессии.

  • Локальная история — храниться она будет в локальном файле на компьютере пользователя, и отключается в меню спец. возможностей.

  • Небольшие «пасхалки».

Как скачать?

Браузер доступен для загрузки на официальном сайте, но напрямую загрузить получится только старую версию на PyQt5.

Для загрузки новой версии браузера перейдите на GitHub и следуйте инструкции в README.


Заключение

Создать браузер с нуля - реально, даже на Python. Да, GovnoBrowser не замена Chrome, но отличный вариант для тех, кто ценит минимализм, приватность и производетильнось.

Всем удачи!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.