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.

Demandes utilisant uniquement l’en-tête Accept-CH

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.

Demandes utilisant les en-têtes Critical-CH et Accept-CH

À 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+