Что такое движок браузера

Обновлено: 04.07.2024


В данной статье я хочу поделиться мыслями на счёт создания собственного браузерного движка. Мы рассмотрим текущие браузеры и браузерные движки. Вспомним про Modest и узнаем его нелёгкую судьбу.

Это будет цикл статей в которых мы создадим свой собственный минималистичный браузерный движок. Каждая статья будет подкреплена реальным кодом и примерами.
По прошествии десяти статей у нас с вами будет минимальная рабочая версия браузерного движка, сильно минимальная. После этого, если запал не уйдёт и будет интерес сообщества, продолжим, и в итоге доберёмся до JS.

И конечно, первым делом необходимо понять, что такое браузер и браузерный движок.

Браузер и браузерный движок

Существующий мир сложно представить без браузеров. Они есть на многих устройствах: компьютеры, лэптопы, телефоны, игровые приставки. Если представить браузер в виде машины то браузерный движок это всё то, что скрыто под капотом вашего автомобиля.
Браузеры как и автомобили могут отличаться внешним видом и содержимым под капотом. Цвет, кнопочки на панели, аудиосистема. У кого-то под капотом двигатель V8, а у кого-то там масло течёт.

Браузер объединяет периферию и предоставляет функционал позволяющий манипулировать движком, его поведением, предоставляет дополнительные сервисы.
Браузерный движок выполняет всю "грязную" работу: загрузка, обработка, отрисовка данных и все возможные расчёты.

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

Кто создает браузеры и движки

Разработкой собственного браузера занимается множество компаний: Google, Mozilla, Apple, Microsoft, Opera Software, Яндекс, Ростелеком, Vivaldi Technologies, много их…

Каждый добавляет какие-то свои "фишки", сервисы в создаваемый браузер. К примеру, Яндекс интегрирует свои сервисы, поиск.

С браузерными движками дела обстоят кардинально иначе. Вот список движков, их разработчиков и обладателей:

  • Blink: Google
  • Gecko: Mozilla
  • WebKit: Apple
  • EdgeHTML: Microsoft

Это основные обладатели и разработчики движков. В разработке им помогают сторонние компании на определенных условиях.

Например, рассмотрим самый популярный проект от компании Google — Chromium. Данный проект содержит в себе движок Blink. Создавать данный проект Google помогают такие компании как Intel, Facebook, IBM, LG Electronics, NVIDIA, Yandex. Полный список можно посмотреть тут.
Условия на которых компании помогают создавать Blink/Chromium описаны в разделе Legal stuff на сайте проекта Chromium. Если кратко, то всё что вы создаёте принадлежит (не эксклюзивно) Google.

Браузеры компаний Opera, Яндекс, Ростелеком и другие используют именно этот браузерный движок. Если быть до конца откровенным то заявления вроде "у нас есть свой браузер" не совсем правда. Собственные сервисы — да, а вот всё остальное принадлежит другой компании(ям). И эта другая компания предоставляет свой браузерный движок на определенных условиях.

Лицензии браузерных движков

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

Если сразу и кратко: лицензии сносные, прям вот из ряда вон ничего нет. Кроме EdgeHTML который закрыт. Легально утащить к себе какой-то проект и закрыто разрабатывать/изменять видимо не выйдет. Лицензии призывают к взаимной открытости.

Открытый исходный код, ответвление движка WebKit. Как и в WebKit заявлено четыре лицензии:

Самый популярный браузерный движок. Он входит в состав проекта Chromium. Именно на основе Chromium создают собственные браузеры.

Если верить файлу LICENSE проекта Chromium его основная лицензия 3-Clause BSD. Но у проекта есть директория third_party (третьи лица, третья сторона) содержащая множество стороннего кода от которого проект зависит. Иначе говоря, без этого кода собрать браузер не выйдет. У каждого компонента свои лицензии отличные от того что указано в LICENSE проекта:

Открытый исходный код. Заявлена одна лицензия:

Активно развивается компаний Mozilla и используется в собственном браузере компании — Firefox. Так же используется в браузере Tor Browser обеспечивающий анонимное пребывание в сети.

Как основа для производителей браузеров большой популярности не имеет.

Открытый исходный код. Заявлено четыре лицензии:

Развивается компанией Apple и используется в собственном браузере компании — Safari. Ранее многие компании использовали в своих разработках WebKit, но после покинули проект и переключились на Blink от Google.

Закрытый исходный код. Проприетарная лицензия.

Движок используется для браузера компании Microsoft под названием Edge, который пришёл на смену Internet Explorer. Это их новый движок. Предыдущий Trident (MSHTML) компания прекратила развивать.

Риски

Использование стороннего движка порождает очевидные риски:

  1. Закрытие исходного кода
  2. Выход ключевых компаний из разработки
  3. Смена лицензий на код

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

Компании развивающие собственные браузеры должны понимать, что всё будет "хорошо" пока они не составляют угрозу/конкуренцию разработчикам оригинального браузера/браузерного движка. Думаю это очевидно. Компания тратит на разработку движка свои ресурсы, но вдруг появляется другая компания которая используя их движок захватывает рынок. Реакция, думаю, очевидна — смотрим список рисков выше.

