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 yang diselenggarakan di WebExtensions Community Group (WECG) melalui kerja sama dengan browser lain, kami dapat menghadirkan 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 dapat menyembunyikan konten khusus lokasi yang hanya ingin diblokir oleh beberapa pengguna. Hingga saat ini, kami mengizinkan setiap ekstensi untuk menawarkan pilihan kepada pengguna sebanyak 50 daftar (atau “kumpulan aturan statis”), dan untuk 10 di antaranya diaktifkan secara bersamaan. Dalam diskusi dengan komunitas, developer ekstensi memberikan bukti meyakinkan yang menunjukkan bahwa ini terlalu rendah untuk kasus penggunaan tertentu. Setelah melihat performa API di Chrome dengan mempertimbangkan diskusi ini, kini kami mengizinkan hingga 50 orang untuk diaktifkan secara bersamaan. (Secara khusus, ini jauh lebih tinggi daripada batas 20 permintaan yang diminta dalam WECG.) Kami juga mengizinkan total 100 kumpulan aturan. Hal ini akan diterapkan di Chrome 120 dan peningkatan batas didukung oleh Firefox dan Safari yang memberikan masukan awal terkait proposal ini.

Aturan yang lebih dinamis

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

Jika ekstensi dapat mengubah permintaan secara dinamis dengan cara yang tidak diperiksa saat peninjauan Chrome Web Store, tindakan ini dapat menimbulkan risiko phishing atau pencurian data bagi pengguna. Misalnya, aturan pengalihan dapat disalahgunakan untuk memasukkan link afiliasi tanpa persetujuan.

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

Namun, developer dari ekstensi termasuk AdGuard dan Adblock Plus melakukan analisis mereka sendiri dan membagikan data mereka. Dengan batas yang lebih tinggi, developer yang memiliki jumlah daftar kustom yang lebih banyak dapat 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 melihat hal ini sebagai tantangan yang signifikan saat memigrasikan ekstensinya ke Manifest V3 dan kami mendengar masukan serupa dari pemblokir konten lainnya.

Kami memutuskan bahwa beberapa aturan filter, seperti aturan dengan tindakan block atau allow, lebih aman dan cenderung tidak disalahgunakan. Aturan tersebut juga merupakan mayoritas aturan filter pemblokiran iklan. Berdasarkan hal ini, saya membuat draf dan membagikan proposal di Grup Komunitas Ekstensi Web untuk menentukan sekumpulan aturan yang kami anggap berisiko lebih rendah dan mengizinkan hingga 30.000 aturan tersebut. Kami tetap mempertahankan batas atas untuk menghindari regresi performa.

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

Berdasarkan data yang dibagikan oleh AdGuard, antara 98 hingga 99 persen aturan mereka akan mendapatkan manfaat dari batas yang lebih tinggi ini. Aturan lainnya tetap didukung dan dapat ditambahkan sesuai batas yang ada.

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

Ukuran kumpulan aturan yang dikurangi

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 mengetahui bahwa sebagian besar developer memiliki default yang berbeda dalam ekstensi mereka. Akibatnya, nilai harus ditetapkan berkali-kali. Dengan melakukan perubahan ini, developer dapat mencapai pengurangan ukuran yang signifikan pada kumpulan aturan mereka.

Langkah berikutnya?

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

Kami akan terus meninjau batasan yang kami miliki untuk melakukan penyesuaian jika diperlukan. Untuk mendukung hal ini, kami berencana untuk membagikan beberapa data yang telah 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 kami lihat di ekstensi penampil PDF. Dalam semua kasus, kami akan terus menyampaikan hasil kerja kami, dan menggunakan Grup Komunitas Ekstensi Web secara rutin sebagai tempat untuk mendiskusikan ide dan menyelaraskan ide yang ingin kami lihat selanjutnya.