Plateforme

Profils multiplateformes : une identite, tout OS

Comment exécuter des profils d'empreintes numériques identiques sur Windows, macOS et Linux tout en maintenant une identité cohérente sur chaque plateforme.

Documentation

Vous préférez la doc produit maintenue ?

Cet article a une page équivalente dans le centre de documentation. Utilisez les docs pour le flux canonique, les flags à jour et la référence durable.

Introduction

Les empreintes numériques de navigateur sont profondément liées au système d'exploitation. De navigator.platform et des chaînes User-Agent à la disponibilité des polices, au rendu Canvas et au comportement des pilotes GPU, des dizaines de signaux révèlent le système hôte. Dans les environnements de production, les serveurs fonctionnent généralement sous Linux, mais l'identité du navigateur doit souvent se présenter comme Windows ou macOS, les plateformes où la plupart de la navigation de bureau réelle se produit.

Les profils BotBrowser sont capturés à partir de sessions de navigateur réelles sur des plateformes et du matériel spécifiques. Lorsque vous chargez un de ces profils sur un système hôte différent, chaque signal dépendant de la plateforme est contrôlé au niveau du moteur. Un profil Windows chargé sur un serveur Linux signale les chaînes de plateforme Windows, retourne les listes de polices Windows et produit un rendu correspondant aux caractéristiques Windows. Le système hôte devient invisible pour les sites web et les systèmes de pistage.

Impact sur la vie privée : pourquoi les profils multiplateforme sont importants

La capacité de présenter une identité de plateforme cohérente quel que soit le système hôte est essentielle pour plusieurs cas d'usage.

Pour la recherche en protection de la vie privée, le contrôle du signal de plateforme permet aux chercheurs d'étudier comment les systèmes de pistage utilisent les signaux au niveau du système d'exploitation sans avoir besoin d'un accès physique à chaque système. Vous pouvez tester si un système de pistage se comporte différemment pour les utilisateurs Windows par rapport à macOS depuis un seul poste de travail Linux.

Pour les déploiements en production, les serveurs Linux sont le choix d'infrastructure standard en raison de leur coût, stabilité et scalabilité. Mais le trafic des navigateurs de bureau Linux représente une petite fraction du trafic web mondial. Présenter une identité de navigateur Linux depuis un serveur Linux crée un décalage statistique : la plupart du trafic de navigateur Linux provient de postes de travail de développeurs, pas du type de navigation générale que l'automatisation représente typiquement. Exécuter des profils Windows ou macOS sur des serveurs Linux aligne l'identité du navigateur avec les distributions de plateformes les plus courantes.

Pour la gestion multi-comptes, différentes identités peuvent nécessiter de présenter différentes plateformes. Une identité peut être un utilisateur Chrome sous Windows, une autre un utilisateur Safari sous macOS (via un profil Chrome avec les signaux appropriés), et une troisième un utilisateur mobile Android. Les profils multiplateforme rendent cela possible depuis une seule machine hôte.

Contexte technique

Signaux de navigateur dépendants de la plateforme

Un navigateur expose sa plateforme hôte à travers de nombreuses API et comportements :

Propriétés du navigateur : navigator.platform retourne des valeurs comme "Win32", "MacIntel" ou "Linux x86_64". La chaîne navigator.userAgent contient le nom et la version du système d'exploitation. navigator.userAgentData fournit des données de plateforme structurées via les Client Hints.

En-têtes HTTP : l'en-tête User-Agent et l'en-tête Client Hint Sec-CH-UA-Platform incluent des informations de plateforme envoyées avec chaque requête HTTP, avant l'exécution de tout JavaScript.

Disponibilité des polices : chaque système d'exploitation est livré avec un ensemble différent de polices. Windows inclut Segoe UI, Calibri et Consolas. macOS est livré avec San Francisco, Helvetica Neue et Menlo. Les systèmes Linux varient considérablement mais utilisent couramment les familles DejaVu, Liberation et Noto. L'énumération des polices est un signal de plateforme puissant.

Différences de rendu : le rendu Canvas et WebGL varie entre les plateformes en raison de différences dans les moteurs de rastérisation de polices (DirectWrite sous Windows, Core Text sous macOS, FreeType sous Linux), les implémentations de pilotes GPU et le comportement de composition.

Métriques d'écran et de fenêtre : les résolutions d'écran par défaut, les dimensions du chrome de fenêtre (hauteur de barre de titre, largeur de barre de défilement) et les valeurs devicePixelRatio diffèrent entre les plateformes et entre les modèles d'appareils spécifiques.

Clavier et saisie : la détection de la disposition du clavier, le comportement des touches de modification (Ctrl vs Cmd) et la prise en charge des méthodes de saisie varient selon la plateforme.

Le défi de la cohérence

La difficulté de l'identité multiplateforme n'est pas de modifier une ou deux valeurs. C'est de maintenir la cohérence à travers tous ces signaux simultanément. Si navigator.platform indique "Win32" mais que la liste de polices contient des polices exclusives à macOS, l'incohérence est visible. Si le User-Agent indique Windows mais que le rendu Canvas correspond au rastériseur FreeType de Linux, ces signaux se contredisent.

