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 menggunakan chrome.declarativeNetRequest API. Dengan Permintaan Jaringan Deklaratif, developer dapat memblokir atau mengubah permintaan jaringan dengan menentukan aturan deklaratif. Format aturan Permintaan Jaringan Deklaratif didasarkan pada kemampuan sintaksis daftar filter yang digunakan oleh sebagian besar pemblokir iklan.

Aturan ini dapat:

  • Memblokir permintaan jaringan.
  • Mengupgrade skema URL ke skema yang aman (http ke https atau ws ke wss).
  • Mengarahkan ulang permintaan jaringan.
  • Mengubah header permintaan atau respons.

Chrome mendukung aturan yang digabungkan 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 diperbarui saat ekstensi diinstal atau diupgrade. Chrome membatasi jumlah aturan statis yang dapat dideklarasikan oleh 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 memiliki 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 mengetahui jumlah aturan ini, daftar filter EasyList populer, yang digunakan oleh sebagian besar pemblokir iklan, terdiri dari sekitar 35.000 aturan jaringan.

Aturan Permintaan Jaringan Deklaratif statis dapat diatur ke dalam kumpulan aturan yang berbeda. Ekstensi dapat menentukan hingga 100 kumpulan aturan statis, dan 50 kumpulan aturan ini 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 Permintaan Jaringan Deklaratif 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 yang lebih rendah,yaitu 5.000,yang juga dihitung dalam batas 30.000 aturan dinamis. Untuk memberikan gambaran, 98-99% aturan dalam daftar filter easylist adalah aturan yang aman.

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

Menyesuaikan aturan berdasarkan permintaan yang diamati

Ekosistem iklan terus berkembang dan filter konten harus diperbarui sesuai dengan perkembangan tersebut. Dengan menggabungkan chrome.webRequest dan aturan Permintaan Jaringan Deklaratif dinamis, Anda dapat menganalisis permintaan jaringan untuk mengetahui potensi pelanggaran privasi dan memblokirnya di masa mendatang.

Pendekatan dasarnya adalah:

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

Manfaat pendekatan ini adalah analisis terjadi secara asinkron dan tidak akan memengaruhi performa situs secara negatif.

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. Mengonversi aturan yang ditentukan pengguna ini menjadi aturan Permintaan Jaringan Deklaratif dan menambahkannya sebagai aturan dinamis. Aturan ini akan terus tersedia untuk pengguna karena aturan tersebut tetap ada di seluruh sesi browser dan upgrade ekstensi. Dengan menggunakan 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 besar 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 dicapai menggunakan skrip konten. Skrip konten berjalan dalam konteks halaman web dan dapat melakukan perubahan pada halaman tersebut menggunakan DOM.

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

Memfilter permintaan jaringan di ekstensi yang diinstal kebijakan

Kasus penggunaan perusahaan dan 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 "blocking" 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 dibatasi untuk ekstensi yang diinstal kebijakan karena ekstensi ini memiliki tingkat kepercayaan yang lebih tinggi.

Mencegat permintaan navigasi

Permintaan navigasi dapat difilter menggunakan aturan Permintaan Jaringan Deklaratif. 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.