Pemfilteran konten

Ada berbagai cara untuk menerapkan pemfilteran konten dan jaringan di Ekstensi Chrome. Panduan ini memberikan ringkasan kemampuan pemfilteran konten yang tersedia untuk ekstensi dan berbagai pendekatan, teknik, dan API pemfilteran yang dapat digunakan oleh Ekstensi Chrome.

Memfilter permintaan jaringan

Cara utama untuk memfilter permintaan jaringan di Ekstensi Chrome adalah dengan menggunakan browser.declarativeNetRequest API. Dengan Declarative Net Request, developer dapat memblokir atau mengubah permintaan jaringan dengan menentukan aturan deklaratif. Format aturan Declarative Net Request didasarkan pada kemampuan sintaksis daftar filter yang digunakan oleh sebagian besar pemblokir iklan.

Aturan ini dapat:

  • Blokir permintaan jaringan.
  • Upgrade skema URL ke skema yang aman (http ke https atau ws ke wss).
  • Mengalihkan permintaan jaringan.
  • Ubah header permintaan atau respons.

Chrome mendukung aturan yang dipaketkan dengan ekstensi, dan aturan yang diperbarui secara dinamis (seperti sebagai respons terhadap konfigurasi jarak jauh atau input pengguna).

Menggabungkan aturan filter dengan ekstensi Anda

Aturan yang disertakan dalam paket ekstensi Anda disebut "aturan statis". Aturan ini diinstal dan diupdate saat ekstensi diinstal atau diupgrade. Chrome membatasi jumlah aturan statis yang dapat dideklarasikan ekstensi.

Untuk aturan Permintaan Jaringan Deklaratif statis, Chrome memiliki kumpulan bersama global yang terdiri dari 300.000 aturan yang dapat digunakan bersama oleh kumpulan ekstensi yang diinstal. Selain itu, setiap ekstensi dijamin mendapatkan alokasi 30.000 aturan statis. Misalnya, jika pengguna hanya menginstal satu ekstensi pemfilteran konten, ekstensi tersebut dapat menggunakan hingga 330.000 aturan Permintaan Jaringan Deklaratif statis. Untuk mendapatkan gambaran tentang jumlah aturan ini, daftar filter EasyList yang populer, yang digunakan oleh sebagian besar pemblokir iklan, terdiri dari sekitar 35.000 aturan jaringan.

Aturan Static Declarative Net Request dapat diatur ke dalam berbagai set aturan. Ekstensi dapat menentukan hingga 100 set aturan statis, dan 50 set aturan ini dapat diaktifkan sekaligus.

Menambahkan aturan filter secara dinamis saat runtime

Beberapa aturan tidak dapat digabungkan dengan ekstensi. Sebagai gantinya, ekstensi perlu menambahkannya saat runtime. Aturan ini disebut "aturan dinamis".

Untuk aturan Permintaan Jaringan Deklaratif dinamis, Chrome mengizinkan maksimum 30.000 aturan dinamis yang aman per ekstensi. Sebagian besar aturan dianggap sebagai aturan aman: block, allow, allowAllRequests, atau upgradeScheme. Meskipun aturan tidak dianggap aman (misalnya redirect), aturan tersebut masih dapat ditambahkan secara dinamis, tetapi dengan batas maksimum yang lebih rendah,yaitu 5.000,yang juga dihitung dalam batas 30.000 aturan dinamis. Untuk menempatkan hal ini dalam perspektif, 98-99% aturan dalam daftar filter easylist adalah aturan yang aman.

Ekstensi pemfilteran konten dapat menggunakan aturan statis dan dinamis masing-masing untuk menggabungkan aturan pemfilteran yang diketahui dengan ekstensi mereka dan untuk memperbarui ekstensi mereka dengan aturan pemfilteran konten baru dari server mereka jika diperlukan.

Menyesuaikan aturan berdasarkan permintaan yang diamati

Ekosistem iklan terus berkembang dan filter konten perlu diperbarui sesuai dengan perkembangan tersebut. Dengan menggabungkan browser.webRequest dan aturan Declarative Net Request dinamis, Anda dapat menganalisis permintaan jaringan untuk mengetahui potensi pelanggaran privasi dan memblokirnya pada masa mendatang.

