İçerik filtrelemesi

Chrome uzantılarında içerik ve ağ filtrelemeyi uygulamanın farklı yolları vardır. Bu kılavuz, uzantıların kullanabileceği içerik filtreleme özelliklerinin yanı sıra Chrome uzantıları tarafından kullanılabilecek farklı filtreleme yaklaşımları, teknikleri ve API'leri hakkında genel bir bakış sunar.

Ağ isteklerini filtreleme

Chrome uzantılarında ağ isteklerini filtrelemenin temel yolu chrome.declarativeNetRequest API'sini kullanmaktır. Declarative Net Request ile geliştiriciler, bildirim kuralları belirterek ağ isteklerini engelleyebilir veya değiştirebilir. Bildirimli Net İsteği kuralı biçimi, çoğu reklam engelleyici tarafından kullanılan filtre listesi söz diziminin özelliklerine dayanır.

Bu kurallar şunları yapabilir:

  • Bir ağ isteğini engelleme
  • URL şemasını güvenli bir şemaya (http'den https'ye veya ws'den wss'ye) yükseltin.
  • Bir ağ isteğini yönlendirin.
  • İstek veya yanıt başlıklarını değiştirme

Chrome, bir uzantıyla birlikte gelen ve dinamik olarak güncellenen (ör. uzaktan yapılandırmaya veya kullanıcı girişine yanıt olarak) kuralları destekler.

Uzantınızla birlikte paket filtreleme kuralları

Uzantı paketinize dahil edilen kurallar "statik kurallar" olarak adlandırılır. Bu kurallar, bir uzantı yüklendiğinde veya yükseltildiğinde yüklenir ve güncellenir. Chrome, bir uzantının kaç statik kural bildirebileceğini sınırlar.

Statik Declarative Net Request kuralları için Chrome'da, yüklü uzantıların birlikte kullanabileceği 300.000 kuraldan oluşan genel bir paylaşılan havuz bulunur. Ayrıca, her uzantıya 30.000 statik kural izni verilir. Örneğin, bir kullanıcının yalnızca tek bir içerik filtreleme uzantısı yüklüyse uzantı en fazla 330.000 statik Declarative Net Request kuralı kullanabilir. Bu sayının ne kadar olduğunu anlamak için çoğu reklam engelleyici tarafından kullanılan popüler EasyList filtre listesi yaklaşık 35.000 ağ kuralından oluşur.

Statik bildirimli ağ isteği kuralları farklı kural kümeleri halinde düzenlenebilir. Bir uzantı en fazla 100 statik kural grubu belirtebilir ve bu kural gruplarından 50'si aynı anda etkinleştirilebilir.

Çalışma zamanında dinamik olarak filtre kuralları ekleme

Bazı kurallar uzantıyla birlikte paketlenemez. Bunun yerine, uzantıların bunları çalışma zamanında eklemesi gerekir. Bu kurallara "dinamik kurallar" denir.

Dinamik Declarative Net Request kuralları için Chrome, uzantı başına en fazla 30.000 güvenli dinamik kurala izin verir. Çoğu kural güvenli kural olarak kabul edilir: block, allow, allowAllRequests veya upgradeScheme. Güvenli kabul edilmeyen kurallar (örneğin, redirect) dinamik olarak eklenebilir ancak 30.000 dinamik kural sınırına dahil olmak üzere 5.000'lik daha düşük bir maksimum sınırla eklenebilir. Bu durumu perspektife oturtmak için easylist filtre listesindeki kuralların% 98-99'u güvenli kurallardır.

İçerik filtreleme uzantıları, bilinen filtreleme kurallarını uzantılarıyla birlikte paketlemek ve gerektiğinde sunucularından yeni içerik filtreleme kurallarıyla uzantılarını güncellemek için sırasıyla statik ve dinamik kuralları kullanabilir.

Kuralları gözlemlenen isteklere göre uyarlama

Reklam ekosistemi sürekli olarak geliştiği için içerik filtrelerinin de buna göre güncellenmesi gerekir. chrome.webRequest ve dinamik Declarative Net Request kurallarını birleştirerek ağ isteklerinde olası gizlilik ihlallerini analiz etmek ve bunları gelecekte engellemek mümkündür.