BotBrowser résout ce problème en contrôlant tous les signaux dépendants de la plateforme à partir d'un seul profil, garantissant qu'ils correspondent tous à la même plateforme source.

Approches courantes et leurs limites

Modification du User-Agent

L'approche la plus simple consiste à changer la chaîne User-Agent. Playwright et Puppeteer permettent tous deux cela avec une seule ligne de configuration. Cependant, la modification du User-Agent ne change que l'en-tête HTTP et la propriété navigator.userAgent. Elle n'affecte pas navigator.platform, navigator.userAgentData, les listes de polices, le rendu ou tout autre signal de plateforme. Les systèmes de pistage modernes vérifient la cohérence à travers tous ces signaux, rendant la seule modification du User-Agent contre-productive.

Extensions de navigateur

Les extensions peuvent remplacer navigator.platform et des propriétés similaires par injection JavaScript. Cependant, elles opèrent au niveau de l'API, pas au niveau du moteur. Elles ne peuvent pas changer la disponibilité des polices, le comportement du rendu Canvas ou le pipeline de rendu. Elles ne peuvent pas non plus modifier les en-têtes HTTP envoyés avant l'exécution de tout JavaScript, comme les Client Hints lors de la requête de navigation initiale.

Machines virtuelles

Exécuter une VM Windows complète pour obtenir de véritables signaux de navigateur Windows fonctionne parfaitement en termes de justesse, mais la surcharge est significative. Chaque VM nécessite des gigaoctets de mémoire, des ressources CPU substantielles et une licence Windows. Monter en charge à des centaines ou milliers de sessions concurrentes avec des VM est irréaliste pour la plupart des déploiements.

Émulation d'appareil DevTools

Chrome DevTools et Playwright prennent tous deux en charge l'émulation d'appareil, qui remplace le viewport, le User-Agent et les capacités tactiles. Ceci est conçu pour les tests de développement web responsive, pas pour une émulation complète de plateforme. Cela ne change pas la disponibilité des polices, le rendu ou les nombreux autres signaux de plateforme que les systèmes de pistage examinent.

L'approche de BotBrowser

Les profils BotBrowser sont capturés à partir de sessions de navigateur réelles sur du matériel et des systèmes d'exploitation réels. Chaque profil contient l'ensemble complet des signaux dépendants de la plateforme de son environnement source. Lorsqu'ils sont chargés sur n'importe quel système hôte, ces signaux sont appliqués au niveau du moteur.

Couverture complète des signaux

Un profil Windows chargé sur Linux produit :

  • navigator.platform retournant "Win32"
  • L'en-tête Sec-CH-UA-Platform signalant "Windows"
  • La disponibilité des polices Windows (Segoe UI, Calibri, Consolas, etc.)
  • Un rendu Canvas correspondant à la sortie DirectWrite de Windows
  • Des chaînes de rendu WebGL correspondant au GPU source
  • Des métriques d'écran correspondant aux configurations Windows courantes
  • Un navigator.userAgentData correct avec la bonne version de plateforme

Aucune fuite du système hôte

Parce que les signaux sont contrôlés au niveau du moteur Chromium plutôt que par injection JavaScript, il n'y a aucune faille où le système hôte pourrait fuiter. Le pipeline de rendu, le système de polices et toutes les surfaces d'API signalent la plateforme du profil, pas celle de l'hôte.

Combinaisons de plateformes prises en charge

BotBrowser prend en charge l'exécution de profils pour :

  • Windows 10/11 sur des hôtes macOS ou Linux
  • macOS sur des hôtes Windows ou Linux
  • Android sur n'importe quel OS de bureau (émulation mobile)
  • Différentes distributions Linux entre les hôtes

Changement de marque

Les profils de plateforme peuvent être combinés avec le changement de marque de navigateur :

# Se présenter comme Microsoft Edge sous Windows, s'exécutant sur un serveur Linux
chrome --bot-profile="/path/to/win11-profile.enc" \
       --bot-config-browser-brand=edge

Tous les signaux spécifiques au navigateur (User-Agent, Client Hints, flags de support de fonctionnalités) s'alignent à la fois avec la plateforme et la marque sélectionnées.

Configuration et utilisation

Utilisation multiplateforme de base

# Exécuter un profil Windows 11 sur macOS ou Linux
chrome --bot-profile="/profiles/win11-chrome-130.enc" \
       --user-data-dir="$(mktemp -d)"

Identité complète avec proxy

# Identité Windows avec proxy US sur un serveur Linux
DISPLAY=:10.0 chrome \
  --bot-profile="/profiles/win11-chrome-130.enc" \
  --proxy-server=socks5://user:pass@us-proxy:1080 \
  --bot-config-timezone=America/New_York \
  --bot-config-locale=en-US \
  --bot-config-languages=en-US,en

