Les chaînes UA ont été développées dans le cadre du navigateur Netscape dans les années 90 et sont utilisées depuis. Pendant des décennies, les sites Web ont utilisé des chaînes UA pour affiner les fonctionnalités en fonction des spécifications techniques d'un visiteur. Cependant, Google note que ce mécanisme autrefois utile est devenu une source constante de problèmes sur différents fronts. Les chaînes UA ont été utilisées par les annonceurs en ligne comme moyen de pister et de faire du fingerprinting des visiteurs d'un site Web.
Les motivations de Google
Google a annoncé son intention de geler et unifier (mais pas de supprimer) la chaîne de l'agent utilisateur dans les requêtes HTTP ainsi que dans `navigator.userAgent`de Chrome. L'éditeur explique ce qui l'a motivé en ces termes :
La chaîne User-Agent est une source abondante d'informations de fingerprinting passives sur nos utilisateurs. Il contient de nombreux détails sur le navigateur et l'appareil de l'utilisateur ainsi que de nombreux mensonges ("Mozilla/5.0", quelqu'un s'en souvient ?) qui étaient ou sont nécessaires à des fins de compatibilité, tandis que les serveurs dépendaient du reniflement de l'agent utilisateur.
En plus de ces problèmes de confidentialité, le reniflement d'agent utilisateur est une source abondante de problèmes de compatibilité, en particulier pour les navigateurs minoritaires, ce qui fait que les navigateurs se mentent à eux-mêmes (généralement ou à des sites spécifiques) et que des sites (y compris les propriétés Google) plantent dans certains navigateurs sans raison valable.
L'abus ci-dessus rend souhaitable de geler la chaîne UA (User Agent) et de la remplacer par un meilleur mécanisme. Il y a eu des tentatives de gel de chaînes UA de la part de l'équipe Safari, mais sans autre moyen d'effectuer une négociation de contenu basée sur UA, elles ont dû être partiellement annulées.
L'alternative
La fonction User Agent Client Hints (UA-CH) fournit une autre source pour les informations fournies par la chaîne User-Agent, à la fois sous sa forme d'en-tête de demande et dans son API JS. Ses principaux avantages sont:
- Elle fournit les informations requises uniquement lorsque le serveur le demande, via des connexions sécurisées, ce qui fait que tout fingerprinting qui en dépend devient un fingerprinting actif, ce qui permet à une telle utilisation d'être auditée et au navigateur d'agir en conséquence.
- Elle fournit les informations par petits incréments, de sorte que les serveurs ne sont exposés qu'aux informations qu'ils demandent et dont ils ont besoin, plutôt que d'être exposés à la gamme complète de la chaîne UA, même s'ils essaient simplement de comprendre un détail sur le navigateur. (par exemple, nom du navigateur et numéro de version).
- Puisqu'elle fournit les informations via des champs dédiés, elle permet une meilleure ergonomie et rend moins probable que les serveurs se trompent et causent des problèmes de compatibilité.
- Et enfin, un nouveau départ nous permettra de supprimer une grande partie des bagages hérités que la chaîne UA transporte ((“Mozilla/5.0”, “like Gecko”, “like KHTML”, etc.) à l'avenir.
Le mécanisme Client Hints a été développé dans le cadre du projet Google Privacy Sandbox, annoncé en août dernier. La pile technologique Privacy Sandbox vise à fournir aux sites Web et aux annonceurs un moyen de demander aux navigateurs des informations sur les utilisateurs de manière à ce que les navigateurs n'exposent pas trop d'informations sur les utilisateurs.
Grâce au Privacy Sandbox, les navigateurs partageront suffisamment d'informations sur les utilisateurs pour que les annonceurs puissent organiser les utilisateurs en groupes généraux, plutôt que de créer des profils individuels détaillés. Déprécier les chaînes UA au profit des Client Hints est l'une des premières étapes que Google prend pour mettre en œuvre le Privacy Sandbox dans Chrome, ce que Google a promis l'été dernier.
La feuille de route
L'objectif de Google est d'arrêter la mise à jour du composant UA de Chrome avec de nouvelles chaînes (le texte de la chaîne UA que Chrome partage avec les sites Web). L'objectif à long terme consiste à unifier toutes les chaînes Chrome UA en valeurs génériques qui ne révèlent pas trop d'informations sur un utilisateur.
Cela signifie que les nouvelles versions du navigateur Chrome sur de nouvelles plateformes telles que les nouveaux modèles de smartphones ou les nouvelles versions de système d'exploitation utiliseront une chaîne UA générique, plutôt qu'une chaîne personnalisée pour cette plateforme spécifique.
Par exemple, à l'avenir, un site Web ne pourra pas dire si un visiteur utilisant Chrome exécute Chrome sur Windows 7 ou Windows 11, ou si un utilisateur mobile Chrome utilise un téléphone Samsung Galaxy ou un Pixel 9. Les sites Web pourront dire qu'un utilisateur exécute Chrome, et s'il se trouve sur un ordinateur de bureau ou un appareil mobile, mais c'est à peu près tout.
À des fins héritées, les chaînes Chrome UA existantes continueront de fonctionner, de sorte qu'elles ne feront pas planter les technologies et scripts existants en cours d'exécution sur le Web.
Voici la feuille de route actuelle de Google pour amorcer la dépréciation de la chaîne UA:
- Chrome 81 (mi-mars 2020) - Google prévoit d'afficher des avertissements dans la console Chrome pour les pages Web qui lisent la chaîne UA, afin que les développeurs puissent ajuster le code de leur site Web.
- Chrome 83 (début juin 2020) - Google gèlera la version du navigateur Chrome dans la chaîne UA et unifiera les versions du système d'exploitation
- Chrome 85 (mi-septembre 2020) - Google unifiera la chaîne de système d'exploitation de bureau UA en tant que valeur courante pour les navigateurs desktop. Google va également unifier les chaînes OS / appareils mobiles en tant que valeur commune similaire.
Notons que, par le biais de Mike West, Google cherche à normaliser son User-Agent Client Hints ; un draft a été publié au sein de la communauté W3C. Apple (Safari), Microsoft (Edge) et Mozilla (Firefox) ont également exprimé leur soutien à la proposition de Google de geler et d'éliminer progressivement la chaîne d'agent utilisateur, mais n'ont pas encore annoncé de plans détaillés pour y parvenir.
Source : Google, Draft User-Agent Client Hints
Et vous ?
Que pensez-vous de cette décision de Google ?