Три месяца разработчики 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 и другие браузеры.