Comme tous ses homologues, Adguard est sur la sellette avec la fin de la prise en charge du Manifest V2. © Naïm Bada pour Clubic
Comme tous ses homologues, Adguard est sur la sellette avec la fin de la prise en charge du Manifest V2. © Naïm Bada pour Clubic

Alors que la mise en branle des plans de Google sonne le glas de l'ancien Manifest V2 sur Chrome et les navigateurs basés sur Chromium comme Edge, il est temps de faire le point sur les implications réelles de ce changement. Les bloqueurs de pub sont-ils condamnés à perdre en efficacité, comme on a pu le craindre ?

Le Manifest V3, la dernière révision en date des spécifications techniques régissant le développement des extensions Chrome, a fait couler beaucoup d'encre depuis son annonce en 2018. En cause, les changements drastiques apportés à l'API permettant aux extensions d'interagir avec les requêtes réseau, pierre angulaire du fonctionnement des bloqueurs de publicité. Google a justifié cette évolution par des impératifs de performance et de sécurité, mais cela n'a pas suffi à apaiser les inquiétudes de la communauté des développeurs et des utilisateurs attachés à une navigation sans publicité.

Manifest V3 : de quoi parle-t-on exactement ?

Le Manifest V3 est la dernière version des spécifications définissant les capacités et le fonctionnement des extensions Chrome. Google travaille sur cette mise à jour majeure depuis 2018 dans le but affiché de renforcer la sécurité, la confidentialité et les performances, en limitant certaines possibilités jugées trop intrusives ou gourmandes en ressources. Parmi les changements introduits, c'est la refonte de l'API permettant d'intercepter et de modifier les requêtes réseau qui a cristallisé le plus d'opposition. Cette API WebRequest, utilisée par la quasi-totalité des bloqueurs de publicité, est en effet remplacée par une nouvelle API declarativeNetRequest au périmètre plus restreint. Là où l'ancienne API permettait d'inspecter le détail de chaque requête et de la modifier à la volée via du code JavaScript, la nouvelle se veut « déclarative ». Concrètement, l'extension doit fournir à l'avance au navigateur un ensemble de règles de filtrage qui seront appliquées automatiquement sans pouvoir être modifiées dynamiquement.

Le premier effet de ce changement est de limiter drastiquement le nombre de règles de filtrage qu'une extension peut spécifier. Là où certains bloqueurs de publicité s'appuyaient sur des dizaines de milliers de règles dynamiques avec l'API WebRequest, l'API declarativeNetRequest plafonne ce nombre à 30 000 règles statiques au maximum. De quoi compromettre la finesse et la réactivité du filtrage publicitaire, à l'heure où les techniques d'affichage des publicités se font de plus en plus complexes et changeantes. Le second point de friction est l'impossibilité d'analyser précisément le contenu des requêtes réseau et d'y appliquer des modifications à la volée. Cela limite les possibilités de détection et de contournement des mécanismes de protection des publicités. Certains bloqueurs avancés s'appuyaient par exemple sur l'inspection des feuilles de style CSS pour repérer et masquer les éléments publicitaires. Une technique qui ne sera plus possible avec la nouvelle API.

Comment fonctionne un bloqueur de pub

Pour comprendre en quoi le Manifest V3 peut impacter les bloqueurs de publicité, il faut d'abord revenir sur leur fonctionnement. Un bloqueur de pub s'appuie sur des listes de filtres qui recensent les éléments publicitaires à bloquer sur les pages web. Ces listes contiennent des règles de filtrage sous forme d'expressions régulières qui permettent de reconnaître les URL des serveurs publicitaires et les sélecteurs CSS des emplacements de publicité. Lorsqu'une page web est chargée, l'extension de blocage publicitaire compare les requêtes réseau émises et le contenu de la page avec ses listes de filtres. Quand une correspondance est détectée, la requête est bloquée ou l'élément graphique est masqué, empêchant ainsi l'affichage de la publicité. L'efficacité du blocage dépend donc de l'exhaustivité des listes de filtres et de leur mise à jour fréquente pour suivre l'évolution des techniques publicitaires.

Avec l'API WebRequest, les bloqueurs de pub pouvaient jusqu'à présent appliquer des dizaines de milliers de règles de filtrage dynamiques et les mettre à jour à la volée. Ils pouvaient aussi analyser finement le contenu des requêtes et de la page pour contrer les mécanismes de protection des publicités. C'est précisément ce que le Manifest V3 vient limiter en imposant des règles statiques en nombre réduit et en restreignant l'accès au détail des requêtes. De quoi faire craindre une baisse de réactivité et d'efficacité du blocage publicitaire à terme.

Face au défi, les développeurs s'adaptent

