Вместо такой рекламы браузер будет показывать серые квадраты.
Новый механизм блокировки называется Heavy Ad Intervention. В технической документации сказано, что критерии «тяжёлой рекламы» ещё обсуждаются, но для начала предлагаются такие:
- Использует основной вычислительный поток более чем на 60 секунд (не подряд, а в общей сложности)
- Использует основной поток более 15 секунд в любом 30-секундном интервале
- Загружает более 4 мегабайт
Реклама будет заблокирована, если соответствует любому из перечисленных критериев и если пользователь не взаимодействовал с интерактивными элементами этой рекламы.
Вероятно, что под такую блокировку сразу попадает любая видеореклама (ограничение по трафику) и любая реклама с JS-криптомайнером (ограничение по CPU). Видео блокируется в том случае, если оно загружается без явного разрешения пользователя.
По статистике Google, этим критериям соответствует всего 0,3% интернет-рекламы, но при этом она составляет 27% всего трафика и 28% использования CPU (доля в общем объёме рекламы).

Тестирование
Веб-разработчики и все желающие могут протестировать новую функцию уже сейчас, с версии Chrome 84 и выше.
Включить:
chrome://flags/#enable-heavy-ad-intervention
После включения опция начинает работать, но по умолчанию к пороговым значениям добавляется некоторый шум и вариабельность. Google пишет, что это делается для защиты конфиденциальности. Возможно, здесь речь идёт о возможности фингерпринтинга пользователей со стороны веб-сайта.
Чтобы отключить вариабельность и перейти на жёсткие лимиты, нужно установить опцию
chrome://flags/#heavy-ad-privacy-mitigations
в значение Disabled. Это облегчит отладку и тестирование.Примечание: в более ранних версиях Chrome есть ещё флаг
#heavy-ad-privacy-migrations-opt-out
, который нужно активировать для тестирования.При срабатывании данного фрагмента кода в браузере вы должны увидеть, что контент встроенного фрейма с рекламой заменяется сообщением 'Ad removed'.

При переходе по ссылке написано: «Это объявление использует слишком много ресурсов вашего устройства, поэтому Chrome удалил его».
Демка: heavy-ads.glitch.me
Механизм срабатывания
О вмешательстве в Chrome сообщается через метко названный Reporting API с типом отчёта
intervention
. Вы можете использовать Reporting API, чтобы получать уведомления о вмешательствах либо с помощью POST-запроса к конечной точке, либо в вашем JavaScript, сказано в документации для разработчиков.Эти отчёты запускаются в корневом рекламном iframe со всеми его потомками, то есть если объявление поступает из стороннего источника, то есть с другого сайта, то именно эта третья сторона (например, поставщик рекламы) должен обрабатывать отчёт.
Чтобы настроить страницу для отчётов по HTTP, ответ должен содержать заголовок
Report-To
:Report-To: { "url": "https://example.com/reports", "max_age": 86400 }
Инициированный запрос POST будет включать в себя такой отчёт:
POST /reports HTTP/1.1
Host: example.com
…
Content-Type: application/report
[{
"type": "intervention",
"age": 60,
"url": "https://example.com/url/of/ad.html",
"body": {
"sourceFile": null,
"lineNumber": null,
"columnNumber": null,
"id": "HeavyAdIntervention",
"message": "Ad was removed because its CPU usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384"
}
}]
JavaScript API предоставляет
ReportingObserver
с методом observe()
, который можно использовать для запуска обратного вызова при блокировке. Это может быть полезно, если вы хотите прикрепить дополнительную информацию к отчёту, чтобы помочь в отладке.// callback that will handle intervention reports
function sendReports(reports) {
for (let report of reports) {
// Log the `report` json via your own reporting process
navigator.sendBeacon('https://report.example/your-endpoint', report);
}
}
// create the observer with the callback
const observer = new ReportingObserver(
(reports, observer) => {
sendReports(reports);
},
{ buffered: true }
);
// start watching for interventions
observer.observe();
Однако, поскольку блокировка буквально удалит страницу из iframe, нужно добавить отказоустойчивость и гарантировать, что отчёт определённо получен до того, как страница полностью исчезнет. Для этого вы можете подключить тот же обратный вызов к событию
unload
, советует документация.window.addEventListener('unload', (event) => {
// pull all pending reports from the queue
let reports = observer.takeRecords();
sendReports(reports);
});
Итоговый JSON похож на то, что отправляется в запросе
POST
:[
{
type: 'intervention',
url: 'https://example.com/url/of/ad.html',
body: {
sourceFile: null,
lineNumber: null,
columnNumber: null,
id: 'HeavyAdIntervention',
message:
'Ad was removed because its network usage exceeded the limit. See https://www.chromestatus.com/feature/4800491902992384',
},
},
];
Google планирует продолжить тестирование несколько месяцев и вывести функцию в стабильную версию Chrome примерно в конце августа 2020 года.

OnYourLips
Неужели более никакой надоедливой рекламы на YouTube?
И если они будут блокировать только чужую тяжелую рекламу, а свою оставят, как на это будут смотреть антимонопольные комитеты в Европе?
ivan386
Давно уже не видел ютубовской рекламмы благодаря блокировщикам но не хватает автоперемотки для рекламмы встроенной в ролик. А так приходится в ручную перематывать.
Oplkill
каким образом он будет перематывать рекламу встроенную в видеоролик, если каждый её встраивает куда хочет и механизма который бы отличал контент от рекламы ещё нет
ivan386
Первые просмотревшие ролик перематывают рекламму в ручную. Собирается статистика и остальным она перематывается автоматом. Так же как и с сайтами.
Oplkill
если бы вы владели каналом в ютюбе или прогуглили статистику просмотров, то знали бы, что более 50% юзеров либо дропаются уже с первых минут либо много мотают. Что говорит о том, что использовать эту статистику для перематывания рекламы не годится. Тут гораздо лучше использовать БД, основанную на звуке, как это делается в радио-рекламо-резалок.
ivan386
Нас интересуют только те юзеры которые будут проматывать один и тот же кусочек где скорей всего рекламма и есть.
Если бы все блогеры просто вставляли кусок рекламы данный рекламодателем то такой вариант может быть и работал. Но они записывают свою рекламную вставку да так что не сразу видно границу между роликом и рекламной вставкой.