Рэймонд Хилл (Raymond Hill), автор систем блокирования нежелательного контента uBlock Origin, опубликовал экспериментальное браузерное дополнение uBO Minus с реализацией варианта uBlock Origin, переведённого на API declarativeNetRequest, использование которого предписано в третьей версии манифеста Chrome. В отличие от классического uBlock Origin новое дополнение использует возможности встроенного в браузер движка для фильтрации содержимого и не требует при установке предоставления полномочий для перехвата и изменения всех данных сайтов.
В дополнении пока отсутствует всплывающая панель и страницы настройки параметров, а функциональность ограничена блокировкой сетевых запросов. Для работы без расширенных полномочий отключены такие возможности, как косметические фильтры для замены содержимого на странице (“##”), подстановка скриптов на сайты (“##+js”), фильтры для перенаправления запросов (“redirect=”), фильтры заголовков CSP (Content Security Policy) и фильтры для удаления параметров запросов (“removeparam=”). В остальном список предлагаемых по умолчанию фильтров полностью соответствует набору из uBlock Origin и включает около 22 тысяч правил.
Кроме того, несколько дней назад представлен экспериментальный вариант дополнения для блокировки рекламы AdGuard – AdGuardMV3, также переведённый на API declarativeNetRequest и способный работать в браузерах, поддерживающих только третью редакцию манифеста Chrome. Предложенный для тестирования прототип предоставляет всю необходимую обычным пользователям функциональность для блокировки рекламы, но отстаёт от дополнения для второй редакции манифеста по своим расширенным возможностям, которые могут представлять интерес для продвинутых пользователей.
В новом AdGuard продолжит работать скрытие баннеров, виджетов социальных сетей и назойливых элементов, блокировка рекламы на видеоплатформах подобных YouTube и упреждающая блокировка запросов, связанных с отслеживанием перемещений. Из ограничений отмечается мерцание рекламных вставок из-за задержки применения косметических правил на 1.5-2 секунды, потеря некоторых возможностей, связанных с фильтрацией Cookie, применением регулярных выражений и фильтрацией параметров запросов (новый API предоставляет упрощённые регулярные выражения), доступность статистики и лога срабатываний фильтров только в режиме разработчика (Developer Mode).
Также упоминается возможное сокращение числа правил из-за ограничений, введённых в третьей версии манифеста. Если в браузере установлено одно дополнение, использующее declarativeNetRequest, проблем со статическими правилами не возникает, так как действует общий лимит на все дополнения, допускающий 330 тысяч правил. Когда дополнений несколько, применяется лимит в 30 тысяч правил, которого может оказаться недостаточно. Для динамических правил введён лимит в 5000 правил, а для регулярных выражений – 1000 правил.
Начиная с января 2023 года в браузере Chrome планируют прекратить поддержку второй версии манифеста и сделать третью версию обязательной для всех дополнений. Изначально третья версия манифеста стала объектом критики из-за нарушения работы многих дополнений для блокирования нежелательного контента и обеспечения безопасности. Манифест Chrome определяет возможности и ресурсы, предоставляемые дополнениям. Третья версия манифеста разработана в рамках инициативы по усилению безопасности, конфиденциальности и производительности дополнений. Главной целью внесённых изменений является упрощение создания безопасных и высокопроизводительных дополнений, и усложнение возможности создания небезопасных и медленных дополнений.
Основное недовольство третьей версией манифеста связано с переводом в режим только для чтения API webRequest, позволявшего подключать собственные обработчики, имеющие полный доступ к сетевым запросам и способные на лету модифицировать трафик. Указанный API применяется в uBlock Origin, AdGuard и многих других дополнениях для блокирования нежелательного контента и обеспечения безопасности. Вместо API webRequest в третьей версии манифеста предложен ограниченный по своим возможностям API declarativeNetRequest, предоставляющий доступ к встроенному движку для фильтрации, самостоятельно обрабатывающему правила блокировки, не разрешающему использовать собственные алгоритмы фильтрации и не позволяющему задавать сложные правила, перекрывающие друг друга в зависимости от условий.
За три года обсуждений предстоящей третьей версии манифеста компания Google учла многие пожелания сообщества и расширила изначально предоставленный API declarativeNetRequest возможностями, востребованными в существующих дополнениях. Например, Google добавил в API declarativeNetRequest поддержку использования нескольких статических наборов правил, фильтрации по регулярным выражениям, модификации HTTP-заголовков, динамического изменения и добавления правил, удаления и замены параметров запросов, фильтрации с привязкой ко вкладкам и создания специфичных для определённых сеансов наборов правил.