Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Google prévoit de déprécier et bloquer la chaîne User-Agent sur Chrome pour la remplacer par une alternative
Qui fournira moins d'informations aux serveurs

Le , par Stéphane le calme

25PARTAGES

8  0 
Un user agent ou agent utilisateur est une application cliente utilisée avec un protocole réseau particulier ; l'expression est plus généralement employée comme référence pour celles qui accèdent au World Wide Web. Les agents utilisateur du Web vont de la gamme des navigateurs jusqu'aux robots d'indexation, en passant par les lecteurs d'écran ou les navigateurs braille pour les personnes ayant une incapacité. Quand un internaute visite une page Web, une chaîne de caractères est généralement envoyée au serveur pour identifier l'agent utilisateur. Elle est incluse dans la requête HTTP par l'en-tête « User-Agent » et elle donne des informations comme : le nom de l'application, la version, le système d'exploitation, la langue, etc.

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 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Daïmanu
Membre chevronné https://www.developpez.com
Le 16/01/2020 à 13:15
Si ce changement va enfin permettre de mettre de l'ordre et du format dans les user-agents aujourd'hui impossible à parser, et surtout de supprimer cette stupide idée, cette ignominie sans nom (pour rester poli) de préfixe Mozilla compatible présent dans TOUS les navigateurs, j'ai envie de dire qu'il était temps.

Ça n’emperchera pas le spoofing ni la triche, mais ça simplifiera grandement les choses pour les développeurs.
2  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 22/01/2020 à 12:00
Cela me fait penser à ce récent billet de blog de Vivaldi sur le sujet : User Agent Changes.

Pour faire simple, être basé sur Chromium ne suffit pas pour être à l'abri des problèmes de compatibilités rencontrés par les navigateurs n'ayant pas la même base que Google Chrome. Certains sites regardent tout simplement si c'est Google Chrome ou pas. Si ce n'est pas Google Chrome alors il peut y avoir des problèmes MÊME SI le navigateur est basé sur Chromium, ce qui est le cas de Vivaldi. Dans le cas là, le problème se résout simplement en envoyant simplement l'UA de Google Chrome au lieu de celui du navigateur. Il y a Google Chrome et les autres même parmi les navigateurs basés sur Chromium, ce qui est triste et regrettable. Pour info Vivaldi a finalement décidé que leur navigateur enverra désormais l'UA de Google Chrome sauf en de rares exceptions, quitte à ce que cela plombe le navigateur dans les classements de PdM des navigateurs. C'est moins coûteux que de maintenir une liste noire de sites discriminants.

Je parle ici de Vivaldi, mais je pense que le problème doit être le même pour Opera et pour la version de Microsoft Edge basée sur Chromium.

Le rapport entre ceci et l'UA-CH est que l'UA-CH ne résoudra pas ces problèmes de discrimination là, qui à mon avis sont bien plus graves que des joyeusetés comme "Mozilla/5.0". On aura toujours les if ( isGoogleChrome() ) { /* ... */ } else { /* ... */ } au lieu de if ( isPoweredByChromium() ) { /* ... */ } else { /* ... */ }.
0  0 
Avatar de sevyc64
Modérateur https://www.developpez.com
Le 31/01/2020 à 18:36
Citation Envoyé par air-dex Voir le message
Certains sites regardent tout simplement si c'est Google Chrome ou pas. Si ce n'est pas Google Chrome alors il peut y avoir des problèmes MÊME SI le navigateur est basé sur Chromium, ce qui est le cas de Vivaldi. Dans le cas là, le problème se résout simplement en envoyant simplement l'UA de Google Chrome au lieu de celui du navigateur. Il y a Google Chrome et les autres ....
Rien de neuf sous le soleil !
Il y a 15 ans de ça c'était déjà la même chose avec IE à la place de Chrome. Tous les navigateurs se faisait passer pour IE, y compris Chrome au début de son existence.
0  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 08/02/2020 à 12:43
Citation Envoyé par sevyc64 Voir le message
Rien de neuf sous le soleil !
Il y a 15 ans de ça c'était déjà la même chose avec IE à la place de Chrome. Tous les navigateurs se faisait passer pour IE, y compris Chrome au début de son existence.
À ceci près que là tout le monde a la même base Chromium-Blink-V8 donc techniquement il n'y a pas (plus) besoin de cela.
0  0