Meningkatkan pemfilteran konten di Manifes V3

Selama setahun terakhir, kami aktif terlibat dalam diskusi dengan vendor di balik beberapa ekstensi pemblokiran konten seputar cara meningkatkan platform ekstensi MV3. Berdasarkan diskusi ini, banyak di antaranya berlangsung di WebExtensions Community Group (WECG) yang bekerja sama dengan browser lain, dan kami berhasil memberikan peningkatan yang signifikan.

Kumpulan aturan statis lainnya

Kumpulan aturan filter biasanya dikelompokkan ke dalam daftar. Misalnya, daftar yang lebih umum dapat berisi aturan yang berlaku untuk semua pengguna, sementara daftar yang lebih spesifik mungkin menyembunyikan konten khusus lokasi yang hanya ingin diblokir oleh beberapa pengguna. Hingga saat ini, kami mengizinkan setiap ekstensi untuk menawarkan 50 daftar (atau “kumpulan aturan statis) kepada pengguna, dan 10 di antaranya diaktifkan secara bersamaan. Dalam diskusi dengan komunitas, developer ekstensi memberikan bukti meyakinkan yang menunjukkan bahwa angka ini terlalu rendah untuk kasus penggunaan tertentu. Setelah melihat performa API di Chrome dengan mempertimbangkan diskusi ini, sekarang kami mengizinkan hingga 50 API untuk diaktifkan secara bersamaan. (Secara khusus, jumlah ini jauh lebih tinggi daripada batas 20 permintaan yang diminta dalam WECG.) Kami juga mengizinkan total 100 kumpulan aturan. Fitur ini diluncurkan di Chrome 120 dan meningkatkan batas ini didukung oleh Firefox dan Safari yang memberikan input awal terkait proposal ini.

Aturan yang lebih dinamis

Sebagian besar aturan bersifat "statis" dan dikirimkan bersama setiap update ke ekstensi. Namun, untuk mendukung update yang lebih sering dan aturan yang ditentukan pengguna, ekstensi juga dapat menambahkan aturan secara dinamis, tanpa mengharuskan developer mengupload versi baru ekstensi tersebut ke Chrome Web Store.

Jika ekstensi dapat mengubah permintaan secara dinamis tanpa diperiksa selama peninjauan Chrome Web Store, hal ini akan membuat pengguna berisiko terkena phishing atau pencurian data. Misalnya, aturan pengalihan dapat disalahgunakan untuk memasukkan link afiliasi tanpa izin.

Oleh karena itu, kami hanya mengizinkan ekstensi untuk menambahkan hingga 5.000 aturan yang mendorong penggunaan fungsi ini dengan hemat dan mempermudah kami mendeteksi penyalahgunaan.

Namun, developer dari ekstensi termasuk AdGuard dan Adblock Plus melakukan analisis mereka sendiri serta data bersama. Batas yang lebih tinggi akan memungkinkan lebih banyak aturan terbaru serta bagi pengguna dengan jumlah daftar kustom yang lebih tinggi untuk bermigrasi ke Manifes V3. Faktanya, AdGuard melaporkan bahwa lebih dari 2.600 perubahan dilakukan pada daftar populer setiap minggunya, dan dari lima persen pengguna yang menggunakan daftar filter kustom, satu dari empat pengguna tersebut memiliki total gabungan lebih dari 5.000 aturan dinamis di seluruh daftar tersebut (sumber). AdGuard mencatat hal ini sebagai tantangan signifikan untuk memigrasikan ekstensi mereka ke Manifes V3 dan kami menerima masukan serupa dari pemblokir konten lainnya.

Kami mendapati bahwa beberapa aturan filter, seperti aturan dengan tindakan block atau allow, jauh lebih aman dan cenderung tidak disalahgunakan. Kebetulan juga merupakan bagian terbesar dari aturan filter pemblokiran iklan. Berdasarkan hal ini, saya membuat draf dan membagikan proposal di Grup Komunitas Ekstensi Web untuk mendefinisikan serangkaian aturan yang kami anggap memiliki risiko lebih rendah dan memungkinkan hingga 30.000 aturan tersebut. Kami masih mempertahankan batas atas untuk menghindari regresi performa.

Proposal ini didukung di Grup Komunitas Ekstensi Web, jadi kami menerapkannya. Mulai Chrome 121, batas lebih tinggi yaitu 30.000 aturan berlaku untuk aturan DNR yang aman,yang kita tentukan sebagai aturan dengan tindakan block, allow, allowAllRequests, atau upgradeScheme.

Berdasarkan data yang dibagikan oleh AdGuard, batas yang lebih tinggi ini dapat diuntungkan antara 98 dan 99 persen aturan mereka. Aturan lainnya masih didukung dan dapat ditambahkan sesuai batas yang ada.

Fitur ini tersedia di Chrome sebagai konstanta MAX_NUMBER_OF_DYNAMIC_RULES. Batas aturan untuk semua aturan permintaan net dinamis lainnya tetap sebesar 5.000.

Pengurangan ukuran kumpulan aturan

Di Chrome 118, kami mengubah nilai default untuk kolom isUrlFilterCaseSensitive menjadi false berdasarkan masukan dari komunitas. Kolom ini mengontrol apakah aturan yang memfilter menurut URL peka huruf besar/kecil, dan kami mendapati bahwa sebagian besar developer memiliki default yang berbeda di ekstensi mereka. Akibatnya, nilai tersebut harus ditetapkan berkali-kali. Dengan melakukan perubahan ini, developer dapat mencapai pengurangan ukuran yang signifikan pada kumpulan aturan mereka.

Apa selanjutnya?

Kami berkomitmen untuk terus berinvestasi pada deklaratifNetRequest API agar dapat mendukung sebanyak mungkin kasus penggunaan, dan berharap dapat terus bekerja sama dengan komunitas. Secara khusus, kami ingin berterima kasih kepada anggota WECG atas interaksi mereka, termasuk AdGuard karena telah membagikan sejumlah besar data yang mendorong pekerjaan ini, dan semua vendor browser yang semuanya telah menjadi bagian utama dalam merancang API ini.

Kami akan terus meninjau batasan yang telah kami terapkan untuk melakukan penyesuaian jika diperlukan. Untuk mendukung hal ini, kami berencana untuk membagikan beberapa data yang kami kumpulkan sebagai bagian dari upaya ini dalam waktu dekat. Selain itu, kami sedang berupaya menambahkan kemampuan tambahan seperti kemampuan untuk mencocokkan dengan header respons, yang merupakan permintaan umum yang telah kami lihat pada ekstensi penampil PDF. Dalam semua kasus, kami akan terus menyampaikan upaya kami, dan menggunakan Grup Komunitas Ekstensi Web secara rutin sebagai tempat untuk mendiskusikan ide dan menyelaraskan hal yang ingin kami lihat selanjutnya.