«Мы создадим копию движка на текущий момент и продолжим развивать сами» — именно так отвечают производители браузеров на сторонних движках. Большое заблуждение, не выйдет просто так продолжить разработку чужого движка. То есть, взять программистов и поставить им задачу — пишите браузерный движок. Написание браузерного движка сложный технологический процесс. Подтверждением этого служит список их обладателей.

Для примера, компания Microsoft создает свой движок, хоть и закрытый. Google вместе с Apple разрабатывали WebKit, но позже Google сделал форк и начал развитие собственного движка Blink.

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

Адаптация движков

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

Собственный движок

Прежде всего стоит ответить на главный вопрос — зачем создавать свой браузерный движок? А точнее, кому не надо создавать свой движок?

Свой браузерный движок не стоит создавать если:

  • Нет задачи/стремления захватить рынок.
  • Браузер нужен лишь номинально. Сейчас это модно, делают даже школьники.
  • Создаваемый движок не будет отличаться от существующих: скорость, надёжность, адаптивность.
  • Идёт освоение бюджета.

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

Стоит ли заниматься разработкой движка для "заработка", для создания стартапа?

Данный вопрос скорее к сфере его применения. Мне видится несколько направлений:

  1. Собственно, создание полноценного браузера. Сотрудничество с поисковыми системами, различными сервисами. Создание особых версий для государственных структур.
  2. Рынок IoT (интернет-вещей), а так же адаптация для телевизоров, приставок, портативных устройств.
  3. Сервисы на отдельных компонентах браузера. Например, умный анализ контента сайта на риски: запрещенные комментарии, посты от пользователей и так далее. Технический анализ сайтов.
  4. Продажа движка. Самое простое, написать под компанию.

Кроме того, престиж компании разработчика браузерного движка значительно выше чем у клонов. Именно как технологической компании. Это сказывается на популярности компании и привлекательности для существующих и будущих сотрудников. Но это уже скорее о честолюбии, встать в одном списке с такими компаниями как Google, Mozilla, Microsoft.

Заключение

Без сомнения, создание браузерного движка процесс сложный и требующий значительных ресурсов. Подходить к этой разработки необходимо крайне серьёзно и с чётким планом по развитию. Кроме того, это не тот продукт прибыль от которого можно получать на промежуточном этапе разработки. Да, отдельные компоненты можно адаптировать под нужды компаний, но я уверен, что такой подход только отнимет время и значительно затянет разработку.

Развитие браузерного движка сильно зависит от метода его разработки. Каким он будет: открытым, закрытым?

Я уверен, что если компания занимается развитием браузера на основе стороннего браузерного движка то ей следует серьёзно подумать над перспективой создания собственного.

Компании далёкой от браузеров заняться разработкой браузерного движка тоже можно, и не только для того чтобы создать браузер. Если итоговый продукт будет полноценным браузерным движком превосходящим существующие то он будет востребован. Сферы применения были описаны выше.

Цикл статей

  1. Браузер != Браузерный движок
  2. Браузерный движок. Архитектура, работа с памятью.
  3. HTML парсер. Токенизация, обработка токенов, построение дерева.
    Пишем свой парсер. Из каких стадий состоит разбор HTML, в чём сложность и как разогнать HTML парсер в несколько раз.
  4. Кодировки в HTML. Как определяются, как конвертируются.
    Напишем свой кодировщик и обсудим положение дел.
  5. CSS парсер и CSS модули. Токенизация, обработка токенов.
    Создадим свой CSS парсер. Разберём основные аспекты обработки CSS. Выясним в чём сложность, на что тратятся ресурсы и как написать самый быстрый парсер CSS/модулей.
  6. CSS парсер. Grammar.
    Пишем собственный Grammar для CSS модулей формирующий быстрый, человеко-читаемый код.
  7. CSS Selectors. Как устроены, быстрый поиск HTML элементов по селекторам.
  8. Layout. Скрещиваем HTML и CSS.
    Назначаем CSS свойства HTML элементам. Разберём порядок назначения, приоритеты и что делать если CSS постоянно изменяется.
  9. Layout. Потоки. Поддержка CSS свойства display: block.
  10. Шрифты. Как расчитывать размер символов, строк.
    Напишем свой парсер шрифтов. Узнаем, что такое baseline, descender, x-height, как хранятся символы и углубимся в тему расчётов размера символов.
  11. Layout. Поддержка CSS свойства display: inline.

Судьба Modest

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

К сожалению, проект Modest пришлось завершить. Какое-то время проект развивался в компании, в которой я раньше работал. Мне пришлось покинуть компанию. Появились разногласия которые не позволили продолжить разработку проекта. Обычный рабочий процесс, такое бывает.

Не смотря на то, что у меня есть все права на Modest, на код никто не претендует (подписаны бумаги), я решил его "закопать". Чтобы ни у кого не возникало ложных ощущений. Тут надо понимать, что закапывается и весь основной код который развивался вне компании (mycore, myhtml). Но, есть и плюс, возможно, я стал чуть умнее.

Мной было потрачено очень много времени на изучение спецификаций, осознания их, поиск оптимальных алгоритмов, написание черновиков (прототипов), создание myhtml (самый быстрый парсер html) в свободное от работы время, и просто так забросить эту тему я пока не могу. Было потрачено много выходных, праздников, вечеров, ночей.

