Meningkatkan pemfilteran konten di Manifes V3

Selama setahun terakhir, kami telah secara aktif terlibat dalam diskusi dengan vendor di balik beberapa ekstensi pemblokiran konten terkait cara meningkatkan platform ekstensi MV3. Berdasarkan diskusi ini, yang sebagian besar berlangsung di WebExtensions Community Group (WECG) dalam kolaborasi dengan browser lain, kami dapat mengirimkan 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, sedangkan daftar yang lebih spesifik dapat menyembunyikan konten khusus lokasi yang hanya ingin diblokir oleh sebagian pengguna. Hingga baru-baru ini, kami mengizinkan setiap ekstensi untuk menawarkan pilihan 50 daftar (atau "set aturan statis") kepada pengguna, dan 10 daftar tersebut dapat diaktifkan secara bersamaan. Dalam diskusi dengan komunitas, developer ekstensi memberikan bukti meyakinkan yang menunjukkan bahwa batas ini terlalu rendah untuk kasus penggunaan tertentu. Setelah melihat performa API di Chrome dengan mempertimbangkan diskusi ini, kini kami mengizinkan hingga 50 API diaktifkan secara bersamaan. (Perlu diperhatikan bahwa jumlah ini jauh lebih tinggi daripada batas 20 yang diminta di WECG.) Kami juga mengizinkan total 100 kumpulan aturan. Fitur ini dikirimkan di Chrome 120 dan peningkatan batas didukung oleh Firefox dan Safari yang keduanya memberikan input awal tentang proposal ini.

Aturan yang lebih dinamis

Sebagian besar aturan bersifat "statis" dan dikirimkan dengan 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 developernya mengupload versi baru ekstensi ke Chrome Web Store.

Jika ekstensi dapat mengubah permintaan secara dinamis dengan cara yang tidak 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 secara hemat dan memudahkan kami mendeteksi penyalahgunaan.

Namun, developer dari ekstensi termasuk AdGuard dan Adblock Plus melakukan analisis mereka sendiri dan membagikan data bahwa batas yang lebih tinggi akan memungkinkan aturan yang lebih baru dan bagi pengguna dengan jumlah daftar kustom yang lebih tinggi untuk bermigrasi ke Manifest V3. Faktanya, AdGuard melaporkan bahwa lebih dari 2.600 perubahan dilakukan pada daftar populer setiap minggu, 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 dalamnya (sumber). AdGuard mencatat hal ini sebagai tantangan signifikan untuk memigrasikan ekstensi mereka 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, jauh lebih aman dan cenderung tidak disalahgunakan. Aturan ini juga merupakan sebagian besar aturan filter pemblokir iklan. Berdasarkan hal ini, saya membuat draf dan membagikan proposal di Grup Komunitas Ekstensi Web untuk menentukan serangkaian aturan yang kami anggap berisiko lebih rendah dan mengizinkan hingga 30.000 ekstensi tersebut. Kami tetap mempertahankan batas atas untuk menghindari regresi performa.

Proposal ini didukung di Grup Komunitas Ekstensi Web sehingga kami menerapkannya. Mulai Chrome 121, batas yang lebih tinggi yaitu 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 dan 99 persen aturannya akan mendapatkan manfaat dari batas yang lebih tinggi ini. Aturan yang tersisa masih didukung dan dapat ditambahkan dalam batas yang ada.

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

Mengurangi 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 setelan default yang berbeda di ekstensi mereka. Akibatnya, nilai harus ditetapkan berulang kali. Dengan melakukan perubahan ini, developer dapat mencapai pengurangan ukuran yang signifikan pada kumpulan aturan mereka.

Apa selanjutnya?

Kami berkomitmen untuk terus berinvestasi dalam declarativeNetRequest 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 data dalam jumlah yang signifikan yang mendorong pekerjaan ini, dan semua vendor browser yang telah menjadi bagian utama dalam mendesain API ini.

Kami akan terus meninjau batas yang kami terapkan untuk melakukan penyesuaian jika diperlukan. Untuk mendukung hal ini, kami berencana membagikan beberapa data yang kami kumpulkan sebagai bagian dari pekerjaan 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 dari ekstensi penampil PDF. Dalam semua kasus, kami akan terus menyampaikan pekerjaan kami, dan menggunakan Grup Komunitas Ekstensi Web secara rutin sebagai tempat untuk mendiskusikan ide dan menyelaraskan hal yang ingin kami pelajari selanjutnya.