Блокировка рекламы с помощью IMA SDK, объяснение

Google IMA SDK — это библиотека, которую используют видеоплееры для запроса и воспроизведения рекламы. Блокировка этой библиотеки на уровне сети приводит к сбою в работе плееров. Поэтому AdOff заменяет её на заглушку, которая на каждый запрос рекламы немедленно возвращает событие «возобновить воспроизведение контента»: плеер работает, а реклама не загружается.

Что на самом деле представляет собой IMA SDK

Библиотека Interactive Media Ads (IMA) SDK — это клиентская библиотека Google для видеорекламы. Веб-сайт, желающий монетизировать видео, как правило, не создаёт собственный проигрыватель рекламы: он подгружает imasdk.googleapis.com/js/sdkloader/ima3.js (или динамический вариант ima3_dai.js), инициализирует AdDisplayContainer и передаёт SDK URL-адрес тега рекламы. Затем SDK получает ответ VAST, отображает рекламу внутри проигрывателя, отслеживает показы и квартели, и в конце концов возвращает управление контенту издателя.

Поскольку это один общий скрипт, обслуживаемый с одного домена, IMA SDK является самым уязвимым и критически важным узлом в веб-рекламе для видео: отключив его один раз, вы остановите показ рекламы во всех плеерах, построенных на его основе.

Жизненный цикл запроса рекламы

Когда зрителю нажимает «Воспроизвести», плеер обычно выполняет эту последовательность:

  1. Страница загружает ima3.js с серверов Google.
  2. Плеер создаёт загрузчик рекламы и запрашивает рекламные объявления, указывая тег рекламы на сервер рекламы.
  3. SDK получает рекламное объявление (обычно документ VAST/VMAP через DoubleClick), парсит его и отображает медиа-контент рекламы в контейнере поверх видео.
  4. Срабатывают пиксели отслеживания; плеер ожидает.
  5. Когда реклама завершается (или возникает ошибка), SDK отправляет событие CONTENT_RESUME_REQUESTED, после чего плеер возобновляет воспроизведение основного видео.

Последнее событие — ключевое: плеер написан так, чтобы ждать его. Кто управляет SDK, тот управляет моментом возобновления контента.

Почему простая блокировка SDK приводит к сбою проигрывателей

Грубый подход — заблокировать imasdk.googleapis.com на уровне сети и всё. Проблема: многие плееры воспринимают ошибку или отсутствие SDK как фатальную и вообще отказываются запускать видео, вместо контента показывая либо крутящийся индикатор загрузки, либо экран с надписью «обнаружен блокировщик рекламы».

Вот почему классические блокировщики на уровне сети слабы против видеорекламы: они могут остановить запрос рекламы, но не могут ответить на вопрос плеера «Можно ли возобновить воспроизведение?». Только то, что выступает вместо SDK, может это сделать.

Нейтрализация путём подмены: подход с использованием заглушки

AdOff идёт другим путём: вместо блокировки SDK он заменяет его. Вместо него вставляется заглушка, имитирующая публичный API IMA SDK, поэтому плеер по-прежнему «видит» рабочий SDK — тот, который ведёт себя так, словно каждый рекламный блок пуст.

Когда плеер вызывает adsManager.start(), заглушка немедленно генерирует событие CONTENT_RESUME_REQUESTED. Плеер мгновенно возобновляет воспроизведение контента. Ни одна реклама не загружается, ни одна реклама не отображается, и плеер никогда не переходит в состояние ошибки, поскольку он никогда не замечает отсутствия чего-либо.

Два канала доставки одной и той же заглушки

AdOff доставляет один и тот же stub через два канала, поскольку разные сайты загружают SDK по-разному:

Оба канала приводят к одному и тому же результату: игрок получает адаптивный SDK, а зритель — контент.

Где этот подход работает, а где — нет

Заглушка нейтрализует клиентскую рекламу на основе IMA. Она не влияет на встраивание рекламы на стороне сервера (SSAI), при котором реклама встраивается непосредственно в видеопоток до его доставки — здесь нет вызова SDK, который можно перехватить. Подписочные сервисы премиум-класса, использующие собственные рекламные конвейеры, специально исключены, чтобы их плееры продолжали работать.

Крупнейшая видеоплатформа также получает выделенный канал обработки: планирование рекламы удаляется из ответа плеера до того, как страница его прочитает, а всё, что всё-таки проникнет сквозь фильтр, пропускается вперёд.

Почему это важно для будущего блокировки рекламы

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

AdOff — это бесплатное расширение для Chrome, Firefox, Safari, Edge и Opera, не требующее учётной записи и соответствующее Manifest V3, а его слой нейтрализации видео включён для всех пользователей.

Часто задаваемые вопросы

Является ли блокировка IMA SDK тем же самым, что и её замена?

Нет. Блокировка на уровне сети часто мешает воспроизведению видео, поскольку проигрыватели ожидают сигнала от SDK о том, что контент можно возобновить. Замена его на заглушку сохраняет работоспособность проигрывателя в полном объёме, при этом гарантируя, что объявления никогда не будут запрошены.

Что происходит, когда заглушка получает запрос на рекламу?

Заглушка предоставляет тот же API, который ожидает проигрыватель. При запросе на запуск рекламы она немедленно генерирует событие возобновления контента, благодаря чему воспроизведение продолжается без загрузки и отображения каких-либо рекламных материалов.

Работает ли заглушка IMA при серверной вставке рекламы?

Нет. При SSAI реклама встраивается в видеопоток на сервере до его доставки, поэтому на стороне клиента не происходит вызова SDK, который можно было бы перехватить. Вставка на стороне сервера требует иных мер противодействия и находится за пределами возможностей расширения для браузера.

Какие браузеры могут запускать подобное расширение?

AdOff разработан на основе Manifest V3 и работает в Chrome, Firefox, Safari, Edge и Opera. Слой нейтрализации IMA включён в бесплатную версию, без необходимости регистрации или создания учётной записи.

Может ли сайт обнаружить, что SDK была заменена?

Это и есть цель слоя скрытности: подмена ловушек и перехват fetch/XHR создают у анти-рекламных скриптов впечатление, что среда обычна. Ни один метод не является постоянным, поскольку платформы часто меняют свои методы обнаружения.

Подробнее: Блокировка рекламы при потоковой передаче: полное руководство, Предролики, mid-roll и постролики: объяснение форматов видеорекламы, Как работает AdOff: по слоям.

Посмотрите, как это работает на реальных плеерах

AdOff заменяет SDK рекламы на заглушку с мгновенным возобновлением воспроизведения. Бесплатно для всех, без необходимости регистрации.

Установить AdOff бесплатно