Меню
RU

Что случилось с Пользовательскими фильтрами и Фильтром быстрых исправлений: особенности политики MV3

“Где Пользовательские фильтры? И что случилось с Фильтром быстрых исправлений?”

Чтобы соответствовать строгой политике Chrome в отношении удалённого выполнения кода в рамках Manifest V3, нам пришлось принять несколько сложных решений. Пользовательские фильтры временно недоступны, а Фильтр быстрых исправлений удалён насовсем.

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

Почему это проблема

Прежде всего, Фильтр быстрых исправлений появился только из-за ограничений MV3.

В MV3-расширении все фильтры AdGuard встроены, то есть обновления фильтров возможны только вместе с полным обновлением расширения, с прохождением проверки в магазине Chrome. Проверка может затянуться, и это довольно критично: если популярный сайт сломается, то пользователям придётся ждать новую версию, где эта проблема решена, вплоть до нескольких дней.

В MV2-раширении на такой случай мы внедрили дифференциальное обновление: мы быстро выпускаем новые фильтры, не обновляя всё расширение. Но в MV3-расширении так не получится, и Фильтр быстрых исправлений был нашим способом оперативно обновлять фильтры.

Несмотря на все наши усилия сохранить этот фильтр (историю нашей мучительной борьбы за него можно прочитать ниже), политика Chrome всё-таки вынудила нас полностью удалить его. И это только одна потеря.

Другая потеря — это Пользовательские фильтры, которыми пришлось пожертвовать из-за той же политики удалённого выполнения кода.

Пользовательские фильтры позволяют добавлять сторонние фильтры через URL. Тысячи волонтёров поддерживают эти фильтры, они необходимы для развития экосистемы блокировки рекламы — именно благодаря Пользовательским фильтры люди могут настраивать фильтрацию, тестировать и распространять эти фильтры. А включать просто любые фильтры в наши «готовые» фильтры мы не можем, да это и не должно быть необходимо.

Отсутствие Пользовательских фильтров — это не просто неудобство для пользователей; мы стараемся сделать всё, чтобы расширение оставалось эффективным для них. Однако, как мы уже говорили в одном из наших многочисленных постов, посвящённых MV3, «настоящими жертвами этого перехода являются разработчики фильтров». Потеря Пользовательских фильтров — это удар по сообществу, которое поддерживает мир блокировки рекламы.

Как мы её решаем

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

  • Чтобы вернуть Пользовательские фильтры, мы будем использовать API userScripts. Этот API позволяет регистрировать скрипты в соответствии с политикой MV3.

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

  • Поскольку Фильтр быстрых исправлений больше не может существовать в своём первоначальном виде, мы переходим на ускоренный процесс проверки в Chrome (Skip Review). Так мы сможем чаще обновлять фильтры, не дожидаясь полной проверки. Однако у этого метода есть некоторые ограничения: он применяется только к изменениям в группах DNR правил и только тех, котоые классифицируются как безопасные.

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

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

Хронология борьбы

  • Первый отказ: удалённое выполнение скрипта

Сначала наше расширение отклонили в магазине Chrome из-за того, что мы внедряем скрипты с помощью тегов <script>. Мы действительно использовали механизм, при котором расширение извлекало скрипты из правил и применяло их к странице через тег <script>. Для MV3-расширений требования политики Content Security Policy более строгие, чем для MV2, и мы не можем просто внедрять правила со скриптами, что сильно ограничивает доступные разработчикам инструменты для изменения содержимого страницы. Поэтому в некоторых случаях мы прибегали к использованию <script>. Это и стало проблемой.

Что мы сделали:

Мы преобразовали правила скриптов в локальные функции JavaScript, хранящиеся в расширении. Также мы добавили проверки, чтобы убедиться, что правила не содержат тегов <script> и что скрипты являются частью встроенных правил, прежде чем применять их.

Но мы оставили исключения для Пользовательских правил, Пользовательских фильтров и Фильтра быстрых исправлений, которые по-прежнему использовали <script> для внедрения правил.

Версию с этими изменениями одобрили. А потом отклонили.

  • Второй отказ: загрузка Фильтра быстрых исправлений

На этот раз Chrome интерпретировал механизм загрузки Фильтра быстрых исправлений из удалённого источника как нарушение политики удалённого выполнения.

Что мы сделали:

Мы добавили подробные комментарии, объясняющие назначение Фильтра быстрых исправлений, и пояснили, что он разработан для устранения ограничений MV3 и не нарушает политики.

Этого оказалось недостаточно, чтобы пройти проверку в Chrome. Так мы получили…

  • Третий и четвёртый отказы: весь код Фильтра быстрых исправлений

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

  • Пятый отказ: скриплеты и параметры

Chrome отметил использование скриптлетов — встроенных функций JavaScript — как нарушение политики удалённого выполнения, поскольку они могут выполняться с разным набором параметров.

Что мы сделали:

