AdGuard выпустила блокировщик рекламы на базе Manifest V3
AdGuard выпустила блокировщик рекламы на базе Manifest V3 для Windows, Mac и Android. Он доступен в Chrome WebStore.
Все правила, включённые в фильтры расширений, были разделены Manifest V3 на статические (встроенные) и динамические. Для статических правил Chrome установил минимальное гарантированное ограничение в 30 тысяч для каждого расширения и общее ограничение в 330 тысяч правил для всех расширений, установленных одним пользователем.
В AdGuard объяснили, что при превышении лимита блокировщик покажет сообщение о том, что браузер изменил список активных фильтров и оставил включённым только базовый рекламный фильтр AdGuard. Однако и базовый фильтр может перестать работать.
Для динамических правил действует ограничение в 5000 правил, включая ограничение в 1000 правил регулярных выражений. Если оно будет превышено, AdGuard MV3 сможет применить только первые 5000 правил, а остальные останутся неактивными.
В AdGuard отмечают, что ограничения Manifest V3 вредят не только качеству фильтрации и пользовательскому опыту, но и сообществу разработчиков фильтров. Раньше любой желающий создавал свой фильтр, и со временем он мог попасть в список рекомендуемых блокировщиков. Сейчас сделать это гораздо сложнее. Блокировщики должны использовать предустановленные фильтры (не более 50), и в AdGuard должны были очень избирательно выбрать, какие будут доступны пользователям.
До того, как был представлен Manifest V3, механизм фильтрации динамически создавался из фильтров, загруженных с сервера расширением. Далее правила, составляющие фильтры, применялись на разных этапах загрузки страницы.
Теперь, когда Manifest V3 вступил в силу, метод onBeforeRequest больше нельзя применять. Вместо этого Chrome предлагает использовать declarativeNetRequest API, с помощью которого право на модификацию запросов отдается браузеру. Расширение только объявляет набор декларативных правил, согласно которым браузер будет изменять или блокировать сетевые запросы.
Синтаксис декларативных правил сильно отличается от синтаксиса, обычно используемого современными блокировщиками рекламы. Многие члены сообщества, вероятно, откажутся от работы с Manifest V3, чтобы не тратить время на создание правил только для Chrome, считают в AdGuard. Компания проводит аналогию с разработкой расширения для блокировки рекламы в Safari.
Для регулярных выражений Chrome использует собственную реализацию, поэтому часть стандартной функциональности не поддерживается. На данный момент в фильтрах AdGuard есть 43 таких правила. Данное ограничение наносит вред блокировке рекламы на более чем 1000 веб-сайтов, подсчитали в компании.
Регулярные выражения дополнительно проверяются в Chrome на предмет потребляемой памяти. Поскольку разработчики не знают, какая реализация используется в данном случае, могут возникнуть проблемы с некоторыми регулярными выражениями.
В AdGuard предупредили, что фильтры блокировщика не будут обновляться несколько дней подряд: после добавления новой версии в Chrome Store нужно будет дождаться проверки.
Браузерное расширение AdGuard, основанное на Manifest V2, имеет журнал фильтрации, в котором отображаются все запросы, отправленные браузером, и подробную информацию о них. Из-за того, что сам Chrome теперь блокирует запросы и делится статистикой только с расширениями, разархивированными и установленными в режиме разработчика, в новой версии журнал фильтрации в прежнем виде реализовать не получится. Однако в AdGuard пообещали придумать альтернативу, которую представят в финальной версии расширения.
В Manifest V3 не работают фоновые страницы — отдельный фоновый процесс, в котором расширения могут сохранять своё состояние и работать с API-интерфейсами браузера. В Manifest V3 эта страница заменена сервис-воркером, который часто прерывается браузером. Когда браузер останавливает сервис-воркер, расширение переходит в своего рода спящий режим: статические правила работают, а динамические — нет. Чтобы расширение работало, должна произойти загрузка страницы. Когда сервис-воркер активирован, расширение начинает считывать правила фильтрации из репозитория и обрабатывать их, чтобы потом быстро их найти. За это время в течение 1,5–2 секунд расширение не применяет косметическую фильтрацию, но запросы рекламы блокируются самим браузером. После запускается движок, и реклама исчезает. В AdGuard планируют сократить время пробуждения сервис-воркера и стремятся перенести большинство косметических правил в контент-скрипт.
В AdGuard пообещали, что новый блокировщик всё так же будет проактивно блокировать запросы к трекерам, скрывать баннеры, социальные виджеты и другие элементы, блокировать рекламу на платформах обмена видео, включая YouTube.
Manifest V3 стал доступен в конце 2020 года вместе с Chrome 88 Beta. С января 2022 года стало невозможно добавлять новые расширения на основе Manifest V2 в интернет-магазин Chrome. С января 2023 года перестанут работать все расширения на Manifest V2, даже те, что были добавлены в Chrome Web Store ранее.
Сразу после выхода Manifest V3 раскритиковали, так как он ограничивал возможности блокировки контента по API webRequest, используемого блокировщиками рекламы вроде uBlock Origin и Ghostery. Однако в Google заявили, что такие расширения имели слишком широкий доступ к «потенциально конфиденциальным» данным пользователей. Блокировщики рекламы на Manifest V2 перестанут работать в браузере Google Chrome в январе 2023 года.
«Фонд электронных рубежей» (EFF) призвал пользователей Google Chrome настороженно отнестись к Manifest V3, так как манифест только навредит конфиденциальности пользователей и производительности браузера.
Mozilla в 2021 году заявила, что также планирует использовать версию Manifest v3 в своём браузере Firefox. Однако компания откажется от блокирующего webRequest API, который ставит под угрозу работу блокировщиков рекламы.