Теперь я занимаюсь разработкой нового браузерного движка. Разработка с ноля. Имени у него пока нет, только кодовое — lexbor. Вся основа уже написана: работа с памятью, общие алгоритмы, заложена будущая архитектура. Как всегда, всё краше и лучше чем было. В общем, у меня есть самое главное: технология и чёткое видение/понимание как и что развивать.

Одному мне такой проект не потянуть. Если поддержки не найду (финансирования) то прекращу разработку и присоединюсь контребьютером к существующему открытому движку (Blink или Gecko). Попробую побыть там волонтером и реализовать свои идеи. Занимаюсь всем этим исключительно в нерабочее время.

Тут видимо должна быть картинка «ты должен был бороться со злом, а не примкнуть к нему».


В данной статье я хочу поделиться мыслями на счёт создания собственного браузерного движка. Мы рассмотрим текущие браузеры и браузерные движки. Вспомним про Modest и узнаем его нелёгкую судьбу.

Это будет цикл статей в которых мы создадим свой собственный минималистичный браузерный движок. Каждая статья будет подкреплена реальным кодом и примерами.
По прошествии десяти статей у нас с вами будет минимальная рабочая версия браузерного движка, сильно минимальная. После этого, если запал не уйдёт и будет интерес сообщества, продолжим, и в итоге доберёмся до JS.

И конечно, первым делом необходимо понять, что такое браузер и браузерный движок.

Браузер и браузерный движок

Существующий мир сложно представить без браузеров. Они есть на многих устройствах: компьютеры, лэптопы, телефоны, игровые приставки. Если представить браузер в виде машины то браузерный движок это всё то, что скрыто под капотом вашего автомобиля.
Браузеры как и автомобили могут отличаться внешним видом и содержимым под капотом. Цвет, кнопочки на панели, аудиосистема. У кого-то под капотом двигатель V8, а у кого-то там масло течёт.

Браузер объединяет периферию и предоставляет функционал позволяющий манипулировать движком, его поведением, предоставляет дополнительные сервисы.
Браузерный движок выполняет всю "грязную" работу: загрузка, обработка, отрисовка данных и все возможные расчёты.

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

Кто создает браузеры и движки

Разработкой собственного браузера занимается множество компаний: Google, Mozilla, Apple, Microsoft, Opera Software, Яндекс, Ростелеком, Vivaldi Technologies, много их…

Каждый добавляет какие-то свои "фишки", сервисы в создаваемый браузер. К примеру, Яндекс интегрирует свои сервисы, поиск.

С браузерными движками дела обстоят кардинально иначе. Вот список движков, их разработчиков и обладателей:

  • Blink: Google
  • Gecko: Mozilla
  • WebKit: Apple
  • EdgeHTML: Microsoft

Это основные обладатели и разработчики движков. В разработке им помогают сторонние компании на определенных условиях.

Например, рассмотрим самый популярный проект от компании Google — Chromium. Данный проект содержит в себе движок Blink. Создавать данный проект Google помогают такие компании как Intel, Facebook, IBM, LG Electronics, NVIDIA, Yandex. Полный список можно посмотреть тут.
Условия на которых компании помогают создавать Blink/Chromium описаны в разделе Legal stuff на сайте проекта Chromium. Если кратко, то всё что вы создаёте принадлежит (не эксклюзивно) Google.

Браузеры компаний Opera, Яндекс, Ростелеком и другие используют именно этот браузерный движок. Если быть до конца откровенным то заявления вроде "у нас есть свой браузер" не совсем правда. Собственные сервисы — да, а вот всё остальное принадлежит другой компании(ям). И эта другая компания предоставляет свой браузерный движок на определенных условиях.

Лицензии браузерных движков

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

Если сразу и кратко: лицензии сносные, прям вот из ряда вон ничего нет. Кроме EdgeHTML который закрыт. Легально утащить к себе какой-то проект и закрыто разрабатывать/изменять видимо не выйдет. Лицензии призывают к взаимной открытости.

Открытый исходный код, ответвление движка WebKit. Как и в WebKit заявлено четыре лицензии:

Самый популярный браузерный движок. Он входит в состав проекта Chromium. Именно на основе Chromium создают собственные браузеры.

Если верить файлу LICENSE проекта Chromium его основная лицензия 3-Clause BSD. Но у проекта есть директория third_party (третьи лица, третья сторона) содержащая множество стороннего кода от которого проект зависит. Иначе говоря, без этого кода собрать браузер не выйдет. У каждого компонента свои лицензии отличные от того что указано в LICENSE проекта:

Открытый исходный код. Заявлена одна лицензия:

Активно развивается компаний Mozilla и используется в собственном браузере компании — Firefox. Так же используется в браузере Tor Browser обеспечивающий анонимное пребывание в сети.

Как основа для производителей браузеров большой популярности не имеет.

Открытый исходный код. Заявлено четыре лицензии:

Развивается компанией Apple и используется в собственном браузере компании — Safari. Ранее многие компании использовали в своих разработках WebKit, но после покинули проект и переключились на Blink от Google.

Закрытый исходный код. Проприетарная лицензия.

Движок используется для браузера компании Microsoft под названием Edge, который пришёл на смену Internet Explorer. Это их новый движок. Предыдущий Trident (MSHTML) компания прекратила развивать.

Риски

