Exécuter des profils de navigateur Windows sur macOS et Linux
Comment présenter une identité de navigateur Windows complète tout en s'exécutant sur macOS ou Linux avec tous les signaux de plateforme contrôlés au niveau du moteur.
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
Windows domine le marché mondial des systèmes d'exploitation de bureau. Selon StatCounter, Windows représente environ 72% du trafic de navigateur de bureau dans le monde, avec des parts encore plus élevées dans des régions comme l'Amérique du Nord, l'Europe et certaines parties de l'Asie. Pour les déploiements de production fonctionnant sur des serveurs Linux ou le travail de développement sur macOS, présenter une identité de navigateur Windows est souvent le choix le plus naturel et le plus statistiquement approprié.
Les profils BotBrowser capturés depuis de vraies installations Windows contiennent l'ensemble complet des signaux spécifiques à Windows : chaînes de plateforme, environnements de polices, caractéristiques de rendu, métriques d'écran et plus encore. Lorsqu'ils sont chargés sur un hôte macOS ou Linux, chaque signal s'aligne avec Windows. Le système d'exploitation hôte ne contribue en rien à l'identité observable du navigateur.
Impact sur la vie privée : pourquoi les profils Windows sur des hôtes non-Windows
L'argument statistique est simple. Si votre automatisation de navigateur génère du trafic qui devrait ressembler à de la navigation de bureau ordinaire, Windows est la plateforme de bureau la plus courante, avec une large avance. Exécuter des profils de navigateur Linux depuis des serveurs Linux crée une anomalie statistique : l'utilisation de bureau Linux est d'environ 4% mondialement, et une grande partie provient de stations de travail de développeurs, pas des schémas de navigation généraux que la plupart des automatisations représentent.
Pour les chercheurs en vie privée, la capacité de présenter une identité Windows depuis un hôte non-Windows permet des expériences contrôlées. Vous pouvez étudier comment les sites web adaptent leur comportement pour les utilisateurs Windows, tester la livraison de contenu spécifique à la plateforme et analyser les systèmes de pistage qui utilisent les signaux de plateforme, le tout sans maintenir une machine Windows.
Pour la gestion multi-comptes, les profils Windows fournissent la base la plus discrète pour les marchés occidentaux. Combiné avec le bon proxy, le bon fuseau horaire et les bons paramètres de locale, un profil Windows Chrome représente la configuration de navigateur la plus courante sur Internet.
Contexte technique
Signaux de navigateur spécifiques à Windows
Une vraie session de navigateur Windows expose sa plateforme à travers de nombreux signaux :
Navigator et User-Agent : navigator.platform retourne "Win32" (même sur les systèmes 64 bits, pour la compatibilité). La chaîne User-Agent contient "Windows NT 10.0" pour Windows 10/11. navigator.userAgentData.platform retourne "Windows" avec la version de plateforme disponible via getHighEntropyValues().
Client Hints : l'en-tête HTTP Sec-CH-UA-Platform rapporte "Windows" à chaque requête. Sec-CH-UA-Platform-Version fournit la version spécifique de Windows (par ex. "15.0.0" pour Windows 11, "10.0.0" pour Windows 10).
Environnement de polices : Windows est livré avec des centaines de polices incluant Segoe UI (la police système), Calibri, Cambria, Consolas, Arial, Times New Roman, Verdana, Tahoma et bien d'autres. L'énumération des polices via CSS ou Canvas révèle cet ensemble spécifique.
Caractéristiques de rendu : Windows utilise DirectWrite pour le rendu du texte, qui produit des motifs d'anticrénelage distinctifs comparés à Core Text sur macOS ou FreeType sur Linux. Ces différences sont visibles dans le rendu de texte Canvas et peuvent être utilisées pour identifier la plateforme.
Métriques d'écran : les résolutions d'écran courantes sous Windows (1920x1080, 1366x768, 2560x1440) et les valeurs de devicePixelRatio (typiquement 1.0 ou 1.25) diffèrent de macOS (où les écrans Retina ont couramment un DPR de 2.0) et de Linux (qui varie largement).
Chrome de fenêtre : les dimensions des décorations de fenêtre du navigateur (hauteur de la barre de titre, largeur de la barre de défilement, bordure de fenêtre) diffèrent entre les systèmes d'exploitation. Les calculs outerWidth - innerWidth et outerHeight - innerHeight révèlent ces dimensions.
Pourquoi l'usurpation simple échoue
Changer la chaîne User-Agent pour rapporter Windows ne change pas l'environnement de polices, la sortie de rendu, les métriques d'écran, les dimensions du chrome de fenêtre ni les Client Hints. Un navigateur qui prétend être Windows mais rend le texte avec les caractéristiques de FreeType et rapporte les polices Linux présente des signaux contradictoires. Ces incohérences sont faciles à identifier par l'analyse inter-signaux.
Approches courantes et leurs limites
Substitutions de User-Agent
Les frameworks comme Playwright et Puppeteer permettent de définir des chaînes User-Agent personnalisées. Cela change l'en-tête HTTP et navigator.userAgent mais laisse tous les autres signaux inchangés. navigator.platform, les listes de polices, la sortie de rendu et les Client Hints continuent tous de refléter le vrai système d'exploitation hôte.
VM Windows sur Linux
Exécuter Windows dans une machine virtuelle sur un serveur Linux fournit de véritables signaux Windows, mais le coût en ressources est élevé. Chaque VM nécessite 4-8 Go de RAM, des coeurs CPU dédiés et une licence Windows. À grande échelle, cette approche est prohibitivement coûteuse comparée à l'émulation basée sur les profils.
Wine ou couches de compatibilité
Exécuter Chrome Windows via Wine sur Linux produit un environnement de signaux mixtes. Certains signaux reflètent Windows, d'autres reflètent le système Linux sous-jacent. Le résultat est un ensemble d'incohérences qui est pire que d'exécuter l'une ou l'autre plateforme nativement.
Substitutions via DevTools Protocol
Le Chrome DevTools Protocol permet de substituer le User-Agent et certaines propriétés de plateforme. Cependant, ces substitutions sont appliquées après l'initialisation du navigateur et n'affectent pas le pipeline de rendu, le système de polices ou les premiers en-têtes HTTP comme les Client Hints lors de la navigation initiale.
L'approche de BotBrowser
Les profils BotBrowser capturés depuis des systèmes Windows contiennent chaque signal spécifique à Windows dans un seul package. Charger un profil Windows sur n'importe quel système d'exploitation hôte applique tous ces signaux au niveau du moteur pendant l'initialisation du navigateur.
Ce qu'un profil Windows contrôle
Lorsque vous chargez un profil Windows 11 Chrome sur un serveur Linux :
navigator.platformretourne "Win32"navigator.userAgentcontient "Windows NT 10.0; Win64; x64"- L'en-tête
Sec-CH-UA-Platformrapporte "Windows" Sec-CH-UA-Platform-Versionrapporte la version Windows capturée- Les requêtes de polices retournent le jeu de polices Windows (Segoe UI, Calibri, etc.)
- Le rendu de texte Canvas correspond aux caractéristiques de DirectWrite
- Les chaînes de renderer WebGL correspondent au GPU source
- Les métriques d'écran correspondent aux configurations Windows courantes
- Les dimensions du chrome de fenêtre correspondent au comportement de Chromium sous Windows
Aucune configuration requise
Le support multiplateforme n'est pas une fonctionnalité séparée qui doit être activée. Chaque profil est intrinsèquement multiplateforme. Vous chargez un profil Windows de la même manière sur Linux, macOS ou Windows. Le flag --bot-profile est tout ce qui est nécessaire.
Association avec Edge ou Brave
Les utilisateurs Windows utilisent couramment Microsoft Edge ou Google Chrome. BotBrowser supporte le changement de marque pour se présenter comme Edge :
chrome --bot-profile="/profiles/win11-edge.enc" \
--bot-config-browser-brand=edge
Cela met à jour tous les signaux spécifiques à la marque (marques User-Agent, tokens de marque Client Hints, feature flags) pour correspondre à Edge sous Windows.
Configuration et utilisation
Profil Windows de base sur Linux
# Sur un serveur Linux
DISPLAY=:10.0 chrome \
--bot-profile="/profiles/win11-chrome-130.enc" \
--user-data-dir="$(mktemp -d)"
Profil Windows avec identité US
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 Puppeteer
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/profiles/win11-chrome-130.enc',
'--bot-config-timezone=America/Chicago',
'--bot-config-locale=en-US',
'--bot-config-languages=en-US,en',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
const platform = await page.evaluate(() => ({
platform: navigator.platform,
ua: navigator.userAgent,
}));
console.log(platform);
await browser.close();
})();
Edge sur Linux avec proxy EU
DISPLAY=:10.0 chrome \
--bot-profile="/profiles/win11-edge.enc" \
--bot-config-browser-brand=edge \
--proxy-server=socks5://user:pass@de-proxy:1080 \
--bot-config-timezone=Europe/Berlin \
--bot-config-locale=de-DE \
--bot-config-languages=de-DE,de,en
Vérification
Vérifiez que le profil Windows est appliqué correctement en vérifiant plusieurs catégories de signaux :
const page = await context.newPage();
await page.goto('https://example.com');
const verification = await page.evaluate(async () => {
const result = {
platform: navigator.platform,
userAgent: navigator.userAgent,
};
if (navigator.userAgentData) {
result.uaPlatform = navigator.userAgentData.platform;
const highEntropy = await navigator.userAgentData.getHighEntropyValues([
'platform', 'platformVersion'
]);
result.platformVersion = highEntropy.platformVersion;
}
return result;
});
console.log('Windows profile verification:', verification);
// platform: "Win32"
// userAgent: "...Windows NT 10.0; Win64; x64..."
// uaPlatform: "Windows"
Bonnes pratiques
- Choisissez des profils Windows 10 ou 11. Ce sont les versions Windows dominantes actuelles. Les profils Windows 7 sont obsolètes pour les versions modernes de Chrome.
- Faites correspondre l'emplacement du proxy au profil. Windows domine le trafic de bureau en Amérique du Nord, en Europe et dans de nombreuses parties de l'Asie. Utilisez les profils Windows avec des proxys dans ces régions.
- Définissez DISPLAY sur les serveurs Linux. Définissez toujours
DISPLAY=:10.0lors de l'exécution sur Linux, même en mode headless. - Utilisez
defaultViewport: nulldans Playwright et Puppeteer pour laisser le profil contrôler les dimensions du viewport plutôt que le framework. - Combinez avec la locale et le fuseau horaire. Un profil Windows sans paramètres de locale correspondants est incomplet. Définissez
--bot-config-timezone,--bot-config-localeet--bot-config-languagespour correspondre à l'emplacement du proxy. - Envisagez Edge pour la variété. Windows + Edge est une combinaison courante. Utiliser
--bot-config-browser-brand=edgeavec un profil Windows diversifie votre pool d'identités de navigateur.
Questions fréquentes
L'hôte Linux se révèle-t-il quelque part lors de l'exécution d'un profil Windows ?
Non. BotBrowser contrôle tous les signaux dépendants de la plateforme au niveau du moteur. Aucune information spécifique à Linux n'est exposée aux sites web ou à JavaScript lorsqu'un profil Windows est chargé.
Puis-je exécuter des profils Windows 11 spécifiquement ?
Oui. Les profils Windows 11 rapportent la version de plateforme appropriée dans les Client Hints. La distinction entre Windows 10 et 11 est principalement dans la valeur Sec-CH-UA-Platform-Version, qui est capturée depuis le système source.
Ai-je besoin des polices Windows installées sur mon serveur Linux ?
Non. Les profils BotBrowser contiennent l'environnement de polices du système source. Les requêtes de disponibilité des polices retournent le jeu de polices Windows indépendamment des polices installées sur l'hôte.
Comment fonctionne la résolution d'écran avec les profils Windows ?
Le profil porte les métriques d'écran du système source. Les résolutions Windows courantes comme 1920x1080 et 1366x768 sont représentées dans le profil. La résolution d'écran de l'hôte n'est pas exposée.
Puis-je utiliser le même fichier de profil sur différents systèmes d'exploitation hôtes ?
Oui. Le même fichier de profil .enc fonctionne de manière identique sur les hôtes Linux, macOS et Windows. Le profil détermine l'identité du navigateur, pas le système d'exploitation hôte.
Qu'en est-il des API spécifiques à Windows comme WMI ou DirectX ?
Les navigateurs web exposent un ensemble limité d'API de plateforme via les API web standard. BotBrowser contrôle tous les signaux de plateforme accessibles au web. Les API système comme WMI ne sont pas accessibles depuis le contenu web.
Y a-t-il une différence de performance lors de l'exécution de profils Windows sur Linux ?
Non. Le profil contrôle quels signaux le navigateur rapporte. Le calcul réel s'exécute toujours sur le matériel hôte à vitesse native.
Résumé
Exécuter des profils de navigateur Windows sur des hôtes macOS et Linux est une capacité fondamentale de BotBrowser qui permet les déploiements de production sur une infrastructure Linux économique tout en présentant l'identité de plateforme de bureau la plus courante. Tous les signaux spécifiques à Windows sont contrôlés au niveau du moteur, sans configuration au-delà du flag de profil.
Pour les sujets connexes, voir Cross-Platform Browser Profiles pour l'aperçu multiplateforme plus large, Android Emulation pour les profils mobiles, et Browser Brand Switching pour combiner les identités de plateforme et de marque.
Articles Connexes
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.