IMA SDK reklam engelleme, açıklandı
Google IMA SDK, video oynatıcıların reklam talep etmek ve oynatmak için kullandığı kütüphanedir. Bu SDK’yı ağ düzeyinde engellemek, oynatıcıları bozar; bu nedenle AdOff, onu her reklam talebine hemen “içeriği devam ettir” olayı döndüren bir stub ile değiştirir: oynatıcı çalışır, reklamlar asla yüklenmez.
IMA SDK’nın aslında ne olduğu
İnteraktif Medya Reklamları (IMA) SDK, Google’ın video reklamlar için istemci tarafı kütüphanesidir. Bir web sitesinin bir videoyu gelir getirmek istemesi durumunda genellikle kendi reklam oynatıcısını oluşturmaz; bunun yerine imasdk.googleapis.com/js/sdkloader/ima3.js (veya dinamik varyantı ima3_dai.js) yükler, bir AdDisplayContainer başlatır ve SDK’ya bir reklam etiketi URL’si verir. SDK, bu işlem sonucunda bir VAST yanıtı çeker, reklamı oynatıcı içinde işler, izlenme ve dörtlük (quartile) verilerini izler ve nihayetinde kontrolü yayıncının içeriğine geri verir.
Çünkü tek bir etki alanı üzerinden sunulan tek bir ortak betik olduğu için IMA SDK, web video reklamcılığında en çok kullanılan tek engel noktasıdır: bir kez etkisiz hale getirildiğinde, bunun üzerine inşa edilen tüm oynatıcılar reklam sunmayı durdurur.
Bir reklam isteğinin yaşam döngüsü
İzleyici oynat düğmesine bastığında, oynatıcı genellikle bu sırayı çalıştırır:
- Sayfa, Google sunucularından
ima3.jsdosyasını yükler. - Oynatıcı, reklam yükleyici oluşturur ve bir reklam sunucusuna işaret eden bir reklam etiketiyle reklamları ister.
- SDK, reklamı (genellikle DoubleClick üzerinden bir VAST/VMAP belgesi olarak) getirir, işler ve reklam medyasını videonun üzerindeki bir kapsayıcıya yerleştirir.
- İzleme pikselleri tetiklenir; oynatıcı bekler.
- Reklam bittiğinde (veya hata verdiğinde), SDK
CONTENT_RESUME_REQUESTEDolayını tetikler ve oynatıcı gerçek videoyu oynatmaya devam eder.
Son etkinlik kilit noktadır: Oyuncu, bu etkinliği beklemek için yazılır. SDK’yı kontrol eden, içeriğin yeniden başlatılmasını ne zaman yapacağını belirler.
SDK’nın sadece engellenmesinin oynatıcıları neden bozduğu
Ham yaklaşım, imasdk.googleapis.com’u ağ düzeyinde engellemek ve işi burada bitirmektir. Sorun ise: birçok oynatıcı, başarısız veya eksik bir SDK’yı ölümcül bir hata olarak yorumlayıp videoyu hiç başlatmayı reddeder; bunun yerine içerik yerine bir yükleme döngüsü veya “Reklam engelleyici algılandı” engelini gösterir.
Bu, klasik ağ düzeyi engelleyicilerin video reklamlara karşı zayıf olmasının nedenidir: reklam isteğini durdurabilirler, ancak oynatıcının “şimdi devam edebilir miyim?” sorusunu yanıtlayamazlar. Bunu ancak SDK’yı temsil eden bir şey yapabilir.
Yerine koyma yoluyla nötrleştirme: stub yaklaşımı
AdOff, farklı bir yol izler: SDK’yı engellemez, onu değiştirir. IMA SDK’nın orta API’sini taklit eden bir stub, orijinal SDK’nın yerine yerleştirilir; böylece oynatıcı hâlâ çalışan bir SDK “görür” — ancak bu SDK, her reklam aralığının boş olduğunu varsayar.
Oynatıcı, adsManager.start() metodunu çağırdığında, stub hemen CONTENT_RESUME_REQUESTED olayını tetikler. Oynatıcı, içeriği anında oynatmaya devam eder. Hiçbir reklam çekilmez, hiçbir reklam gösterilmez ve oynatıcı, eksik bir şey fark etmediği için asla bir hata durumuna geçmez.
Aynı stub için iki dağıtım kanalı
AdOff, farklı siteler SDK’yı farklı şekilde yüklediği için aynı stub’ı iki kanal üzerinden gönderir:
- Sayfa içi enjeksiyon. Hariç tutulmamış sitelerde, ana dünya betiği, oynatıcı başlatılmadan önce
window.google.imatanımlar; bu sayede paketlenmiş veya harici olarak yüklenen SDK, stub ile değiştirilir. - Ağ yönlendirmesi. 42 Avrupa yayıcı etki alanı için, declarativeNetRequest kuralları,
ima3.jsveima3_dai.jsisteklerini eklentiye dahil edilmiş stub dosyasına yönlendirir. Sayfa, Google SDK’sını düşündüğü şeyi yükler ve bunun yerine AdOff’ın SDK’sını alır.
Her iki kanal da aynı sonuca ulaşır: Oyuncu, duyarlı bir SDK alır; izleyici, içerik alır.
Bu yaklaşımın ulaştığı ve ulaşmadığı yerler
Stub, istemci tarafında IMA tabanlı reklamları etkisiz hale getirir. Reklamlar, teslimat öncesinde video akışına kendiliğinden eklenen sunucu tarafı reklam ekleme (SSAI) yöntemini etkilemez; bu durumda engellenecek bir SDK çağrısı bulunmaz. Kendi reklam hattını kullanan premium abonelik hizmetleri, oynatıcılarının çalışmaya devam etmesi için bilinçli olarak hariç tutulmuştur.
Ana video platformu, bunun için özel bir hattı da alır: Reklam zamanlaması, sayfanın okumasından önce oynatıcıdan çıkarılır ve kaçan her şey hızlı ileri sarılır.
Bu durumun reklam engelleme geleceğinin neden önemli olduğu
Reklam platformları, basit engelleyicilerin bunlarla başa çıkamaması nedeniyle doğrudan istemci tarafı SDK’larına ağırlık kaydırıyor. Oyuncuyu yormak yerine onu cevaplandıran bir yaklaşım, dayanıklıdır: her reklam URL’sini listelemeye değil, içeriğin devam etmesi için SDK’nın kendi sözleşmesine dayanır.
AdOff, Chrome, Firefox, Safari, Edge ve Opera için ücretsiz, hesapsız, Manifest V3 uzantısıdır ve video engelleme katmanı herkes için dahildir.
Sıkça sorulan sorular
IMA SDK’yi engellemek, onu değiştirmekle aynı mı?
Hayır. Ağı düzeyinde engellemek, oynatıcıların içeriğin tekrar oynatılabileceğini belirten SDK sinyalini beklemesinden dolayı videoyun oynatılmasını genellikle engeller. Bunun yerine bir stub (sabitlenmiş kod) kullanmak, oynatıcının tamamen işlevsel kalmasını sağlarken hiçbir reklamın asla istenmesini engeller.
Takviye (stub), bir reklam isteği aldığında ne olur?
Bu stub, oynatıcıların beklediği aynı API arayüzünü sunar. Reklamları başlatmak istendiğinde, hemen içerik yeniden oynatma (content-resume) olayını tetikler; böylece hiçbir reklam çekilmeden veya işlenmeden oynatma işlemi devam eder.
Bir IMA takvibi (stub), sunucu tarafı reklam ekleme (server-side ad insertion) ile çalışır mı?
Hayır. SSAI (Sunucu Tarafı İçerik Eklemesi) ile reklamlar, teslimat öncesinde sunucu tarafında video akışına eklenir; bu nedenle istemci tarafında SDK çağrısı yapılmaz ve engellenecek bir nokta yoktur. Sunucu tarafı eklemesi, farklı önlemler gerektirir ve bir tarayıcı eklentisinin ele alamayacağı bir konudur.
Bu tür bir uzantıyı hangi tarayıcılar çalıştırabilir?
AdOff, Manifest V3 üzerine inşa edilmiştir ve Chrome, Firefox, Safari, Edge ile Opera’da çalışır. IMA nötrleştirme katmanı, herhangi bir hesap veya kaydolma gerektirmeksizin ücretsiz sürümde dahil edilmiştir.
Bir site, SDK’nın değiştirildiğini algılayabilir mi?
Bu, gizlilik katmanının (stealth layer) tam olarak amacıdır: tuzak yemi (bait) sahteciliği ve fetch/XHR engelleme, ortamı anti-reklam engelleme betiklerine sıradan bir ortam gibi gösterir. Platformlar tespit yöntemlerini sık sık değiştirdiğinden hiçbir yöntem kalıcı değildir.
İlgili yazılar: Akış reklam engelleme: tam rehber, Ön-sarma, orta-sarma, son-sarma: video reklam formatları açıklanıyor, AdOff’in nasıl çalıştığı: katman katman.
Gerçek oynatıcılarda nasıl işlediğini görün
AdOff, reklam SDK’sını anında devam ettirme için bir stub ile değiştirir; herkes için ücretsizdir, hesap gerektirmez.
AdOff’i ücretsiz kurun