Détecter l Windows 11 et l’architecture du processeur à l’aide d’indicateurs de client User-Agent
Les sites web peuvent différencier les utilisateurs sur Windows 11 et Windows 10, et détecter l’architecture du processeur de l’appareil à l’aide de User-Agent indicateurs client (UA-CH). Le format User-Agent indicateurs client est utilisé par les navigateurs pour fournir des informations d’agent utilisateur aux sites web.
Les sites web peuvent également utiliser les informations de l’agent utilisateur envoyées à partir du navigateur pour détecter des informations telles que :
- Marque du navigateur.
- Numéro de version du navigateur.
- Plateforme de l’appareil sur laquelle le navigateur s’exécute.
Il existe deux approches pour que les sites accèdent aux informations de l’agent utilisateur :
- chaînes User-Agent (héritées).
- User-Agent Indicateurs client (recommandé).
Pour plus d’informations sur ces deux approches, consultez Détection de Microsoft Edge à partir de votre site web.
Dans Microsoft Edge (et également dans Google Chrome), les sites peuvent différencier les utilisateurs sur Windows 11 et Windows 10, et peuvent détecter l’architecture du processeur de l’appareil, via User-Agent indicateurs client (UA-CH). Ces informations se trouvent dans les en-têtes de requête UA-CH suivants :
Champ d’en-tête | Valeurs qui indiquent Windows 10 | Valeurs qui indiquent Windows 11 |
---|---|---|
Sec-CH-UA-Platform |
Windows |
Windows |
Sec-CH-UA-Platform-Version |
valeurs entre 1.0.0 et 10.0.0 |
13.0.0 et versions ultérieures |
User-Agent chaînes ne seront pas mises à jour pour faire la distinction entre Windows 11 et Windows 10, ni pour différencier les architectures du processeur. Nous vous déconseillons d’utiliser des chaînes User-Agent pour récupérer les données de l’agent utilisateur. Les navigateurs qui ne prennent pas en charge les indicateurs de client User-Agent ne pourront pas faire la distinction entre Windows 11 et Windows 10, ni entre les architectures de processeur.
Navigateurs qui prennent en charge les indicateurs de client User-Agent
Le tableau suivant indique les navigateurs qui prennent en charge la différenciation entre Windows 11 et Windows 10, et entre différentes architectures de processeur.
Navigateur | Prend en charge la différenciation via User-Agent indicateurs client ? |
---|---|
Microsoft Edge 94+ | Oui |
Chrome 95+ | Oui |
Opera | Oui |
Firefox | Non |
Internet Explorer 11 | Non |
Exemple de code pour la détection des Windows 11
Le code suivant détecte Windows 11 :
navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 or later");
}
else if (majorPlatformVersion > 0) {
console.log("Windows 10");
}
else {
console.log("Before Windows 10");
}
}
else {
console.log("Not running on Windows");
}
});
Exemple de code pour la détection d’ARM ou x86
Utilisez la détection de l’architecture du processeur pour que votre site web télécharge automatiquement la version de votre application conçue spécifiquement pour le processeur de l’utilisateur.
La détection du processeur est particulièrement utile pour les appareils ARM, de sorte qu’un client utilisant un appareil ARM télécharge automatiquement la version ARM native d’une application. Cela empêche l’utilisateur d’installer par inadvertance une application conçue pour x86, puis de subir des performances réduites en raison de l’émulation.
Le code suivant détecte l’architecture du processeur :
navigator.userAgentData.getHighEntropyValues(["architecture", "bitness"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
if (ua.architecture === 'x86') {
if (ua.bitness === '64') {
console.log("x86_64");
}
else if (ua.bitness === '32') {
console.log("x86");
}
}
else if (ua.architecture === 'arm') {
if (ua.bitness === '64') {
console.log("ARM64");
}
else if (ua.bitness === '32') {
console.log("ARM32");
}
}
}
else {
console.log("Not running on Windows");
}
});
Optimisation des performances de détection avec Critical-CH
Actuellement, les serveurs de site web doivent envoyer l’en-tête Accept-CH
de réponse au client du navigateur pour demander des champs d’entropie plus élevés non envoyés dans l’en-tête Sec-CH-UA
par défaut. Le diagramme suivant montre le navigateur qui envoie des en-têtes de requête au serveur, y compris user agent: <UA string>
et reçoit des en-têtes de réponse, y compris Accept-CH: sec-ch-ua-platform
.
Pendant cette demande initiale, le client enregistre les Accept-CH
préférences et les requêtes suivantes incluent sec-ch-ua-platform
par défaut.
Pour optimiser davantage ce flux, le nouvel Critical-CH
en-tête peut être utilisé en plus de l’en-tête Accept-CH
pour réémettre immédiatement l’en-tête de requête, sans avoir besoin d’un rechargement de page. Le diagramme suivant montre le navigateur envoyant des en-têtes de requête au serveur, y compris user agent: <UA string>
et en recevant des en-têtes de réponse, y compris Accept-CH: sec-ch-ua-platform
et Critical-CH: sec-ch-ua-platform
. Le navigateur envoie ensuite immédiatement les en-têtes de requête au serveur.
À compter de Microsoft Edge version 96, vous pouvez utiliser le nouvel Critical-CH
en-tête pour recevoir les en-têtes d’entropie élevée souhaités avec des performances optimisées.
N’oubliez pas que les préférences et Accept-CH
persistent jusqu’à ce que les cookies de session soient effacés, ou jusqu’à ce qu’un Critical-CH
utilisateur efface les données du site ou les cookies pour une origine donnée. Pour plus d’informations sur Critical-CH
, consultez Fiabilité des indicateurs de client.
Détection de versions spécifiques de Windows
La définition des versions de plateforme retournées par l’API pour l’indicateur navigator.userAgentData.getHighEntropyValues
"platformVersion"
(et par le biais de l’en-tête Sec-CH-UA-Platform-Version
) est spécifiée dans le rapport brouillon du groupe de communauté indicateurs du client de l’agent utilisateur. Sur Windows 10 et versions ultérieures, la valeur est basée sur la version Windows.Foundation.UniversalApiContract.
Pour détecter des versions spécifiques de Windows, utilisez les valeurs suivantes pour platformVersion
dans User-Agent Indicateurs client :
Version | Premier composant de version du platformVersion |
---|---|
Win7/8/8.1 | 0 |
Win10 1507 | 1 |
Win10 1511 | 2 |
Win10 1607 | 3 |
Win10 1703 | 4 |
Win10 1709 | 5 |
Win10 1803 | 6 |
Win10 1809 | 7 |
Win10 1903 | 8 |
Win10 1909 | 8 |
Win10 2004 | 10 |
Win10 20H2 | 10 |
Win10 21H1 | 10 |
Win10 21H2 | 10 |
Win11 | 13+ |