Браузерное расширение AdGuard 4.2: к MV3 готовы
В новой версии Браузерного расширения AdGuard произошли масштабные изменения, которые не сразу заметны глазу. Мы перенесли весь «фильтрующий» код в новую отдельную библиотеку — это позволит нам подготовить расширение к бесшовному переходу на MV3.
Manifest V3 (MV3) – это новый API для расширений Chrome. Среди прочего, из-за него усложнится работа расширений, блокирующих рекламу: MV3 ограничивает количество правил фильтрации, которые могут применяться одновременно. Подробнее об ограничениях Chrome и о том, как мы пытались с ними справиться, создав первый в мире блокировщик на MV3, можно прочитать у нас в блоге.
Немного предыстории
Когда-то давно мы вынесли движок фильтрации URL-адресов из расширения в отдельную библиотеку tsurlfilter
. Основная цель библиотеки — переиспользовать логику фильтрации в наших продуктах (браузерные расширения для Chrome и Firefox, конвертер правил для Safari, линтер правил и т.д.).
В tsurlfilter
было две основных части:
- Движок фильтрации, который сопоставляет URL с загруженными в него правилами
- Специфичный для Chrome и Firefox программный интерфейс, отвечающий за применение найденных правил
С появлением MV3 нам необходимо поддерживать код фильтрации не только для разных браузеров, но и для разных версий манифестов, а также обеспечивать бесшовный переход с MV2 на MV3 по мере того, как браузеры будут удалять старое API. Мы не спешим сразу переходить на MV3, так как его API сильно ограничивает возможности расширений.
Добавление новой логики для решения данной задачи в tsurlfilter
сделало бы библиотеку слишком тяжёлой, поэтому мы решили спроектировать новую программную платформу, которая бы скрывала специфичную для разных браузеров и манифестов логику за единым и простым API. Новая библиотека получила название tswebextension
.
Новая библиотека tswebextension
С tswebextension
поддерживать и обновлять наши продукты будет легче.
В новой версии Браузерного расширения для Chrome и Firefox полностью переработан фоновый сервис с использованием tswebextension
— это позволит нам плавно перейти на MV3 в Chrome в будущих крупных релизах.
Кроме этого, мы обновили AdGuard API, который также использует tswebextension
«под капотом».
Весь список изменений можно найти на GitHub. И как всегда: будем очень рады послушать, что вы думаете о нашем расширении. Пишите нам в соцсетях (поищите там AdGuard) или через ишью на GitHub.