Exemple Playwright

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/profiles/win11-chrome-130.enc',
      '--bot-config-timezone=America/Chicago',
      '--bot-config-locale=en-US',
    ],
    headless: true,
  });

  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');

  const platform = await page.evaluate(() => navigator.platform);
  console.log('Platform:', platform); // "Win32"
  await browser.close();
})();

Edge sur serveur Linux

DISPLAY=:10.0 chrome \
  --bot-profile="/profiles/win11-edge.enc" \
  --bot-config-browser-brand=edge \
  --proxy-server=socks5://user:pass@us-proxy:1080 \
  --bot-config-timezone=America/New_York \
  --bot-config-locale=en-US

Vérification

Vérifiez la cohérence du profil multiplateforme en contrôlant plusieurs catégories de signaux :

const page = await context.newPage();
await page.goto('https://example.com');

const signals = await page.evaluate(() => ({
  platform: navigator.platform,
  userAgent: navigator.userAgent,
  languages: navigator.languages,
  // Vérifier les Client Hints si disponibles
  uaData: navigator.userAgentData ? {
    platform: navigator.userAgentData.platform,
    mobile: navigator.userAgentData.mobile,
  } : null,
}));

console.log('Platform signals:', signals);
Cross-Platform Profile Loading Host OS Linux Server Profile Windows 11 Chrome Engine-Level Override platform: Win32 fonts: Windows canvas: DirectWrite UA: Win

Bonnes pratiques

  • Associez le profil à la localisation du proxy. Pour les IP américaines et européennes, les profils Windows sont le choix le plus naturel étant donné la part de marché de Windows en bureau dans ces régions.
  • Utilisez des versions d'OS récentes. Les profils Windows 10 et 11 sont appropriés pour les versions modernes de Chrome. Évitez les versions d'OS obsolètes sauf si vous les testez spécifiquement.
  • Associez plateforme et marque. Windows + Chrome est la combinaison la plus courante au niveau mondial. Windows + Edge est également très courant. macOS + Chrome et macOS + Safari sont populaires dans certaines démographies.
  • Définissez DISPLAY sous Linux. Lors de l'exécution sur des serveurs Linux, définissez DISPLAY=:10.0 même en mode headless pour assurer une initialisation correcte.
  • Combinez avec les flags de locale. Un profil Windows associé à --bot-config-timezone=America/New_York et --bot-config-locale=en-US crée une identité géographiquement cohérente.

Questions fréquentes

Puis-je exécuter un profil macOS sur un hôte Windows ?

Oui. BotBrowser contrôle tous les signaux de plateforme au niveau du moteur. Un profil macOS chargé sur un hôte Windows signale les chaînes de plateforme macOS, les polices et les caractéristiques de rendu macOS.

L'émulation multiplateforme affecte-t-elle les performances de rendu ?

Non. Les profils contrôlent les signaux que le navigateur rapporte, mais le rendu réel est toujours effectué par le matériel du système hôte. Il n'y a pas de pénalité de performance pour l'exécution d'un profil multiplateforme.

Comment choisir la bonne plateforme pour mon cas d'usage ?

Considérez le contexte géographique et démographique de votre tâche. Windows est dominant au niveau mondial pour la navigation de bureau. macOS est plus courant parmi les populations à revenus élevés et aux États-Unis et en Europe occidentale. Android est dominant pour le trafic mobile dans le monde.

Ai-je besoin de binaires BotBrowser séparés pour différentes plateformes ?

Non. Le même binaire BotBrowser peut charger des profils de n'importe quelle plateforme. Le fichier de profil détermine l'identité de la plateforme, pas le binaire ni le système hôte.

Puis-je changer de plateforme entre les sessions ?

Oui. Chaque lancement peut utiliser un profil différent. Vous pouvez exécuter un profil Windows dans une session et un profil Android dans la suivante, le tout depuis la même machine hôte et le même binaire BotBrowser.

Qu'en est-il des fonctionnalités spécifiques à macOS comme l'écran Retina ?

Les profils macOS incluent les valeurs devicePixelRatio appropriées et les métriques d'écran du matériel source. Un profil macOS capturé depuis un écran Retina signalera les valeurs haute résolution correctes.

Le système hôte affecte-t-il le rendu des polices en mode multiplateforme ?

BotBrowser contrôle la disponibilité et les caractéristiques de rendu des polices à travers le profil. L'environnement typographique du profil est appliqué indépendamment des polices installées sur le système hôte.

Résumé

Les profils de navigateur multiplateforme sont une capacité centrale de BotBrowser, permettant à n'importe quel profil de s'exécuter sur n'importe quel système hôte avec une cohérence complète des signaux. Cela permet aux déploiements sur serveurs Linux de présenter des identités Windows ou macOS, aux profils mobiles de s'exécuter sur des machines de bureau et aux tests multi-plateformes depuis un seul poste de travail.

Pour les sujets connexes, consultez Windows sur macOS/Linux pour une étude approfondie spécifique à Windows, Émulation Android pour les profils mobiles, et Changement de marque de navigateur pour combiner les identités de plateforme et de marque.

#multi-plateforme#Windows#Macos#Linux#Profiles

Faites passer BotBrowser de la recherche à la production

Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.