Pendekatan dasarnya adalah:

  1. Menganalisis permintaan web menggunakan API browser.webRequest dan mencoba mengidentifikasi permintaan yang tidak memenuhi persyaratan privasi Anda secara otomatis, misalnya, menggunakan machine learning.
  2. Buat aturan Permintaan Jaringan Deklaratif dinamis untuk setiap permintaan yang telah diidentifikasi pada langkah kedua sehingga permintaan serupa akan diblokir pada masa mendatang.
  3. (Opsional) Kirim kembali aturan Declarative Net Request yang diidentifikasi ke server Anda agar dapat ditambahkan sebagai aturan Declarative Net Request statis dengan update ekstensi berikutnya.

Manfaat dari pendekatan ini adalah analisis terjadi secara asinkron dan tidak akan berdampak negatif pada performa situs.

Mengizinkan pengguna menentukan aturan pemfilteran mereka sendiri

Anda dapat mengizinkan pengguna menentukan aturan pemfilteran konten mereka sendiri dengan menyediakan UI konfigurasi filter di ekstensi Anda. Konversi aturan yang ditentukan pengguna ini menjadi aturan Declarative Net Request dan tambahkan sebagai aturan dinamis. Aturan ini akan terus tersedia untuk pengguna karena tetap ada di seluruh sesi browser dan upgrade ekstensi. Dengan pendekatan ini, pengguna dapat menambahkan hingga 30.000 aturan kustom.

Memfilter elemen di halaman web

Memfilter permintaan jaringan hanyalah salah satu bagian penting dari pemfilteran konten. Bagian penting lainnya adalah menghapus konten yang tidak diinginkan langsung dari halaman web. Misalnya, lebih dari 40% aturan daftar filter easylist menentukan cara klien harus menyembunyikan elemen halaman.

Hal ini dapat dilakukan menggunakan skrip konten. Skrip konten berjalan dalam konteks halaman web dan dapat melakukan perubahan pada halaman tersebut menggunakan DOM.

Ekstensi Chrome tidak diizinkan untuk mengeksekusi kode yang dihosting dari jarak jauh. Namun, data dari server tentang elemen mana yang akan disembunyikan tidak terpengaruh karena dianggap sebagai data konfigurasi, sehingga aturan elemen dapat diperbarui saat runtime jika diperlukan.

Memfilter permintaan jaringan di ekstensi yang diinstal kebijakan

Kasus penggunaan perusahaan dan institusi pendidikan sering kali memiliki persyaratan yang sangat ketat untuk pemfilteran konten dan jaringan, seperti memfilter permintaan berdasarkan kontennya. Untuk mengaktifkan kasus penggunaan ini, ekstensi yang diinstal kebijakan memiliki cara tambahan untuk memfilter dan memblokir permintaan jaringan. Dengan menggunakan opsi "pemblokiran" dengan peristiwa di webRequest API, Anda dapat menerapkan filter konten terprogram yang menjalankan logika kustom pada setiap permintaan untuk memutuskan apakah permintaan harus diblokir atau tidak. Hal ini terbatas pada ekstensi yang diinstal kebijakan karena ekstensi ini memiliki tingkat kepercayaan yang lebih tinggi.

Mencegat permintaan navigasi

Permintaan navigasi dapat difilter menggunakan aturan Declarative Net Request. Misalnya, Anda mungkin ingin melewati URL pelacakan yang mengalihkan pengguna ke tujuan yang diinginkan. Salah satu pendekatan untuk menangani hal ini adalah mengalihkan permintaan navigasi https://tracker.com?redirect=https%3A%2F%2Fexample.com ke halaman ekstensi (yang perlu dikonfigurasi sebagai resource yang dapat diakses web), yang kemudian akan menjalankan skrip untuk mengekstrak target pengalihan dan mengalihkan ke tujuan menggunakan window.location.replace("https://example.com") yang menghindari pelacak link.