Pemfilteran konten

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

Memfilter permintaan jaringan

Cara utama untuk memfilter permintaan jaringan di Ekstensi Chrome adalah menggunakan chrome.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 tersebut dapat:

  • Memblokir 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).

Gabungkan aturan filter dengan ekstensi Anda

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

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

Aturan Permintaan Jaring Declaratif Statis dapat disusun ke dalam kumpulan aturan yang berbeda. Ekstensi dapat menentukan hingga 100 kumpulan aturan statis, dan 50 kumpulan aturan tersebut dapat diaktifkan sekaligus.

Menambahkan aturan filter secara dinamis saat runtime

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

Untuk aturan Declarative Net Request dinamis, Chrome mengizinkan maksimum 30.000 aturan dinamis yang aman per ekstensi. Sebagian besar aturan dianggap sebagai aturan yang aman: block, allow, allowAllRequests, atau upgradeScheme. Meskipun aturan tidak dianggap aman (misalnya redirect), aturan tersebut masih dapat ditambahkan secara dinamis, tetapi dengan batas maksimum lebih rendah,yaitu 5.000,yang juga diperhitungkan dalam batas 30.000 aturan dinamis. Sebagai gambaran, 98-99% aturan dalam daftar filter daftar yang mudah adalah aturan yang aman.

Ekstensi pemfilteran konten dapat menggunakan aturan statis dan dinamis masing-masing untuk menggabungkan aturan pemfilteran yang diketahui dengan ekstensinya dan memperbarui ekstensinya dengan aturan pemfilteran konten baru dari servernya kapan pun diperlukan.

Sesuaikan aturan berdasarkan permintaan yang diamati

Ekosistem iklan terus berkembang dan filter konten perlu diperbarui sebagaimana mestinya. Dengan menggabungkan chrome.webRequest dan aturan Declarative Net Request dinamis, Anda dapat menganalisis permintaan jaringan untuk menemukan potensi pelanggaran privasi dan memblokirnya pada masa mendatang.

Pendekatan dasarnya adalah:

  1. Menganalisis permintaan web menggunakan chrome.webRequest API dan mencoba mengidentifikasi secara otomatis permintaan yang tidak memenuhi persyaratan privasi Anda, misalnya menggunakan machine learning.
  2. Buat aturan Permintaan Bersih Declaratif 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 teridentifikasi ke server Anda agar dapat ditambahkan sebagai aturan Declarative Net Request statis bersama update ekstensi berikutnya.

Manfaat pendekatan ini adalah bahwa analisis terjadi secara asinkron dan tidak akan berdampak negatif terhadap kinerja situs web.

Izinkan 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 buatan pengguna ini menjadi aturan Permintaan Bersih Declaratif dan tambahkan sebagai aturan dinamis. Aturan ini akan terus tersedia untuk pengguna karena aturan tersebut berlaku di seluruh sesi browser dan upgrade ekstensi. Dengan pendekatan ini, pengguna dapat menambahkan hingga 30.000 aturan kustom.

Memfilter elemen pada laman web

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

Hal ini dapat dilakukan menggunakan skrip konten. Skrip konten berjalan dalam konteks halaman web dan dapat membuat perubahan padanya menggunakan DOM.

Ekstensi Chrome tidak diizinkan untuk menjalankan kode yang dihosting jarak jauh. Namun, data dari server tentang elemen yang disembunyikan tidak akan terpengaruh karena hal ini dianggap sebagai data konfigurasi. Oleh karena itu, aturan elemen dapat diperbarui saat runtime kapan pun diperlukan.

Memfilter permintaan jaringan di ekstensi yang diinstal oleh kebijakan

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

Mencegah permintaan navigasi

Permintaan navigasi dapat difilter menggunakan aturan Declarative Net Request. Misalnya, Anda dapat mengabaikan URL pelacakan yang mengalihkan pengguna ke tujuan yang diinginkan. Salah satu pendekatan untuk menangani hal ini adalah dengan 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") dengan mengakali pelacak link.