Мы захардкодили все скриптлеты непосредственно в расширении. Теперь механизм расширения проверяет, соответствует ли правило предварительно встроенной категории фильтра (например, Блокировка рекламы или Безопасность). Если совпадение есть, правило применяется, а если нет — отклоняется.

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

Несмотря на все изменения, расширение всё равно было отклонено.

Это больше, чем AdGuard

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

Разработчикам нужны более чёткие руководства и бо́льшая прозрачность от интернет-магазина Chrome. Мы надеемся, что эта ситуация послужит толчком к разговору о балансе между безопасностью и функциональностью — это поможет и разработчикам, и пользователям.

Понравился пост?
25 924 25924 отзыва
Отлично!

AdGuard для Windows

AdGuard для Windows — это не просто «ещё один блокировщик». Это многоцелевой инструмент, который блокирует рекламу и доступ к опасным сайтам, ускоряет загрузку страниц и защищает детей от взрослого контента.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

AdGuard для Mac

В отличие от других блокировщиков, AdGuard разработан с учётом специфики операционной системы macOS. Он не только блокирует рекламу в Safari и других браузерах, но и защищает вас от слежки, фишинга и мошенничества в сети.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

AdGuard для Android

AdGuard для Android — это идеальное решение для Android-устройств. В отличие от других блокировщиков, AdGuard не требует root-доступа и позволяет управлять трафиком любых приложений на вашем устройстве.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

AdGuard для iOS

Лучший блокировщик рекламы для iPhone и iPad. AdGuard устраняет рекламу в Safari, защищает ваши данные и ускоряет загрузку страниц. AdGuard для iOS использует новейшую технологию блокировки, которая обеспечивает непревзойденное качество фильтрации и позволяет применять множество различных фильтров одновременно
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

AdGuard Content Blocker

AdGuard Content Blocker устраняет все объявления в мобильных браузерах, которые поддерживают технологию блокировки контента — к примеру, Samsung Internet и Яндекс.Браузер. Он обладает меньшим количеством функций, чем AdGuard для Android, но при этом бесплатен, прост в установке и по-прежнему обеспечивает высокое качество блокировки рекламы.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

Браузерное расширение AdGuard

AdGuard — самое быстрое и легкое браузерное расширение для блокировки всех типов рекламы! Выбирайте AdGuard для быстрого и безопасного серфинга без рекламы.
25 924 25924 отзыва
Отлично!

Помощник AdGuard

Дополнительное браузерное расширение для десктопных приложений AdGuard. Даёт доступ к таким функциям в браузере, как блокировка отдельных элементов, занесение сайта в белый список или отправление отчёта.
25 924 25924 отзыва
Отлично!

AdGuard DNS

AdGuard DNS – это альтернативный способ заблокировать рекламу, защитить личные данные и оградить детей от взрослых материалов. Он прост в настройке и использовании и обеспечивает необходимый минимум защиты от рекламы, трекинга и фишинга, независимо от платформы.
25 924 25924 отзыва
Отлично!

AdGuard Home

AdGuard Home — мощный сетевой инструмент против рекламы и трекинга. С усилением роли интернета вещей становится все более и более важным управлять всей вашей сетью. После настройки AdGuard Home будет охватывать ВСЕ ваши домашние устройства и для этого вам не понадобится программное обеспечение на стороне клиента.
25 924 25924 отзыва
Отлично!

AdGuard Pro для iOS

AdGuard Pro предлагает гораздо больше чем просто блокировку рекламы в Safari, которая есть в обычной версии. С помощью специальных настроек DNS вы сможете блокировать больше рекламы, защитить ваши личные данные и оградить детей от взрослого контента.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
25 924 25924 отзыва
Отлично!

AdGuard для Safari

Расширения, блокирующие рекламу в Safari, переживают не лучшие времена с тех пор, как компания Apple вынудила всех использовать новый SDK. Познакомьтесь с нашим легко настраиваемым и молниеносным приложением!
25 924 25924 отзыва
Отлично!

AdGuard для Android TV

AdGuard для Android TV — единственное приложение, которое блокирует рекламу, защищает ваши данные и действует как фаервол для Smart TV. Получайте предупреждения о веб-угрозах, используйте безопасный DNS, а ваш трафик будет зашифрован. Смотрите любимые сериалы безопасно и без рекламы!
25 924 25924 отзыва
Отлично!

AdGuard Temp Mail

Ваш временный почтовый ящик, чтобы на основную почту не приходил спам
25 924 25924 отзыва
Отлично!

AdGuard Mail β

Сохраняйте анонимность, избавьтесь от спама и защитите почту с нашими алиасами и временными адресами. Наш сервис пересылки бесплатный и подходит для всех операционных систем
Загрузка AdGuard началась Стрелка указывает на файл: нажмите на него, и установка начнётся Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне перетащите значок AdGuard в папку «Приложения». Спасибо за выбор AdGuard! Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне нажмите «Установить». Спасибо за выбор AdGuard!
AdGuard есть и в мобильном варианте