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 :
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) |
C'est ainsi que cela a fonctionné pendant des années, mais les navigateurs ont progressivement réduit les informations exposées par le User Agent.
Les navigateurs Chromium (Chrome, Edge, Brave, Opera, Chrome Android, etc.) ont ouvert la voie dans ce processus. Chrome a achevé la réduction de son User Agent : la chaîne est désormais figée dans un format fixe et générique qui n'expose plus la version mineure du navigateur, la version de l'OS ni le modèle de l'appareil. Sur mobile, par exemple, Chrome renvoie un Android 10; K générique, quel que soit l'appareil réel.
En résumé, nous traitons toujours les User Agents, mais sur les navigateurs Chromium, cette chaîne est devenue beaucoup moins précise. Elle n'a pas disparu — elle a été réduite — de sorte qu'une alternative plus fiable est nécessaire pour une détection détaillée des appareils.
L'alternative au User Agent existe déjà : les 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 :
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 (à l'exception de la version de l'OS).
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, ce qui permet une meilleure gestion des données des utilisateurs finaux.
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 :
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.
Client Hints et détection des appareils
Notre système de détection des appareils utilise l'API de notre partenaire de détection avec la prise en charge des Client Hints (déployée le 28 février 2023). Les low-entropy Client Hints sont utilisés automatiquement ; pour les high-entropy Client Hints, vous devrez peut-être effectuer l'une des actions décrites ci-dessous.
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, et sont automatiquement pris en compte par notre détection des appareils.
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 contiennent 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 :
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/
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:
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 Mobilebrowser name has been changed toChrometo be consistent with Google's naming policy.
-
-
macOS & iOS osVersion
-
Now converts the osVersion to have dot-notation so the example
10_5_7becomes10.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
browserVendorandbrowserNameproperties instead.
-
-
Android Browser
-
Previously, the API returned the browser name
Android Browserfor some app WebView and Set Top box User-Agents. The API now returnsChromeinstead. -
Previously, the API returned the browser name
Android Browserfor some Amazon devices running the Silk browser. The API now returnsAmazon Silkinstead
-
-
HuaweiBrowser
-
The Huawei browser naming has changed from
HuaweiBrowsertoHuawei 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 XandmacOSwill 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.
-