Temel yaklaşım şöyledir:

  1. chrome.webRequest API'yi kullanarak web isteklerini analiz edin ve gizlilik şartlarınızı karşılamayan istekleri (ör. makine öğrenimini kullanarak) otomatik olarak tanımlamaya çalışın.
  2. İkinci adımda tanımlanan her istek için bildirime dayalı dinamik ağ isteği kuralı oluşturun. Böylece benzer istekler gelecekte engellenir.
  3. (İsteğe bağlı) Belirlenen Bildirimli Net İsteği kuralını, bir sonraki uzantı güncellemenizle birlikte statik Bildirimli Net İsteği kuralı olarak eklenebilmesi için sunucunuza geri gönderin.

Bu yaklaşımın avantajı, analizin eşzamansız olarak gerçekleşmesi ve web sitesi performansını olumsuz etkilememesidir.

Kullanıcıların kendi filtreleme kurallarını tanımlamasına izin verme

Uzantınızda bir filtre yapılandırma kullanıcı arayüzü sağlayarak kullanıcılarınızın kendi içerik filtreleme kurallarını tanımlamasına izin verebilirsiniz. Bu kullanıcı tanımlı kuralları, bildirimli ağ isteği kurallarına dönüştürün ve dinamik kurallar olarak ekleyin. Bu kurallar, tarayıcı oturumları ve uzantı yükseltmeleri boyunca geçerli olmaya devam edeceğinden kullanıcılar tarafından kullanılabilir. Bu yaklaşımla kullanıcılar en fazla 30.000 özel kural ekleyebilir.

Web sayfalarındaki öğeleri filtreleme

Ağ isteklerini filtrelemek, içerik filtrelemenin yalnızca önemli bir parçasıdır. Bir diğer önemli nokta da istenmeyen içeriği doğrudan web sayfalarından kaldırmaktır. Örneğin, easylist filtre listesi kurallarının% 40'ından fazlası, istemcilerin sayfa öğelerini nasıl gizlemesi gerektiğini tanımlar.

Bu, içerik komut dosyaları kullanılarak yapılabilir. İçerik komut dosyaları, web sayfaları bağlamında çalışır ve DOM'u kullanarak bu sayfalarda değişiklik yapabilir.

Chrome uzantılarının uzaktan barındırılan kodu yürütmesine izin verilmez. Ancak, hangi öğelerin gizleneceğiyle ilgili sunucu verileri, yapılandırma verileri olarak kabul edildiğinden etkilenmez. Bu nedenle, öğe kuralları gerektiğinde çalışma zamanında güncellenebilir.

Politika tarafından yüklenen uzantılardaki ağ isteklerini filtreleme

Kurumsal ve eğitim kullanım alanlarında genellikle içerik ve ağ filtreleme için son derece katı şartlar bulunur. Örneğin, istekler içeriklerine göre filtrelenir. Bu kullanım alanlarını etkinleştirmek için, politikayla yüklenen uzantılar ağ isteklerini filtrelemek ve engellemek için ek bir yöntem sunar. webRequest API'sindeki etkinliklerle "engelleme" seçeneğini kullanarak, bir isteğin engellenip engellenmeyeceğine karar vermek için her istekte özel mantık yürüten programatik bir içerik filtresi uygulamak mümkündür. Bu özellik, daha yüksek güven düzeyine sahip oldukları için yalnızca politika tarafından yüklenen uzantılarla sınırlıdır.

Gezinme isteklerine müdahale etme

Gezinme istekleri, bildirimsel ağ isteği kuralları kullanılarak filtrelenebilir. Örneğin, kullanıcıyı gitmek istediği hedefe yönlendiren izleme URL'lerini atlamak isteyebilirsiniz. Bunu ele almanın bir yolu, bir gezinme isteğini https://tracker.com?redirect=https%3A%2F%2Fexample.com bir uzantı sayfasına (web'e erişilebilir kaynak olarak yapılandırılması gerekir) yönlendirmektir. Bu sayfa, yönlendirme hedefini ayıklamak için bir komut dosyası çalıştırır ve bağlantı izleyiciyi atlayarak window.location.replace("https://example.com") kullanarak hedefe yönlendirir.