Использование стороннего движка порождает очевидные риски:

  1. Закрытие исходного кода
  2. Выход ключевых компаний из разработки
  3. Смена лицензий на код

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

Компании развивающие собственные браузеры должны понимать, что всё будет "хорошо" пока они не составляют угрозу/конкуренцию разработчикам оригинального браузера/браузерного движка. Думаю это очевидно. Компания тратит на разработку движка свои ресурсы, но вдруг появляется другая компания которая используя их движок захватывает рынок. Реакция, думаю, очевидна — смотрим список рисков выше.

«Мы создадим копию движка на текущий момент и продолжим развивать сами» — именно так отвечают производители браузеров на сторонних движках. Большое заблуждение, не выйдет просто так продолжить разработку чужого движка. То есть, взять программистов и поставить им задачу — пишите браузерный движок. Написание браузерного движка сложный технологический процесс. Подтверждением этого служит список их обладателей.

Для примера, компания Microsoft создает свой движок, хоть и закрытый. Google вместе с Apple разрабатывали WebKit, но позже Google сделал форк и начал развитие собственного движка Blink.

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

Адаптация движков

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

Собственный движок

Прежде всего стоит ответить на главный вопрос — зачем создавать свой браузерный движок? А точнее, кому не надо создавать свой движок?

Свой браузерный движок не стоит создавать если:

  • Нет задачи/стремления захватить рынок.
  • Браузер нужен лишь номинально. Сейчас это модно, делают даже школьники.
  • Создаваемый движок не будет отличаться от существующих: скорость, надёжность, адаптивность.
  • Идёт освоение бюджета.

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

Стоит ли заниматься разработкой движка для "заработка", для создания стартапа?

Данный вопрос скорее к сфере его применения. Мне видится несколько направлений:

  1. Собственно, создание полноценного браузера. Сотрудничество с поисковыми системами, различными сервисами. Создание особых версий для государственных структур.
  2. Рынок IoT (интернет-вещей), а так же адаптация для телевизоров, приставок, портативных устройств.
  3. Сервисы на отдельных компонентах браузера. Например, умный анализ контента сайта на риски: запрещенные комментарии, посты от пользователей и так далее. Технический анализ сайтов.
  4. Продажа движка. Самое простое, написать под компанию.

Кроме того, престиж компании разработчика браузерного движка значительно выше чем у клонов. Именно как технологической компании. Это сказывается на популярности компании и привлекательности для существующих и будущих сотрудников. Но это уже скорее о честолюбии, встать в одном списке с такими компаниями как Google, Mozilla, Microsoft.

Заключение

Без сомнения, создание браузерного движка процесс сложный и требующий значительных ресурсов. Подходить к этой разработки необходимо крайне серьёзно и с чётким планом по развитию. Кроме того, это не тот продукт прибыль от которого можно получать на промежуточном этапе разработки. Да, отдельные компоненты можно адаптировать под нужды компаний, но я уверен, что такой подход только отнимет время и значительно затянет разработку.

Развитие браузерного движка сильно зависит от метода его разработки. Каким он будет: открытым, закрытым?

Я уверен, что если компания занимается развитием браузера на основе стороннего браузерного движка то ей следует серьёзно подумать над перспективой создания собственного.

Компании далёкой от браузеров заняться разработкой браузерного движка тоже можно, и не только для того чтобы создать браузер. Если итоговый продукт будет полноценным браузерным движком превосходящим существующие то он будет востребован. Сферы применения были описаны выше.

Цикл статей

  1. Браузер != Браузерный движок
  2. Браузерный движок. Архитектура, работа с памятью.
  3. HTML парсер. Токенизация, обработка токенов, построение дерева.
    Пишем свой парсер. Из каких стадий состоит разбор HTML, в чём сложность и как разогнать HTML парсер в несколько раз.
  4. Кодировки в HTML. Как определяются, как конвертируются.
    Напишем свой кодировщик и обсудим положение дел.
  5. CSS парсер и CSS модули. Токенизация, обработка токенов.
    Создадим свой CSS парсер. Разберём основные аспекты обработки CSS. Выясним в чём сложность, на что тратятся ресурсы и как написать самый быстрый парсер CSS/модулей.
  6. CSS парсер. Grammar.
    Пишем собственный Grammar для CSS модулей формирующий быстрый, человеко-читаемый код.
  7. CSS Selectors. Как устроены, быстрый поиск HTML элементов по селекторам.
  8. Layout. Скрещиваем HTML и CSS.
    Назначаем CSS свойства HTML элементам. Разберём порядок назначения, приоритеты и что делать если CSS постоянно изменяется.
  9. Layout. Потоки. Поддержка CSS свойства display: block.
  10. Шрифты. Как расчитывать размер символов, строк.
    Напишем свой парсер шрифтов. Узнаем, что такое baseline, descender, x-height, как хранятся символы и углубимся в тему расчётов размера символов.
  11. Layout. Поддержка CSS свойства display: inline.

Судьба Modest

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

К сожалению, проект Modest пришлось завершить. Какое-то время проект развивался в компании, в которой я раньше работал. Мне пришлось покинуть компанию. Появились разногласия которые не позволили продолжить разработку проекта. Обычный рабочий процесс, такое бывает.

