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) |
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 :
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 :
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 :
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 Mobile
browser name has been changed toChrome
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
becomes10.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
andbrowserName
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 returnsChrome
instead. -
Previously, the API returned the browser name
Android Browser
for some Amazon devices running the Silk browser. The API now returnsAmazon Silk
instead
-
-
HuaweiBrowser
-
The Huawei browser naming has changed from
HuaweiBrowser
toHuawei 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
andmacOS
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.
-