L’un des changements les plus controversés est la suppression de l’API WebRequest, qui permet aux extensions de modifier les requêtes réseau à la volée. Cette API est utilisée par les extensions de blocage de publicités et de protection de la vie privée, qui peuvent créer des listes de sites web (serveurs publicitaires) à bloquer ou à filtrer. Google veut remplacer cette API par une nouvelle API, appelée declarativeNetRequest, qui permet aux extensions de déclarer un ensemble de règles : des motifs pour faire correspondre les requêtes et des actions à effectuer lorsqu’elles sont correspondantes.
Le problème de cette nouvelle API est qu’elle limite le nombre de règles à 30 000, alors qu’une installation typique de uBlock Origin comporte 300 000 règles de filtrage dynamiques. De plus, cette API ne permet pas aux extensions de modifier les en-têtes ou les corps des requêtes, ce qui réduit leur capacité à empêcher le pistage ou à contourner les mesures anti-blocage.
Google affirme que ces changements visent à améliorer la confidentialité, la sécurité et les performances des extensions, en réduisant le risque d’abus ou de détournement des données des utilisateurs, et en évitant que les extensions ne ralentissent le navigateur ou ne consomment trop de ressources. Cependant, de nombreux développeurs et utilisateurs soupçonnent que Google ait d’autres motivations, notamment protéger ses revenus publicitaires et renforcer son contrôle sur le Web.
Le « tueur de bloqueurs de publicités »
Manifest V3 a été rapidement surnommé « le tueur de bloqueurs de publicités » et il a fait l’objet d’une forte opposition tant de la part des développeurs que des utilisateurs finaux. Plusieurs pétitions ont été lancées pour demander à Google de revenir sur sa décision ou de modifier son API pour préserver les fonctionnalités des extensions existantes.
Par exemple, l'Electronic Frontier Foundation, un défenseur des droits numériques, s'est insurgé contre son utilisation : « Méfiez-vous des utilisateurs de Chrome : Manifest V3 est trompeur et menaçant ». « Si l’on en croit Google, Manifest V3 améliorera la protection de la vie privée, la sécurité et les performances. Nous ne sommes absolument pas d’accord. Ces changements n’arrêteront pas les extensions malveillantes, mais ralentiront l’innovation, réduiront les capacités des extensions et heurteront les performances réelles ».
Pour l'EFF : « Manifest V3, ou Mv3 en abrégé, est carrément nuisible aux efforts de confidentialité. Cela limitera les capacités des extensions Web, en particulier celles conçues pour surveiller, modifier et calculer parallèlement à la conversation de votre navigateur avec les sites Web que vous visitez. Selon les nouvelles spécifications, des extensions comme celles-ci – comme certains bloqueurs de suivi de la vie privée – auront des capacités considérablement réduites. Les efforts de Google pour limiter cet accès sont préoccupants, d'autant plus que Google a installé des traceurs sur 75% du million de sites Web les plus importants ».
Certains navigateurs concurrents, comme Brave ou Vivaldi, ont déclaré qu’ils ne suivraient pas Google dans cette voie et qu’ils continueraient à supporter l’API WebRequest. Firefox, de son côté, a opté pour une approche hybride.
L'approche hybride de Firefox
Bien que Firefox ne soit pas basé sur Chromium, le support du Manifest est un élément important, car il simplifie le travail des développeurs d’extensions : un module créé sur Chrome (ou l’un de ses dérivés basé sur Chromium comme Microsoft Edge) est facilement transposable à Firefox, une grande partie du socle étant identique. Mais face à cette version 3, Mozilla fait les choses à sa manière.
Mozilla a prévenu que même si le Manifest V3 sera supporté en intégralité, l’API Web Request sera préservée. La direction prise par l'équipe est donc hybride, avec à la fois la possibilité de récupérer la nouvelle génération d’extensions, tout en préservant Web Request et les capacités qui vont avec. Une version amendée du Manifest V3, en quelque sorte.
« L'un des changements les plus controversés de l'approche MV3 de Chrome est la suppression du blocage de WebRequest, qui offre un niveau de puissance et de flexibilité essentiel pour activer les fonctionnalités avancées de confidentialité et de blocage de contenu. Malheureusement, ce pouvoir a également été utilisé pour nuire aux utilisateurs de diverses manières. La solution de Chrome dans MV3 consistait à définir une API de portée plus étroite (declarativeNetRequest) en remplacement. Cependant, cela limitera les capacités de certains types d'extensions de confidentialité sans remplacement adéquat.
« Mozilla maintiendra la prise en charge du blocage de WebRequest dans MV3. Pour maximiser la compatibilité avec d'autres navigateurs, nous fournirons également un support pour declarativeNetRequest. Nous continuerons à travailler avec les bloqueurs de contenu et d'autres consommateurs clés de cette API pour identifier les alternatives actuelles et futures, le cas échéant. Le blocage de contenu est l'un des cas d'utilisation les plus importants pour les extensions, et nous nous engageons à faire en sorte que les utilisateurs de Firefox aient accès aux meilleurs outils de confidentialité disponibles ».
Firefox 109 a inauguré l'activation par défaut de Manifest V3 de Chrome pour les développeurs
L'évolution de la position de Google dans le temps
En novembre 2019, Google a commencé à tester Manifest V3, l'interface de programmation derrière les plans de sécurité Chrome. Le code suivant montre les champs Manifest pris en charge pour les extensions, avec des liens vers la page décrivant chaque champ.
Code JavaScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | { // Required "manifest_version": 2, "name": "My Extension", "version": "versionString", // Recommended "default_locale": "en", "description": "A plain text description", "icons": {...}, // Pick one (or none) "browser_action": {...}, "page_action": {...}, // Optional "action": ..., "author": ..., "automation": ..., "background": { // Recommended "persistent": false, // Optional "service_worker": }, "chrome_settings_overrides": {...}, "chrome_ui_overrides": { "bookmarks_ui": { "remove_bookmark_shortcut": true, "remove_button": true } }, "chrome_url_overrides": {...}, "commands": {...}, "content_capabilities": ..., "content_scripts": [{...}], "content_security_policy": "policyString", "converted_from_user_script": ..., "current_locale": ..., "declarative_net_request": ..., "devtools_page": "devtools.html", "event_rules": [{...}], "externally_connectable": { "matches": ["*://*.example.com/*"] }, "file_browser_handlers": [...], "file_system_provider_capabilities": { "configurable": true, "multiple_mounts": true, "source": "network" }, "homepage_url": "http://path/to/homepage", "import": [{"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}], "incognito": "spanning, split, or not_allowed", "input_components": ..., "key": "publicKey", "minimum_chrome_version": "versionString", "nacl_modules": [...], "oauth2": ..., "offline_enabled": true, "omnibox": { "keyword": "aString" }, "optional_permissions": ["tabs"], "options_page": "options.html", "options_ui": { "chrome_style": true, "page": "options.html" }, "permissions": ["tabs"], "platforms": ..., "replacement_web_app": ..., "requirements": {...}, "sandbox": [...], "short_name": "Short Name", "signature": ..., "spellcheck": ..., "storage": { "managed_schema": "schema.json" }, "system_indicator": ..., "tts_engine": {...}, "update_url": "http://path/to/updateInfo.xml", "version_name": "aString", "web_accessible_resources": [...] } |
En novembre 2020, Google a indiqué que « Manifest V3 représente l'un des plus grands changements dans la plateforme d'extensions depuis son lancement dix ans auparavant. Les extensions utilisant MV3 bénéficieront d'améliorations en matière de sécurité, de confidentialité et de performances; elles peuvent également utiliser des technologies Open Web plus contemporaines adoptées dans MV3, telles que les Services Workers et les Promises. Les développeurs peuvent mettre à jour leurs extensions dès aujourd'hui pour profiter de ces fonctionnalités MV3; cela deviendra obligatoire au fur et à mesure que nous éliminerons MV2 à l'avenir ».
Les extensions peuvent modifier le comportement de Chrome grâce aux capacités que Manifest v3 expose. Entre autres choses, Manifest v3 limite le nombre de « règles » que les extensions peuvent appliquer à une page Web lors de son chargement. Des règles sont utilisées, par exemple, pour vérifier si un élément de site Web provient du serveur d'un annonceur et doit donc être bloqué. Google a annoncé les changements en 2018.
Fin 2022, Google a indiqué qu'il allait retardé la transition de sa plateforme d'extension de navigateur pour les clients d'entreprise, offrant à ceux qui utilisent des versions gérées de Chrome avec les extensions obsolètes Manifest v2 (MV2) six mois supplémentaires de support. Google a également redéfini ses délais pour les utilisateurs généraux de Chrome afin de faire que la transition vers Manifest V3 représente un moindre choc : en d'autres termes, les développeurs ont besoin de plus de temps pour réécrire leur code d'extension.
L'entreprise a indiqué que ce temps allait être mis à profit afin de répondre aux commentaires des développeurs et de proposer de meilleures solutions aux problèmes de migration. Cela semble désormais chose faite, puisque Google affirme :
Envoyé par Google
En plus de combler les lacunes, nous avons également ajouté de nouvelles fonctionnalités à la plate-forme, telles que l'API Side Panel, livrée plus tôt cette année, et l'API Reading List, actuellement en version bêta. Nous avons récemment discuté de bon nombre de ces changements lors du Ad-Filtering Dev Summit et avons partagé davantage de contexte sur les changements et les améliorations que nous avons apportés en fonction des commentaires.
Avec ces changements en place, nous avons constaté une augmentation significative de la prise en charge de Manifest V3 au sein de la communauté des développeurs d’extensions. Plus précisément, nous sommes encouragés par notre dialogue continu avec les développeurs d’extensions de blocage de contenu, qui pensaient initialement que Manifest V3 pourrait avoir un impact sur leur capacité à fournir aux utilisateurs les fonctionnalités auxquelles ils s’attendent.
Avec ces changements en place, nous avons constaté une augmentation significative de la prise en charge de Manifest V3 au sein de la communauté des développeurs d’extensions. Plus précisément, nous sommes encouragés par notre dialogue continu avec les développeurs d’extensions de blocage de contenu, qui pensaient initialement que Manifest V3 pourrait avoir un impact sur leur capacité à fournir aux utilisateurs les fonctionnalités auxquelles ils s’attendent.
Source : Google
Et vous ?
Que pensez-vous de la décision de Google de supprimer l’API WebRequest et de la remplacer par l’API declarativeNetRequest ?
Pensez-vous que Google a raison lorsqu'il prétend privilégier la confidentialité, la sécurité et les performances des extensions, ou alors qu’il cherche juste à protéger ses intérêts publicitaires ?
Utilisez-vous des extensions de blocage de publicités ou de protection de la vie privée ? Si oui, lesquelles et pourquoi ?
Craignez-vous que Manifest V3 réduise la diversité et la créativité des extensions Chrome ?
Préférez-vous utiliser un autre navigateur qui continue à supporter l’API WebRequest ? Si oui, lequel et pourquoi ?