Не смотря на то, что у меня есть все права на Modest, на код никто не претендует (подписаны бумаги), я решил его "закопать". Чтобы ни у кого не возникало ложных ощущений. Тут надо понимать, что закапывается и весь основной код который развивался вне компании (mycore, myhtml). Но, есть и плюс, возможно, я стал чуть умнее.

Мной было потрачено очень много времени на изучение спецификаций, осознания их, поиск оптимальных алгоритмов, написание черновиков (прототипов), создание myhtml (самый быстрый парсер html) в свободное от работы время, и просто так забросить эту тему я пока не могу. Было потрачено много выходных, праздников, вечеров, ночей.

Теперь я занимаюсь разработкой нового браузерного движка. Разработка с ноля. Имени у него пока нет, только кодовое — lexbor. Вся основа уже написана: работа с памятью, общие алгоритмы, заложена будущая архитектура. Как всегда, всё краше и лучше чем было. В общем, у меня есть самое главное: технология и чёткое видение/понимание как и что развивать.

Одному мне такой проект не потянуть. Если поддержки не найду (финансирования) то прекращу разработку и присоединюсь контребьютером к существующему открытому движку (Blink или Gecko). Попробую побыть там волонтером и реализовать свои идеи. Занимаюсь всем этим исключительно в нерабочее время.

Тут видимо должна быть картинка «ты должен был бороться со злом, а не примкнуть к нему».

Браузерный движок – это специальная программа, которая работает с веб-страницами. Он обрабатывает загруженную из интернета HTML-страницу, и преобразует ее код в привычное для пользователей представление. Движки интернет-браузеров используются в самих браузерах, а также в почтовых клиентах. Далеко не каждый веб-обозреватель создан на своей собственной уникальной платформе. Многие из них используют популярные и проверенные временем решения. В данной статье рассматривается, какие существуют платформы для создания браузеров, и чем они отличаются друг от друга.

Логотипы браузеров

Общие сведения

Использование движков (Rendering engine) для создания обозревателей имеет множество преимуществ:

  • Облегчается поиск и устранение ошибок кода.
  • Удобная возможность улучшить отдельный компонент сразу в нескольких программах.
  • Облегчается процесс изменения графического интерфейса приложения.
  • Простота создания новых программ под желания конкретного разработчика или нужны конкретного пользователя.

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

Яркий пример – движок Trident от компании Microsoft. Он один используется в большом множестве приложений данной корпорации. Развивается основа – развиваются и производные проекты.

Каждое решением имеет свои плюсы и минусы. Например, многие пользователи замечают, что Mozilla Firefox гораздо лучше работает с большим количеством открытых вкладок, чем конкуренты. Это достижение платформы, на основе которой создан обозреватель.

Trident

Когда пользователь устанавливает новую операционную систему Windows, первый веб-обозреватель, с которым он сталкивается – это Internet Explorer. Поэтому его движок рассмотрен в обзоре первым.

Trident, или MSHTML – довольно старый программный компонент, разработанный корпорацией Microsoft для своих нужд. Проект непрерывно развивается с 1997 года. Используется в веб-обозревателе от Майкрософт – Internet Explorer, почтовом клиенте Outlook, Проводнике Виндовс (программа для работы с файлами) и множестве других приложений данного разработчика.

Пользователями считается одним из наиболее неудачных движков для браузеров. Не поддерживает сторонние модульные расширения – плагины, некорректно отображает многие интернет-страницы, имеет не самую быструю скорость работы.

С выходом Windows 10 платформа Trident эволюционировала в EdgeHTML.Разработчики взяли устаревший неудачный движок за основу и создали новую, отвечающий всем требованиям современным пользователей. Судя по проведенным бенчмаркам (программный тест производительности и скорости работы), Microsoft Edge (обозреватель, созданный на основе EdgeHTML) догнал и даже перегнал популярные программы, использованные для создания браузеров Google Chrome и Mozilla Firefox.

Gecko

Gecko – движок, используемый в популярном интернет-обозревателе Мозилла Фаерфокс и множестве других программ. Исходный код программы находится в свободном доступе, то есть каждый желающий может абсолютно бесплатно создать на основе Gecko свой собственный браузер или почтовый клиент.

Другое преимущество Геко – кроссплатформенность. Он работает на подавляющем большинстве современных операционных систем: как для персональных компьютеров, так и для мобильных устройств (в отличие от Internet Explorer, который функционирует только на ОС Windows).

Логотип обозревателя Mozilla Firefox

Gecko поддерживает все современные стандарты и технологии, используемые при создании вебсайтов. Является одной из двух наиболее популярных браузерных платформ. Поддерживает подключение плагинов. Бенчмарки и личный опыт пользователей показывают, что браузеры на данном движке потребляют меньше всего ресурсов персонального компьютера и стабильно работают с большим количеством вкладок (например, несколько сотен).

На основе Геко создан популярный интернет-обозреватель Mozilla Firefox, почтовый клиент Thunderbird, планировщик задач Sunbird, а также анонимный веб-браузер с встроенной поддержкой VPN-технологий Tor.

KHTML

Файловый менеджер Konqueror

WebKit

Этот движок разработан всемирно известной корпорацией Apple на основе вышеупомянутого решения – KHTML. Выпущенный в 2001 году, этот проект получил колоссальное развитие и стал одним из самых используемых в мире.

