Новая редакция манифеста Chrome сделает невозможным использование uBlock Origin
Рэймонд Хилл (Raymond Hill), автор систем блокирования нежелательного контента uBlock Origin и uMatrix, предупредил о невозможности использования в браузере Chrome дополнения uBlock Origin в случае утверждения третьей версии манифеста Chrome.
Манифест определяет перечень возможностей и ресурсов, предоставляемых дополнениям Chrome. В текущем черновом варианте третьей версии манифеста прекращена поддержка обработки API webRequest в блокирующем режиме и в качестве замены предложено использовать существенно более ограниченный API declarativeNetRequest. По мнению Рэймонда Хилла предложенного API недостаточно для обеспечения полноценной блокировки рекламы и в случае утверждения манифеста дополнения uBlock Origin и uMatrix не смогут выпускаться для Chrome.
При этом изменение не повлияет на работу блокировщика Adblock Plus, построенного на базе API declarativeNetRequest. Рэймонд отмечает, что при помощи декларативного API declarativeNetRequest невозможно создавать эффективные движки для блокировки нежелательного контента, так как данный API является уже готовой сильно ограниченной реализацией одного специфичного движка и не даёт самостоятельно контролировать поступающий контент на низком уровне. С мнением Рэймонда также согласились разработчики блокировщика AdGuard, который также затрагивают вводимые изменения.
Из недостатков API declarativeNetRequest называется жесткое ограничение максимального числа подключаемых фильтров - список правил фильтрации ограничивается 30 тысячами записей, что недостаточно с учётом того, что только в одном списке EasyList присутствует более 42 тысяч блокировок. Кроме того, предложенный API не даёт использовать собственные алгоритмы фильтрации и не позволяет создавать сложные правила, перекрывающие друг друга в зависимости от условий. При помощи API declarativeNetRequest также невозможно организовать блокировку больших мультимедийных элементов, остановить выполнение JavaScript через подстановку директив CSP и удалить заголовки с Cookie.
В качестве причины прекращения поддержки API webRequest называется желание защитить пользователей от неконтролируемого доступа дополнений к контенту. По мнению Google пользователи должны иметь возможность определить, какая информация доступна дополнению, а какая нет. API declarativeNetRequest не даёт дополнению прямого доступа к сетевым запросам, а лишь позволяет задавать правила блокировки, но обрабатывает их самостоятельно.
Отмечается также, что использование webRequest приводит к замедлению отображения контента, так как данный API работает в блокирующем режиме и перед выводом страницы браузер ожидает полного завершения обработки данных дополнением. В соответствии с планом Google, частично поддержка API webRequest будет сохранена, но ограничена неблокирующим режимом, подходящим только для чтения запросов и анализа трафика, а работающие в блокирующем режиме возможности, такие как перехват, перенаправление и модификация содержимого, будут отключены.
По мнению Рэймонда Хилла прекращение поддержки уже 7 лет существующего API со ссылками на защиту приватности пользователей является странным шагом, так как логичнее было добавить отдельное разрешение, позволяющее пользователю выборочно предоставлять доступ избранным дополнениям к webRequest, а не полностью удалять данный API.Вызывает вопросы и то, что работа по удалению webRequest началась в предвкушении повсеместного введения в строй собственного блокировщика Google, в котором реализация declarativeNetRequest близка к движку блокировщика Adblock Plus, заключившего соглашение о помещении рекламных сетей Google, Amazon и Microsoft в белый список.
Отличный комментарий!