От новых API в Chromium пострадает не только uBlock Origin, но и другие расширения
Три месяца разработчики Chromium обсуждают новые программные интерфейсы declarativeNetRequest API, лишающие возможности полноценно использовать webRequest API. Расширения используют данные API для блокировки контента на лету во время загрузки страницы. В новой системе блокировщики не cмогут блокировать события, а только просматривать их. Вместо этого расширениям предлагают перейти на declarativeNetRequest API — и сообщать браузеру о тех событиях, которые они хотят заблокировать. Это якобы должно ускорить загрузку страниц в браузере (потому что расширения больше не будут тормозить основной поток), а также защитит приватность пользователей, по мнению Google.
Первым поднял тревогу Реймонд Хилл, автор uBlock Origin и uMatrix. Он заявил, что его расширения для блокировки рекламы «не смогут существовать», если будут приняты изменения.
Позже пессимизм высказали разработчики других расширений, в том числе F-Secure, NoScript и Ermes Cyber Security. Например, NoScript для Firefox никак не получится перенести на Chrome.
Реймонд Хилл обращает внимание, что в declarativeNetRequest API используется система фильтрации в стиле Adblock Plus, не совместимая с uBlock Origin. Он считает, что это фундаментальная ошибка: «Кроме того, что uBlock Origin и uMatrix не смогут существовать, вызывает озабоченность тот факт, что предлагаемые declarativeNetRequest API блокируют внедрение новых движков фильтрации контента на инновационной архитектуре, поскольку declarativeNetRequest API — не больше чем реализация одного конкретного движка фильтрации, и довольно ограниченная реализация (лимита в 30 000 ограничений недостаточно для отработки одних только известных списков EasyList)». Реймонд Хилл также заметил, что в новом API не поддерживаются некоторые другие возможности, включая блокировку мультимедийных элементов больше указанного размера, отключение выполнения JavaScript путём введения директив Content-Security-Policy и удаление исходящих заголовков куков. Рэймонд считает, что эти изменения не в интересах пользователей.
По словам Андрея Мешкова, соучредителя другого блокировщика рекламы AdGuard для Chrome, это изменение, скорее всего, коснётся и всех остальных блокировщиков рекламы.
Не только блокировщики
Кроме блокировщиков, сильно пострадают антивирусные расширения. «В дополнение к блокировке рекламы, видимо, это повлияет на программное обеспечение, что полагается на динамическую блокировку трафика https, который оценивается как вредоносный, — сказал Джуни Корте, ведущий инженер-программист финского антивирусного производителя F-Secure. — Это страницы, распространяющие зловредов, а также, например, функции родительского контроля, то есть защиты пользователя от контента, классифицированного как вредный/нежелательный для него».
Мнение разработчика поддержал Клаудио Гуарниери, ведущий специалист правозащитной организации Amnesty International: «Я хотел бы повторить то, что сказал Джуни. Я считаю, что эти изменения будут препятствовать правильному функционированию многочисленных расширений безопасности», — написал он.
«Если эти изменения будут опубликованы, [моё] расширение перестанет функционировать», — присоединился к мнению коллег Брэндон Диксон, автор расширения Blockade.io, которое блокирует атаки типа drive-by и предотвращает доступ на фишинговые сайты.
Аналогичные мнения высказал Кристофом Ковач, один из разработчиков расширения для родительского контроля, создатели расширения Privowny, которое предоставляет широкий спектр функций для повышения конфиденциальности в интернете, а также команда Ermes Cyber Security, создатели другого расширения Chrome, ориентированного на безопасность.
Автор популярного расширения NoScript для Firefox сказал, что в случае принятия этих изменений он не сможет перенести NoScript на Chrome.
Критики считают, что Google под ложным предлогом на самом деле пытается ограничить функциональность сторонних блокировщиков рекламы, чтобы продвинуть встроенный в браузер блокировщик, который компания недавно анонсировала. А ещё контролировать — какую рекламу пользователям можно блокировать, а какую нельзя.
Хорошая новость в том, что критика нового DeclarativeNetRequest API пришла в нужное время, когда разработчики из Google открыты для обратной связи. Есть надежда, что они передумают и откажутся от реализации нового API в коде Chromium, на котором основаны Chrome, Vivaldi, Opera, Brave и другие браузеры.