Google частично отказывается от изменений в Chrome, которые сломают блокировщики рекламы

Тесты показали, что большинство блокировщиков рекламы не выполняют сетевые запросы намного медленнее.

Google заявил, что пересмотрит предложенные изменения в API расширений Chrome, которые нарушат или уменьшат функциональность широкого диапазона расширений для блокировки рекламы, чтобы обеспечить сохранение текущего разнообразия расширений для блокировки контента. Первоначальные планы вызвали широкий резонанс как у разработчиков, так и у пользователей этих расширений, но Google утверждает, что «это не является и никогда не было нашей целью предотвратить или устранить блокировку контента» [подчеркивает Google] и говорит, что это будет работать над обновлением своего предложения, чтобы устранить пробелы в возможностях и болевые точки.

Рекламная компания планирует пересмотреть свой интерфейс расширения, чтобы, среди прочего, повысить конфиденциальность пользователей, усложнить для расширений выполнение вредоносных действий и повысить стабильность работы браузера. Вместе эта работа задокументирована как Manifest V3.

В частности, одно из этих изменений имело серьезные последствия для блокировщиков рекламы. В настоящее время блокировщики рекламы широко используют API с именем webRequest. Этот API позволяет расширениям проверять каждый отдельный сетевой запрос, сделанный страницей, и либо изменять его (например, перенаправлять на другой адрес, либо добавлять или удалять файлы cookie), либо полностью блокировать его, либо разрешать беспрепятственно продолжать его. Это оказывает как существенное влияние на конфиденциальность (расширение может видеть и красть ваши куки и, следовательно, маскироваться под вас), так и, по словам Google, некоторое влияние на производительность, поскольку каждый отдельный сетевой запрос (из которых на одной странице могут быть десятки) должен дождитесь расширения, чтобы выполнить его анализ.

Google предложил вместо этого, чтобы блокировщики рекламы могли предоставить браузеру список заблокированных сайтов, и чтобы сам браузер выполнял блокировку, используя новый API, называемый DeclarativeNetRequest. Это предотвратило использование более сложных алгоритмов, и размер этого списка был ограничен 30 000 записей — гораздо меньше, чем обычно используют многие блокировщики рекламы.

Изменения уничтожили бы многие блокировщики рекламы, а также другие законные расширения, использующие тот же API. Например, существуют расширения, которые блокируют фишинговые сайты или URL-адреса, о которых известно, что они распространяют вредоносное ПО. Хотя их назначение иное, они функционируют так же, как блокировщики рекламы, и аналогичным образом им угрожают предложенные изменения.

Производительность не всегда проблема

Разработчики расширения Ghostery составили несколько тестов, которые измеряли накладные расходы, накладываемые несколькими расширениями для блокировки рекламы. В тестах не тестировалось полное расширение, но вместо этого использовались механизмы блокировки запросов расширений, работающие в среде выполнения JavaScript Node.js, которые измеряли производительность почти четверти миллиона запросов, из которых около 20 процентов были заблокированы.

Результаты показывают, что в то время как некоторые блокировщики могут вносить значительную задержку производительности — версия блокировщика DuckDuckGo имела среднюю задержку 8 миллисекунд — накладные расходы от Ghostery, uBlock Origin и Adblock Plus были незначительными, и все они приходились чуть меньше десятой миллисекунды. Таким образом, в то время как обоснование производительности Google не лишено недостатков, блокирование всех таких расширений, потому что некоторые из них плохо работают, кажется неуклюжим — хотя другие проблемы с текущей платформой расширений, такие как конфиденциальность, остаются.

Реакция Google на откат делает некоторые уступки разработчикам, хотя это далеко не полный поворот. Компания по-прежнему намерена ограничить API webRequest и по-прежнему хочет, чтобы расширения переключались на DeclarativeNetRequest. Тем не менее, оба эти изменения API находятся в стадии разработки. В новом декларативном NetRequest будут расширены его возможности; расширения смогут использовать динамические списки блокировок (где черные списки URL добавляются и удаляются во время выполнения), а общий размер списка блокировок будет увеличен с 30 000 (хотя Google утверждает, что будет некоторый лимит, и что блокировщики должны стремиться удалить устаревшие URL из их списков заблокированных).

Google также намерен разрешить более гибкие критерии блокировки, такие как размер ресурса, и изучает способы изменения запросов. Но в его ответе также отмечается, что некоторые из модификаций, которые выполняются расширениями, могут быть сделаны с использованием других API-интерфейсов и, как таковые, не должны быть частью декларативного NetRequest и не являются основанием для сохранения текущего API-интерфейса webRequest.

Компания также подчеркнула, что Manifest V3 все ещё находится в стадии разработки и что, даже когда Manifest V3 будет запущен в производство, будет переходный период. Текущая платформа Manifest V2 не будет удалена, пока Manifest V3 не станет достаточно хорошим. В настоящее время похоже, что разработчики расширений по-прежнему не смогут делать все, что они в настоящее время могут делать с webRequest, но они смогут охватить большую часть своих баз, чем было разрешено первоначальным предложением.

Вернуться к началу