Skip to main content
Skip table of contents

Client Hints (dépréciation du User Agent)

Dans le monde en perpétuelle évolution des navigateurs, cet article a pour objectif d'expliciter le fonctionne de la détection des appareils de vos internautes et les moyens techniques nous permettant de récupérer l'information.

User Agents

Historiquement, la détection des informations techniques (OS, navigateur, modèle d'appareil mobile, ...) se base sur le User Agent, une chaîne de caractères communiquée par le navigateur via l'en-tête des requêtes HTTP :

CODE
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36

Piano Analytics récupère cette chaîne, la partage avec son partenaire de détection des appareils pour la traduire, afin que nous puissions vous fournir des informations précises sur les appareils utilisés par vos internautes.

Par exemple, le User Agent ci-dessus sera traduit en :

Browser

Browser Version

Operating System

OS Version

Google Chrome

107.0.0.0

Apple OS X

10.15.7 (Catalina)

Après des années de ce fonctionnement, certains navigateurs commencent à déprécier progressivement le User Agent.

À ce jour, les navigateurs Chromium (Chrome, Edge, Brave, Opera, Chrome Android, ...) sont à la pointe de ce processus. La dépréciation du User Agent a déjà commencé, et progressera en 2023.

En bref, nous continuerons à traiter les User Agents, mais sur certains navigateurs, ces informations deviendront moins précises, jusqu'à ce qu'elles finissent par disparaître.

L'alternative aux User Agents existe. Elle s'appelle : Client Hints.

Client Hints

Les Client Hints sont la nouvelle norme de détection d'appareil pour les navigateurs Chromium.

Ils possèdent les même information que le User Agent avant sa dépréciation, avec néanmoins deux avantages :

Avantages

Un nouveau format

Les informations sur les appareils contenues dans les Client Hints sont présentées dans un nouveau format beaucoup plus lisible et facile à manipuler que les User Agents :

CODE
sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"

Ces Client Hints donnent les mêmes informations que le User Agent de la partie plus haut (la version d'OS mis à part).

Un accès plus régulé à l'information

Les Client Hints ne sont pas tous accessibles par défaut. Certaines informations nécessitent une demande spécifique pour être utilisées, afin d'obtenir une meilleure gestion des données de l'utilisateur final.

Catégories de Client Hints

Les Client Hints sont divisés en deux catégories. Et ces deux catégories ne sont pas accessible de la même manière, de même qu'elles ne contiennent pas la même profondeur d'information.

Low-entropy Hints

Les Low-entropy Client Hints contiennent des informations basiques, bien que très utiles.

C'est ce que vous pouvez observer dans la section "Un nouveau format" plus haut, et détaillé ci-dessous:

Browser

Browser Version

Operating System

Google Chrome

107.0.0.0

Apple OS X

Elles correspondent aux propriétés de votre data model suivantes :

  • browser

  • browser_version

  • os

Ces propriétés sont disponibles par défaut, et sont envoyés sur chaque requêtes (events) que nous recevons (via le header de la requête). Exactement comme nous le faisions avec les User Agents !

High-entropy Hints

Les High-entropy Client Hints contiennent toutes les informations que vous pourriez obtenir concernant l'appareil d'un internaute :

CODE
Sec-CH-UA: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Full-Version: "107.0.5304.62"
Sec-CH-UA-Full-Version-List: "Google Chrome";v="107.0.5304.62", "Chromium";v="107.0.5304.62", "Not=A?Brand";v="24.0.0.0"
Sec-CH-UA-Platform: "macOS"
Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Arch: "arm"
Sec-CH-UA-Wow64: ?0
Sec-CH-UA-Bitness: "64"

Ces propriétés ne sont pas disponibles par défaut. Elles doivent faire l'objet d'une demande spécifique provenant du SDK javascript, ou du serveur.

Migrer vers les Clients Hints

Quand migrer ?

Le 28 février 2023, nous allons mettre à jour notre service de détection des appareils en utilisant la nouvelle API de notre partenaire de détection. Cela permettra de prendre en compte les Clients Hints.

Low-entropy Client Hints

Il n'y a rien à faire dans ce cas !

Les Low-entropy Client Hints sont accessibles et envoyés par défaut.

Comme expliqué plus haut, les Clients Hints seront utilisés dès la mise à jour de notre API le 28 février prochain.

Sans aucun effort, vous pourrez bénéficier de la meilleure détection d'appareil possible !

High-entropy Client Hints

Si vous voulez une détection plus exhaustive, se basant sur les high-entropy Client Hints, vous pouvez considérer trois options.

 

Utiliser les PA SDK

Les requêtes envoyées depuis notre SDK PA Javascript contiennet par défaut les high-entropy Client Hints. Vous pouvez vérifier cela en regardant les propriétés présentes dans les évenments collectés via Tag Inspector ou Stream Inspector.

Autrement dit, si vous avez déjà migré vers nos nouveaux SDKs il n'y a aucune opération à mettre en place de votre côté.

 

Utiliser la configuration de votre serveur

Vous pouvez configurer votre serveur de manière à ce que les requêtes envoyées vers certains domaines contiennent les High-Entropy Client Hints headers.

Vous devez pour cela autoriser 2 headers:

  • Accept-CH

  • Permissions-Policy

Nous vous encourageons fortement à autoriser les Client Hints suivants :

  • ch-ua

  • ch-ua-mobile

  • ch-ua-platform

  • ch-ua-arch

  • ch-ua-bitness

  • ch-ua-full-version-list

  • ch-ua-model

  • ch-ua-platform-version

Implémentation technique :

CODE
Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version

https://developer.chrome.com/docs/privacy-sandbox/permissions-policy/

CODE
Permissions-Policy: ch-ua=("https://collectiondomain"), ch-ua-mobile=("https://collectiondomain"), ch-ua-platform=("https://collectiondomain"), ch-ua-arch=("https://collectiondomain"), ch-ua-bitness=("https://collectiondomain"), ch-ua-full-version-list=("https://collectiondomain"), ch-ua-model=("https://collectiondomain"), ch-ua-platform-version=("https://collectiondomain")

Vous pouvez trouver votre domaines de collecte grâce à la documentation.

Utiliser les Meta Tags de la page HTML

Vous pouvez utiliser des balises meta spécifiques sur vos pages pour que les requêtes envoyées à certains domaines contiennent les High-Entropy Client Hints headers.

Implémentation technique:

CODE
https://collectiondomain; ch-ua-bitness https://collectiondomain; ch-ua-full-version-list https://collectiondomain; ch-ua-model https://collectiondomain; ch-ua-platform-version https://collectiondomain";>

 

Changement de valeur pour certains appareils

Cette mise à jour du service de détection des appareils, qui passe de User-Agent à Client Hints, s'accompagne de quelques changements :

  • Chrome Mobile

    • The Chrome Mobile browser name has been changed to Chrome to be consistent with Google's naming policy.

  • macOS & iOS osVersion

    • Now converts the osVersion to have dot-notation so the example 10_5_7 becomes 10.5.7.

  • Browser Vendor & Model

    • Previously, some desktop browsers set the device vendor and model to be the browser vendor and browser name if no device was identified. After the update, the API no longer has this behaviour. Please use the browserVendor and browserName properties instead.

  • Android Browser

    • Previously, the API returned the browser name Android Browser for some app WebView and Set Top box User-Agents. The API now returns Chrome instead.

    • Previously, the API returned the browser name Android Browser for some Amazon devices running the Silk browser. The API now returns Amazon Silk instead

  • HuaweiBrowser

    • The Huawei browser naming has changed from HuaweiBrowser to Huawei Browser.

  • macOS

    • The osName for the macOS family of operating systems has been updated to better reflect the correct naming for each version of macOS. The names Mac OS X, OS X and macOS will be returned depending on what osVersion is detected.

  • Linux

    • The osVersionName for Linux distros is not currently well populated and will improve over time.

  • isApp / appName

    • The current version of the data provided with the API has limited support for isApp and appName. Subsequent releases will correct this.

  • Other Properties

    • The new API has improved support for non-standard User-Agents. Differences may be observed compared to the previous version.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.