Malgré les restrictions imposées par le Manifest V3, les développeurs d'extensions de blocage publicitaire ne sont pas restés les bras croisés. Ils ont cherché des moyens de contourner les limitations pour maintenir un niveau de filtrage satisfaisant. Parmi les approches les plus intéressantes, on peut citer celle d'AdGuard, un acteur majeur du secteur.

L'approche d'Adguard : optimiser l'utilisation des règles statiques et dynamiques

AdGuard a travaillé à une refonte de son moteur de filtrage pour l'adapter aux contraintes du Manifest V3. L'idée est d'optimiser l'utilisation du quota de 30 000 règles statiques imposé par la nouvelle API declarativeNetRequest. Pour cela, les développeurs ont mis au point un algorithme qui répartit intelligemment les filtres entre règles statiques et dynamiques. Les règles de filtrage les plus génériques et stables dans le temps, comme celles ciblant les principaux serveurs publicitaires, sont intégrées dans le quota de règles statiques. Les règles plus spécifiques et changeantes, comme celles visant des éléments précis sur une page, sont gérées dynamiquement par le code de l'extension. Cela permet de maximiser le nombre de règles actives sans dépasser la limite fixée.

Adguard teste actuellement son nouveau bloqueur de publicité. © Naïm Bada pour Clubic
Adguard teste actuellement son nouveau bloqueur de publicité. © Naïm Bada pour Clubic

D'autres solutions à l'étude

D'autres développeurs de bloqueurs de pub explorent des pistes similaires pour maintenir la qualité de filtrage sous Manifest V3. uBlock Origin travaille par exemple sur un nouveau moteur de filtrage déclaratif qui optimiserait l'utilisation des règles statiques. Certains envisagent aussi de s'appuyer davantage sur le filtrage côté serveur, en amont du navigateur, pour compenser les limitations côté extension. L'idée serait de faire transiter les requêtes Web par un serveur proxy appliquant des règles de blocage avant de les renvoyer au navigateur. Une approche qui pose cependant des questions de confidentialité et de performance.

Malgré les défis posés par le Manifest V3, les développeurs de bloqueurs de pub font donc preuve d'ingéniosité pour maintenir la qualité de leurs solutions. S'il est probable que les extensions de blocage perdent un peu en flexibilité et en réactivité par rapport à l'ancien modèle, elles devraient rester globalement efficaces grâce à ces optimisations.

Repousser l'échéance sur Chrome et Edge

Bien que Google ait entamé l'arrêt du support des extensions Manifest V2 sur Chrome depuis le début de l'été, il existe un moyen pour les utilisateurs de repousser cette échéance d'un an, jusqu'en juin 2025 dans certains cas. Cette astuce, initialement prévue pour les utilisateurs Entreprise, peut en fait être activée par n'importe quel utilisateur de Chrome ou d'un navigateur basé sur Chromium comme Edge. Il s'agit d'activer un paramètre caché nommé ExtensionManifestV2Availability via l'éditeur de registre de Windows ou une commande sur macOS. Cela a pour effet de prolonger la compatibilité du navigateur avec les extensions utilisant encore l'ancien format de manifeste, comme certains bloqueurs de publicité populaires.

La manipulation dans l'éditeur de registre Windows

Voici la procédure à suivre sous Windows, qui nécessite de modifier une clé de registre :

  1. Ouvrir l'éditeur de registre
  2. Naviguer jusqu'à Computer, puis HKEY_LOCAL_MACHINE, SOFTWARE, Policies, Google, Chrome
  3. Créer une nouvelle valeur DWORD 32 bits nommée ExtensionManifestV2Availability
  4. Modifier cette valeur et lui donner la valeur hexadécimale 2
Redémarrer Chrome ou Edge pour appliquer le changement. © Naïm Bada pour Clubic

L'équivalent sur macOS avec la commande defaults

Sous macOS, une simple commande dans le terminal permet d'obtenir le même résultat :

defaults write com.google.Chrome.plist ExtensionManifestV2Availability -int 2

Il faut là aussi redémarrer le navigateur pour que le changement soit pris en compte. © Naïm Bada pour Clubic

Grâce à cette parade, les utilisateurs attachés à leurs extensions Manifest V2, en particulier les bloqueurs de pub, peuvent donc gagner un peu de temps. Mais à terme, la migration vers des extensions compatibles V3 sera inévitable pour continuer à utiliser Chrome, Edge et les autres navigateurs basés sur Chromium. D'ici là, les développeurs auront peut-être réussi à atténuer l'impact des limitations imposées par cette nouvelle version.

Adblock Plus
  • Extension open source.
  • Blocage des pubs et des traqueurs.
  • Outil simple d'utilisation.
Adguard AdBlocker
uBlock Origin
  • Accélère la navigation sur le web en bloquant les publicités
  • Peu gourmand en ressources matérielles
  • Entièrement gratuit