Компания Google сообщила о включении в Chrome 88, релиз которого ожидается 19 января 2021 года, третьей редакции манифеста Chrome, нарушающей работу многих дополнений для блокирования нежелательного контента и обеспечения безопасности. Отмечается, что поддержка дополнений, использующих вторую версию манифеста, какое-то время будет сохранена. Дата прекращения поддержки Manifest V2 пока не определена, но период миграции на новый манифест продлится как минимум год.
Напомним, что манифест Chrome определяет возможности и ресурсы, предоставляемые дополнениям. Новый манифест разработан в рамках инициативы по усилению безопасности, конфиденциальности и производительности дополнений. Главной целью вносимых изменений является упрощение создания безопасных и высокопроизводительных дополнений, и усложнение возможности создания небезопасных и медленных дополнений.
Основное недовольство новым манифестом связано с прекращением поддержки блокирующего режима работы API webRequest, который будет ограничен режимом только для чтения. Исключение будет сделано лишь для редакции Chrome для предприятий (Chrome for Enterprise), в которых поддержка API webRequest будет сохранена. Компания Mozilla решила не следовать за новым манифестом и сохранит в Firefox возможность полного использования API webRequest. Вместо API webRequest для фильтрации контента в новом манифесте предложен декларативный API declarativeNetRequest.
API webRequest позволял подключать собственные обработчики, имеющие полный доступ к сетевым запросам и способные на лету модифицировать трафик Новый API declarativeNetRequest предоставляет доступ к готовому универсальному встроенному движку для фильтрации, самостоятельно обрабатывающему правила блокировки, не разрешающему использовать собственные алгоритмы фильтрации и не позволяющему задавать сложные правила, перекрывающие друг друга в зависимости от условий. В качестве причины перехода на API declarativeNetRequest отмечается забота о конфиденциальности - с новым API дополнения лишатся неограниченного доступа ко всем потокам данных, которые могут включать в том числе и конфиденциальную информацию пользователя.
Компания Google попыталась сгладить некоторые острые моменты, озвученные в ходе дебатов с разработчиками дополнений, на работу которых повлияет API declarativeNetRequest (например, перестанет работать uBlock Origin, автор которого считает функциональность declarativeNetRequest недостаточной для полноценной работы дополнения). По мотивам пожеланий разработчиков дополнений добавлена поддержка использования declarativeNetRequest для нескольких статических наборов правил, фильтрации по регулярным выражениям, модификации HTTP-заголовков, динамического изменения и добавления правил, удаления и замены параметров запросов.
В новом манифесте также представлены следующие изменения, влияющие на совместимость с дополнениями:
Напомним, что манифест Chrome определяет возможности и ресурсы, предоставляемые дополнениям. Новый манифест разработан в рамках инициативы по усилению безопасности, конфиденциальности и производительности дополнений. Главной целью вносимых изменений является упрощение создания безопасных и высокопроизводительных дополнений, и усложнение возможности создания небезопасных и медленных дополнений.
Основное недовольство новым манифестом связано с прекращением поддержки блокирующего режима работы API webRequest, который будет ограничен режимом только для чтения. Исключение будет сделано лишь для редакции Chrome для предприятий (Chrome for Enterprise), в которых поддержка API webRequest будет сохранена. Компания Mozilla решила не следовать за новым манифестом и сохранит в Firefox возможность полного использования API webRequest. Вместо API webRequest для фильтрации контента в новом манифесте предложен декларативный API declarativeNetRequest.
API webRequest позволял подключать собственные обработчики, имеющие полный доступ к сетевым запросам и способные на лету модифицировать трафик Новый API declarativeNetRequest предоставляет доступ к готовому универсальному встроенному движку для фильтрации, самостоятельно обрабатывающему правила блокировки, не разрешающему использовать собственные алгоритмы фильтрации и не позволяющему задавать сложные правила, перекрывающие друг друга в зависимости от условий. В качестве причины перехода на API declarativeNetRequest отмечается забота о конфиденциальности - с новым API дополнения лишатся неограниченного доступа ко всем потокам данных, которые могут включать в том числе и конфиденциальную информацию пользователя.
Компания Google попыталась сгладить некоторые острые моменты, озвученные в ходе дебатов с разработчиками дополнений, на работу которых повлияет API declarativeNetRequest (например, перестанет работать uBlock Origin, автор которого считает функциональность declarativeNetRequest недостаточной для полноценной работы дополнения). По мотивам пожеланий разработчиков дополнений добавлена поддержка использования declarativeNetRequest для нескольких статических наборов правил, фильтрации по регулярным выражениям, модификации HTTP-заголовков, динамического изменения и добавления правил, удаления и замены параметров запросов.
В новом манифесте также представлены следующие изменения, влияющие на совместимость с дополнениями:
- Переход к выполнению Service workers в форме фоновых процессов, что потребует от разработчиков изменения кода некоторых дополнений.
- Новая гранулированная модель запроса полномочий - дополнение не сможет активироваться сразу для всех страниц (убрано полномочие "all_urls"), а будет работать только в контексте активной вкладки, т.е. пользователю потребуется подтверждать работу дополнения для каждого сайта.
- Изменение обработки Cross-origin запросов - в соответствии с новым манифестом на скрипты обработки контента будут распространяться те же ограничения полномочий, что и для основной страницы, в которую эти скрипты внедряются (например, если страница не имеет доступа к API определению местоположения, то и скрипт дополнения также не получит этот доступ).
- Запрет выполнения кода, загруженного с внешних серверов (когда дополнение подгружает и выполняет внешний код).