Компания Google всё-таки вспомнила принцип Don'y be evil и отказалась от планируемых изменений в API браузера Chromium, из-за которых становилась нефункциональными большинство блокировщиков рекламы и некоторые другие расширения.
Решение принято после публикации исследования, насколько разные блокировщики рекламы замедляют работу Chromium (см. выше). Оказалось, что эти задержки настолько мизерные, что их вряд ли можно считать причиной для введения нового API. Через несколько часов после появления этого один из разработчиков Chromium официально огласил решение отложить новые API.
Напомним, что конфликт возник из-за новых программных интерфейсов declarativeNetRequest API (часть документа Manifest V3), которые лишают возможности полноценно использовать webRequest API. Расширения используют данные API для блокировки контента на лету во время загрузки страницы. В новой системе блокировщики не cмогут блокировать события, а только просматривать их. Вместо этого расширениям предлагают перейти на declarativeNetRequest API — и сообщать браузеру о тех событиях, которые они хотят заблокировать. Это якобы должно ускорить загрузку страниц в браузере (потому что расширения больше не будут тормозить основной поток), а также защитит приватность пользователей, по мнению Google.
Первым поднял тревогу Реймонд Хилл, автор uBlock Origin и uMatrix. Он заявил, что его расширения для блокировки рекламы «не смогут существовать», если будут приняты изменения. Позже пессимизм высказали разработчики других расширений, в том числе F-Secure, NoScript и Ermes Cyber Security. Например, NoScript для Firefox никак не получится перенести на Chrome.
Реймонд Хилл обратил внимание, что declarativeNetRequest API — не больше чем реализация одного конкретного движка фильтрации, и довольно ограниченная реализация (лимита в 30 000 ограничений недостаточно для отработки одних только известных списков EasyList)». Реймонд Хилл также заметил, что в новом API не поддерживаются некоторые другие возможности, включая блокировку мультимедийных элементов больше указанного размера, отключение выполнения JavaScript путём введения директив Content-Security-Policy и удаление исходящих заголовков куков.
Google утверждала, что изменения необходимы для 1) безопасности; 2) быстрой работы встроенного в Chromium блокировщика рекламы, поскольку нынешние расширения с их теперешним механизмом работы замедляют браузер, увеличивая время рендеринга страницы. Однако опубликованное 15 февраля 2019 года исследование Adblockers Performance Study полностью опровергает этот тезис.
Исследование провели разработчики блокировщика рекламы Ghostery из немецкого стартапа Cliqz. Наверное, им было особенно обидно слышать обвинения со стороны Google, потому что их блокировщик менее всего влияет на скорость загрузки страниц, лидируя во всех категориях с довольно хорошим отрывом. Ну это можно понять, потому что Ghostery на самом деле не полноценный блокировщик, как, например, uBlock Origin. Кроме того, и выбор расширений для тестирования тоже можно критиковать, но суть не в этом. Главное, что блокировщики рекламы практически не тормозят загрузку страниц, как многие (в том числе в Google) думали.
Сравнение показало, что «самые популярные блокировщики контента уже очень эффективны (имеют среднее время принятия решения на запрос менее 1 миллисекунды) и не должны приводить к каким-либо накладным расходам, заметным для пользователей». Более того, проведённое ранее исследование The Tracker Tax показало, что блокировка рекламы на самом деле ускоряет загрузку страниц, в некоторых случаях в два раза.
Если и говорить о проблемах, то они связаны скорее с работой других расширений, а не блокировщиков.
Диаграмма из исследования DebugBear от декабря 2018 года о том, как разные расширения нагружают CPU во время рендеринга страницы
Отмена планов Google — только временное решение, сказал инженер из команды Chrome Девлин Кронин. После доработки Manifest V3 вернут на обсуждение, с учётом требований всех разработчиков.
Автор: alizar