На основе WebKit был создан веб-обозреватель Safari, используемый по умолчанию в iOS-устройствах и лидер по известности среди браузеров – Google Chrome. Подавляющее число современных программ для обработки содержимого веб-страниц имеют в своей основе ВебКит. Кроме того, он используется в популярном приложении Steam, предназначенном для цифровой дистрибуции компьютерных игр от компании Valve.

Эмблема браузера Safari

Аналогично с Gecko, WebKit является кроссплатформенным и отлично запускается на всех популярных платформах. Показывает высокую стабильность и производительность работы. Ввиду огромной известности, под данное решение разрабатывается подавляющее большинство расширений. Также используется в популярных мобильных платформах, таких как Android и iOS. Является свободным движком, то есть может быть бесплатно использован любым человеком для создания собственных приложений.

Логотип движка Blink

Presto

Созданный в 2003 году, браузерный движок Presto использовался в качестве основы для Opera. Развивался на протяжении 10-ти лет. В 2013 разработчики Оперы решили отказаться от использования Presto в пользу более мощного и популярного Blink от Google. В данный момент развития проекта остановлено.

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

Первый браузер появился в 1990 году, а разработал его Тим Бернерс-Ли, отец Всемирной паутины. С тех пор прогресс шел с удивительной скоростью и то, что тогда могло считаться революцией, сейчас кажется обыденностью.

Тим Бернерс-Ли

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

Проверить отображение контента на разных браузерах можно здесь:

В целом, без адаптивной верстки один и тот же сайт на разных браузерах (более того, на разных версиях браузера) может отображаться по-разному.

Так выглядит наш сайт на старых версиях браузеров:

Firefox 3.5

Google Chrome 10.0

Opera 10

Более подробно про кроссбраузерность можно почитать в нашем блоге.

Ниже рассмотрим несколько браузеров, их движки, посмотрим на их отличия, а также коснемся их безопасности.

Основные движки

Сначала разберемся, что такое движок браузера. Если коротко, то это программа, которая преобразовывает набор команд и строки кода в полноценную красивую веб-страницу. И уже на основе движка разрабатывается браузер, обличается в более привлекательную форму и в итоге становится user-friendly. Т. е. движок — это ядро, а браузер уже оболочка. Так, например, самый популярный движок Blink (в рамках проекта Chromium) используется на разных браузерах — на Google Chrome и Opera.

