Amélioration du filtrage de contenu dans Manifest V3

Au cours de l'année écoulée, nous avons activement discuté avec les fournisseurs de plusieurs extensions de blocage de contenu sur les moyens d'améliorer la plate-forme d'extensions MV3. Sur la base de ces discussions, dont la plupart ont eu lieu dans le groupe de la communauté WebExtensions (WECG) en collaboration avec d'autres navigateurs, nous avons pu apporter des améliorations significatives.

Autres jeux de règles statiques

Les ensembles de règles de filtrage sont généralement regroupés dans des listes. Par exemple, une liste plus générique peut contenir des règles applicables à tous les utilisateurs, tandis qu'une liste plus spécifique peut masquer du contenu spécifique à une zone géographique que seuls certains utilisateurs souhaitent bloquer. Jusqu'à récemment, chaque extension pouvait proposer aux utilisateurs un choix de 50 listes (ou "règles statiques"), et 10 d'entre elles pouvaient être activées simultanément. Lors de discussions avec la communauté, les développeurs d'extensions ont fourni des preuves convaincantes montrant que ce nombre était trop faible pour certains cas d'utilisation. Après avoir examiné les performances de l'API dans Chrome en tenant compte de ces discussions, nous autorisons désormais jusqu'à 50 activations simultanées. (Notez que ce nombre est nettement supérieur à la limite de 20 demandée dans le WECG.) Nous autorisons également 100 ensembles de règles au total. Cette fonctionnalité est disponible dans Chrome 120. Firefox et Safari, qui ont tous deux fourni des commentaires préliminaires sur cette proposition, sont tous deux favorables à l'augmentation des limites.

Autres règles dynamiques

La plupart des règles sont "statiques" et sont fournies avec chaque mise à jour d'une extension. Toutefois, pour prendre en charge des mises à jour plus fréquentes et des règles définies par l'utilisateur, les extensions peuvent également ajouter des règles de manière dynamique, sans que leurs développeurs aient à importer une nouvelle version de l'extension sur le Chrome Web Store.

Lorsqu'une extension peut modifier de manière dynamique les requêtes de manière non vérifiée lors de l'examen du Chrome Web Store, les utilisateurs sont exposés aux risques d'hameçonnage ou de vol de données. Par exemple, une règle de redirection peut être utilisée de manière abusive pour injecter des liens d'affiliation sans autorisation.

Par conséquent, nous n'autorisons les extensions qu'à ajouter jusqu'à 5 000 règles,ce qui encourage à utiliser cette fonctionnalité avec parcimonie et nous permet de détecter plus facilement les utilisations abusives.

Toutefois, les développeurs d'extensions telles que AdGuard et Adblock Plus ont effectué leur propre analyse et partagé des données indiquant qu'une limite plus élevée permettrait d'utiliser des règles plus à jour et de migrer vers le fichier manifeste V3 pour les utilisateurs disposant d'un plus grand nombre de listes personnalisées. En effet, AdGuard a indiqué que plus de 2 600 modifications étaient apportées aux listes populaires chaque semaine. Parmi les 5 % d'utilisateurs qui utilisent des listes de filtres personnalisées, un quart d'entre eux ont un total combiné de plus de 5 000 règles dynamiques (source). AdGuard a indiqué que cela représentait un défi important pour migrer son extension vers Manifest V3. Nous avons reçu des commentaires similaires d'autres bloqueurs de contenu.

Nous avons déterminé que certaines règles de filtrage, telles que celles avec une action block ou allow, sont beaucoup plus sûres et moins susceptibles d'être utilisées de manière abusive. Ils constituent également la grande majorité des règles de filtrage des annonces. Sur cette base, j'ai rédigé et partagé une proposition dans le groupe de la communauté des extensions Web afin de définir un ensemble de règles que nous considérons comme moins risquées et d'autoriser jusqu'à 30 000 extensions de ce type. Nous maintenons toujours une limite supérieure pour éviter les régressions de performances.

Cette proposition a été approuvée par le groupe de la communauté des extensions Web. Nous l'avons donc implémentée. À partir de Chrome 121, la limite supérieure de 30 000 règles s'applique aux règles de non-répondre sécurisées, que nous définissons comme des règles avec une action block, allow, allowAllRequests ou upgradeScheme.

D'après les données partagées par AdGuard, entre 98 et 99 % de ses règles devraient bénéficier de cette limite plus élevée. Les règles restantes sont toujours prises en charge et peuvent être ajoutées dans la limite existante.

Cette valeur est disponible dans Chrome sous la forme de la constante MAX_NUMBER_OF_DYNAMIC_RULES. La limite de règles pour toutes les autres règles de requêtes réseau dynamiques reste fixée à 5 000.

Réduction de la taille de l'ensemble de règles

Dans Chrome 118, nous avons modifié la valeur par défaut du champ isUrlFilterCaseSensitive pour la remplacer par false, en fonction des commentaires de la communauté. Ce champ contrôle si une règle qui filtre par URL est sensible à la casse. Nous avons constaté que la plupart des développeurs avaient un paramètre par défaut différent dans leur extension. Par conséquent, la valeur devait être définie plusieurs fois. Cette modification permet aux développeurs de réduire considérablement la taille de leurs règles.

Et ensuite ?

Nous nous engageons à continuer à investir dans l'API declarativeNetRequest afin de prendre en charge autant de cas d'utilisation que possible. Nous avons hâte de continuer à travailler avec la communauté. Nous tenons particulièrement à remercier les membres du WECG pour leur engagement, y compris AdGuard pour avoir partagé une quantité importante de données qui ont servi de base à ce travail, et tous les fournisseurs de navigateurs qui ont joué un rôle majeur dans la conception de cette API.

Nous continuerons de revoir les limites que nous avons mises en place pour les ajuster si nécessaire. Pour ce faire, nous prévoyons de partager prochainement certaines des données que nous avons collectées dans le cadre de ce travail. Nous travaillons également à l'ajout de fonctionnalités supplémentaires, comme la possibilité de faire correspondre des en-têtes de réponse, une demande courante de la part des extensions de lecteurs PDF. Dans tous les cas, nous continuerons de communiquer sur notre travail et utiliserons régulièrement le groupe de la communauté des extensions Web pour discuter de nos idées et nous mettre d'accord sur ce que nous aimerions examiner ensuite.