На данный момент актуальный список браузерных движков выглядит так (в скобках процент использования на 2019 год):

  • Trident — Microsoft Internet Explorer 4.0-11.0 (6,81%).
  • Gecko — Firefox (8,9%), Tor, Firefox mobile (1,90%) почтовый клиент Thunderbird.
  • EdgeHTML — Microsoft Edge (4,61%).
  • WebKit — Apple Safari (4,0%) (в т.ч. для iOS (27,54%) и Steam.
  • Blink — Google Chrome (67,29%) (в т.ч. для Android (63,35%)), Chronium, Opera (1,60%), Яндекс.Браузер (0,80%), и Microsoft Edge. Является ответвлением WebKit.

Ниже вкратце рассмотрим историю каждого движка.

Blink и WebKit

Blink является популярнейшим браузерным движком. Используется в Google Chrome и в браузерах на его базе, например, Opera и Яндекс.Браузер. Один из основных разработчиков — Google, но разработка поддерживается с помощью дюжины компаний.

логотип Blink

В 2019 году Microsoft решила не изобретать велосипед и анонсировала запуск Edge на движке Blink в рамках проекта Chronium. Ранее часть сервисов могли отсеивать пользователей браузера от Microsoft по User Agent, поэтому возникали некоторые различия в поведении браузеров, и часть особенностей поведения и функций, которые встречаются в Chronium, могли внедряться в Edge с запозданием.

Так как отличия движка сказывались на комфорте конечных пользователей и разработчиков, Microsoft решила внедрить в Edge Chronium. Также это позволит устанавливать пользователям расширения для Edge, совместимые с тем же Google Chrome, а интерфейс приблизится к браузеру от Google.

Blink вытек из другого популярного движка — WebKit. Его разработали Apple в 2000 году на основе движка KHTML, который использовался в браузере для Nokia Series 60. Google Chrome с 2008 по 2013 год работал на WebKit. Но в 2013 году Google с некоторыми изменениями скопировали ядро у Apple для последующей его модификации, оптимизации и в итоге внедрению в Chrome. Появление нового движка усложнила жизнь веб-разработчиков, но заставила рынок развиваться более быстрыми темпами.

Сейчас на Webkit работает браузер Apple Safari как на MacOS, так и на мобильной iOS.

логотип Webkit

Trident и EdgeHTML

У Microsoft есть два браузерных движка: Trident и EdgeHTML, более пристальный взгляд можно бросить только на последний, т.к. Trident был закрыт еще в 2015 году. Но для истории:

Trident был разработан Microsoft для Internet Explorer 4.0 в 1997 году и поддерживался вплоть до выхода Windows 10. Для пользователей считался самым неудачным движком. Он не мог похвастаться поддержкой сторонних расширений, некорректно отображал веб-страницы, а его скорость работы оставляла желать лучшего. Кроме того, постоянные зависания не давали плюсов браузеру.

EdgeHTML

Хоть Microsoft более не поддерживает Trident, пользовательская база Internet Explorer почти 7%. Но адаптировать сайты для него все труднее и труднее.

В Windows 10 для Edge Microsoft взяли базу Trident и уже на ее основе разработали EdgeHTML. Над движком поработали на славу: по данным результатов некоторых тестов производительности, браузер Edge перегнал Chrome и Firefox. Но стоит сказать, что загрузка страниц в Edge действительно была моментальная, и это поражало.

В 2019 году Microsoft отказываются от дальнейшей разработки EdgeHTML в угоду Blink и Chromuim.

Gecko и Quantum

Движок Gecko предназначен для браузера Firefox, достаточно популярного, но ныне не лидирующего браузера. Толчком к разработке послужила первая война браузеров, где соперничали Internet Explorer и Netscape Navigator (практически лидер на рынке в 90-х). Победа была за IE, он занял около 90% рынка. А разработчики NN опубликовали исходные коды, которые оказались в очень плохом состоянии.

На основе этого было приято решение переписать движок с нуля. На старте носил название «Raptor», затем «NGLayout» и в итоге обрел свое окончательное название «Gecko».

логотип Gecko

Firefox занимал свою долю на рынке, но не хотел быть отстающим от Chrome. По некоторым исследованиям, до 2010 года Firefox владел третью рынка (31,6%), в 2010 количество установок снизилось до 23,2%, а в 2017 и вовсе до 13%. По сравнению с Google Chrome (67,2%), это мизерные цифры.

Поэтому в Mozilla встала задача о привлечении новых пользователей. И первым шагом был анонс нового проекта — Quantum, в рамках которого началась разработка более усовершенствованного энергоемкого движка.

В ноябре 2017 года Firefox обновился до 57 версии, которая привнесла серьезные изменения. В названии красовалось «Firefox Quantum», браузер стал использовать преимущества многоядерных систем по аналогии с Chrome, получил новый интерфейс, который, к слову, стал «легче» и интуитивнее.

Браузер получил новый API-интерфейс разработки дополнений, теперь Firefox 57 поддерживает только расширения, созданные с помощью WebExtension. Это новый метод разработки, который должен унифицировать процесс создания плагинов и оптимизировать работу в многоядерных системах.

Хоть большинству пользователей понравилась новая версия «огненной лисы», доля Firefox в июне 2019 года составила 8,9%.

логотип Quantum

Несомненно, браузерный движок — это сердце любого браузера, но, как говорится, не движком единым. Для большинства пользователей важно чтобы их данные оставались конфиденциальными, а сами пользователи чувствовали себя в безопасности. Поэтому разработчики непрерывно ищут лазейки, усиливают безопасность своих продуктов, но все же рекомендуют совместно с браузером использовать хороший антивирус.

Ниже мы рассмотрим, что могут предложить самые популярные браузеры для безопасности своего пользователя.

Safari

В браузере от Apple есть встроенная функция блокировки всплывающих окон. Также в браузере встроены технологии, которые не допускают открытие мошеннических, фишинговых и сайтов, распространяющих вредоносное ПО, а поддержка EV-сертификатов маркирует легитимные сайты.

логотип Safari

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

Весной 2019 года Apple анонсировала вход с помощью Apple ID на разных сайтах, где веб-разработчик посчитает необходимым добавить такую функцию. Личные данные пользователя останутся в безопасности, ведь вместо его адреса электронной почты генерируется одноразовый специальный адрес. По заявлениям Apple, она не будет использовать данные о том, кто какие сайты посещает. Пользователь сам сможет отключить учетную запись от любого сайта или приложения.

Google Chrome

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

Но в этой особенности кроется проблема для слабых ПК. Каждая вкладка — это отдельный процесс, и, если вкладок открыто много, происходит большая нагрузка на оперативную память. В таком случае ПК может не справляться, а браузер подвисать.

логотип Google Chrome

В 2010 году Google встроила Adobe Flash в браузер, дабы избавить пользователя от необходимости загружать его отдельно.

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

Предлагаем пройти тест, сможете ли вы распознать фишинговую атаку.

Автоматической загрузке исполняемых файлов компания Google сказала нет. Прежде чем загрузить исполняемый файл, необходимо нажать кнопку «сохранить». Сделано это для того, чтобы обезопасить пользователей от автозагрузок вредоносного ПО. Также в Chrome присутствует режим «инкогнито». По заявлениям Google, просматриваемые страницы, пароли, cookie автоматически удалятся после закрытия вкладок.

В 2019 году вышло 76-е обновление браузера, в котором удалось устранить уязвимость, которая позволяла сайтам определять при заходе на сайт, используется режим инкогнито или нет. Эта проблема основывалась на проверке наличия Chrome FileSystem API, который был отключен в новой версии, чтобы действия пользователя на устройстве не оставляли следов.

Теперь сайтам, у которых есть счетчик бесплатного контента, необходимо было искать новые способы блокировки после определенного количества посещений. Но даже после вышеописанной меры нашли новый способ, который позволяет отследить, в каком режиме пользователь заходит на сайт.

Стало известно, что Chrome для файловой системы выделяет хранилище во внутренней памяти, максимальный объем которого составляет 120 мбайт. Это позволяет отслеживать режим инкогнито с высокой скоростью.

Microsoft Edge

Microsoft заверяет, что браузер Edge более безопасен остальных обозревателей. Основано это на исследовании NSS Labs — организации, оценивающей решения в области безопасности. 304 фишинговых сайтов и вредоносного социально-инженерного софта были изучены. Было обнаружено, что SmartScreen — опция защищенности в Edge — заблокировала 99% атак на основе методов социальной инженерии, Firefox справился на 78,3%, а Chrome заблокировал 85,8%.

логотип Microsoft Edge

Как раз SmartScreen — основной вектор Microsoft в области безопасности. SmartScreen появился еще в Internet Explorer 7 и с тех времен только развивался. Но SM не есть гарант безопасности, Microsoft рекомендует использовать Edge в связке с хорошим антивирусом.

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

По аналогии с другими браузерами, в Edge есть функция «InPrivate», она позволяет при использовании вкладок или окон в режиме InPrivate не сохранять данные браузера на компьютере после завершения просмотра.

Opera

Краткая выжимка на русском с ссылкой на оригинал.

логотип Opera

Также удобно, что Opera и Opera mini для Android использует встроенный блокировщик рекламы. Пользователю нет необходимости терять время и искать нужное расширение в магазине аддонов. Opera заботится о своих пользователях, поэтому встроенный блокировщик рекламы также предотвращает майнинг криптовалюты с компьютера пользователя.

Как и во всех современных браузерах, в Opera есть приватный просмотр. После закрытия приватной вкладки браузер очистит все сведения о сетевой активности пользователя. Закрытую вкладку невозможно восстановить с помощью списка «недавно закрытых» вкладок. Но если есть необходимость, то самостоятельно можно сохранить пароль, файл или сайт на начальном экране.

Opera, как и Chrome, периодически загружает черные списки фишинговых или сайтов-мошенников и при посещении одного из сайтов из списка показывает соответствующий значок.

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

значки в Opera

Firefox

Если по цифрам браузер от Mozilla и отстает от того же Chome, но по безопасности он как минимум ровня. В Firefox предусмотрен и внутренний блокировщик содержимого, и функция «не отслеживать», и определяющие безопасность сайта значки, и предупреждение о небезопасном вводе пароля, когда страница не использует защищенное соединение. Mozilla делает все, чтобы пользователь чувствовал себя в безопасности, когда использует Firefox.

логотип Firefox

Особенностью данного браузера является очень подробные инструменты разработчика, которые помогают устранить ошибки в коде.

Также на странице помощи есть огромнейший FAQ по безопасности в Firefox и не только. Рекомендуем к ознакомлению.

И если мы заговорили о безопасности, то, конечно же, стоит отметить браузер Tor и внутренние Onion сети. Безусловно, ниженаписанное не гарантирует полную безопасность пользователя и его устройства, но на долю обеспечить сможет.

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

логотип Tor

Идея браузера — дать пользователю реальную свободу и анонимность. Но нередко этим пользуются ради злых умыслов. Раз браузер обеспечивает полную анонимность и свободу, значит, там можно делать то, чего нельзя в остальных браузерах.

Например, в onion сети много площадок для продажи и распространения запрещенных веществ, оружия, контента, который не разрешен во многих странах. Тремя словами — огромный черный рынок. Также Tor позволяет переходить на ресурсы, доступ к которым заблокирован по тем или иным причинам. Через этот браузер можно заходить на все сайты, которые занесены в единый реестр запрещенных интернет-ресурсов в РФ.

Браузером пользуются журналисты, социальные работники, общественные организации и спецслужбы. Часто через Tor проводятся транзакции по криптовалютам, т. к. IP-адрес скрыт, а адрес крипто-кошелька не меняется.

Совсем кратко описать принцип работы можно так: прежде чем данным попасть через выходной сервер во внешний мир, данные проходят через три собственных узла (нода). Данные между узлами зашифрованы, а ключи от шифров знают только сами узлы. В итоге на выходе пользователь не оставляет на сайте никаких следов посещения.

Стоить помнить и про то, что скорость передачи информации оставляет желать лучшего. Дело в том, что IP пользователя шифруется, проходя через множество прокси-серверов, расположенных по всему миру. Постоянная переадресация и приводит к понижению скорости загрузки страниц.

Правда об Onion доменах

Согласно Википедии, .onion — псевдо-домен верхнего уровня. Создан для обеспечения доступа к анонимным или псевдо-анонимным адресам Tor сети. Подобные адреса не могут быть полноценными записями DNS, и информация о них отсутствует в корневых DNS серверах. Но если установить дополнительное ПО для выхода в сеть Tor, программы, работающие с интернетом, получают доступ к сайтам в доменной зоне .onion, отправляя запрос через сеть серверов Tor.

Но Tor не является гарантом безопасности. Поэтому для обеспечения полнейшей анонимности и секьюрности существуют операционные системы, которые защищены от утечки IP и DNS. Самые известные — это Whonix и Tails.

Если вам интересна тема Тора и даркнета в целом или есть вопросы, ответы на которые хотите получить, оставляйте ваши комментарии — мы напишем статью на эту тему.

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

Хотите, чтобы проверили сайт на ошибки, которые могут быть критическими? Сообщите нам — проведем аудит сайта, составим подробный отчёт об ошибках и дадим рекомендации по их исправлению или исправим сами.

Читайте также: