Identité

Changement de marque : Chrome, Edge, Brave, Opera

Comment basculer entre les identités Chrome, Edge, Brave et Opera avec une cohérence complète des signaux entre le UA, les Client Hints et les API navigator.

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

Chaque navigateur basé sur Chromium possède une identité distincte définie par ses jetons de marque, sa chaîne User-Agent, ses en-têtes Client Hints et ses valeurs d'API navigator. Chrome, Edge, Brave et Opera présentent chacun des informations de marque différentes, une numérotation de version distincte et une surface de fonctionnalités différente malgré le partage du moteur Chromium. Lorsque votre navigateur prétend être Edge mais rapporte des jetons de marque spécifiques à Chrome dans Sec-CH-UA, l'incohérence est évidente.

BotBrowser gère le changement de marque au niveau du moteur du navigateur. Lorsque vous sélectionnez une marque avec --bot-config-browser-brand, tous les signaux associés se mettent à jour de manière cohérente : la chaîne User-Agent, tous les en-têtes Client Hints, navigator.userAgentData, l'ordre des jetons de marque et les métadonnées de version reflètent tous la marque choisie. Cet article explique ce que le changement de marque contrôle, comment le configurer et pourquoi la cohérence de tous les signaux de marque est importante.

Impact sur la vie privée

La marque du navigateur est un composant significatif de l'identité de votre navigateur. Les systèmes de suivi utilisent les informations de marque pour :

  • Segmenter les utilisateurs par navigateur : Les différentes marques ont des bases d'utilisateurs, des démographies et des habitudes d'utilisation différentes
  • Valider la cohérence de l'empreinte : Une empreinte qui revendique des jetons de marque Chrome mais possède des propriétés navigator spécifiques à Edge est suspecte
  • Suivre les comportements spécifiques à la marque : Chaque marque a des paramètres par défaut, des flags de fonctionnalités et des comportements d'extension uniques qui affectent l'empreinte

Lorsque les signaux de marque sont incohérents, l'incohérence elle-même devient un signal de suivi. Un navigateur qui rapporte Sec-CH-UA: "Microsoft Edge" mais dont navigator.userAgent contient "Chrome" sans jetons spécifiques à Edge est clairement mal configuré. Cette incohérence est plus distinctive que l'une ou l'autre marque seule.

BotBrowser garantit que lorsque vous sélectionnez une marque, chaque signal associé à cette marque s'aligne correctement. Il n'y a pas de mises à jour partielles ni de propriétés oubliées.

Contexte technique

Ce qui définit une marque de navigateur

L'identité de marque d'un navigateur s'exprime à travers plusieurs signaux :

Chaîne User-Agent : L'en-tête traditionnel User-Agent et la propriété navigator.userAgent. Chaque marque a un format distinct :

  • Chrome : Mozilla/5.0 ... Chrome/142.0.7444.60 Safari/537.36
  • Edge : Mozilla/5.0 ... Chrome/142.0.7444.60 Safari/537.36 Edg/142.0.3595.65
  • Brave : Mozilla/5.0 ... Chrome/142.0.7444.60 Safari/537.36
  • Opera : Mozilla/5.0 ... Chrome/142.0.7444.60 Safari/537.36 OPR/108.0.0.0

Client Hints (Sec-CH-UA) : L'en-tête Sec-CH-UA contient des jetons de marque avec des informations de version. Chaque marque a un ordre et une composition spécifiques :

  • Chrome : "Chromium";v="142", "Google Chrome";v="142", "Not:A-Brand";v="99"
  • Edge : "Chromium";v="142", "Microsoft Edge";v="142", "Not:A-Brand";v="99"
  • Brave : "Chromium";v="142", "Brave";v="142", "Not:A-Brand";v="99"

navigator.userAgentData : L'API JavaScript qui fournit des informations de marque structurées :

navigator.userAgentData.brands
// Chrome: [{brand: "Chromium", version: "142"}, {brand: "Google Chrome", version: "142"}, ...]
// Edge:   [{brand: "Chromium", version: "142"}, {brand: "Microsoft Edge", version: "142"}, ...]

Jetons GREASE : Chromium ajoute des jetons "GREASE" randomisés aux Client Hints pour empêcher les serveurs de dépendre de formats de jetons spécifiques. Le format et la position du jeton GREASE varient selon la marque.

Cadence de version : Chrome, Edge et Opera suivent des calendriers de publication différents. Chrome 142 peut correspondre à Edge 142 mais avec des versions de correctif différentes. Opera a sa propre numérotation de version majeure. Ces relations de version doivent être correctes pour que la marque soit crédible.

Ordre des jetons de marque

L'ordre des jetons de marque dans Sec-CH-UA et navigator.userAgentData.brands est important. Chaque marque a un ordre spécifique et constant. Randomiser l'ordre ou utiliser le mauvais ordre est un signal d'incohérence.

BotBrowser maintient le bon ordre des jetons de marque pour chaque marque prise en charge, y compris le placement correct des jetons GREASE.

Approches courantes et leurs limitations

Remplacement de la chaîne User-Agent

Les frameworks comme Playwright et Puppeteer offrent des options de remplacement du User-Agent :

// Playwright
const context = await browser.newContext({
  userAgent: 'Mozilla/5.0 ... Edg/142.0.3595.65'
});

// Puppeteer
await page.setUserAgent('Mozilla/5.0 ... Edg/142.0.3595.65');

Ces méthodes ne changent que l'en-tête User-Agent et navigator.userAgent. Elles ne mettent pas à jour :

  • Les en-têtes Sec-CH-UA (qui rapportent toujours les jetons de marque Chrome)
  • navigator.userAgentData.brands (qui retourne toujours les marques Chrome)
  • Sec-CH-UA-Full-Version-List (qui affiche toujours les versions Chrome)
  • Les valeurs Client Hints à haute entropie

Le résultat est une incohérence claire entre la chaîne UA et les Client Hints.

Remplacement des Client Hints via CDP

CDP fournit Network.setUserAgentOverride qui peut définir certaines valeurs Client Hints. Cependant :

  • Cela nécessite Network.enable, ce qui peut affecter le comportement de l'empreinte numérique
  • Toutes les valeurs Client Hints ne sont pas couvertes
  • Le remplacement doit être maintenu par page et par worker
  • L'ordre des jetons de marque et la génération de jetons GREASE ne sont pas automatiques

Usurpation de marque par extension

Les extensions qui modifient l'en-tête User-Agent font face aux mêmes limitations que les remplacements au niveau du framework. Elles ne peuvent pas modifier les valeurs retournées par navigator.userAgentData.getHighEntropyValues() car cette API est implémentée en code natif, et non dans la couche JavaScript à laquelle les extensions ont accès.

L'approche de BotBrowser

Le flag --bot-config-browser-brand

Le flag --bot-config-browser-brand de BotBrowser (ENT Tier2) change l'identité de marque du navigateur au niveau du moteur :

# Lancer en tant que Microsoft Edge
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=edge

# Lancer en tant que Brave
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=brave

# Lancer en tant que Opera
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=opera

Lorsque vous définissez la marque, BotBrowser met à jour tous les signaux associés :

SignalMis à jour
En-tête User-AgentOui
navigator.userAgentOui
En-tête Sec-CH-UAOui
Sec-CH-UA-Full-Version-ListOui
navigator.userAgentData.brandsOui
getHighEntropyValues()Oui
Ordre des jetons de marqueOui
Format des jetons GREASEOui

Marques prises en charge

MarqueValeur du flagNotes
ChromechromeIdentité par défaut basée sur Chromium
EdgeedgeMicrosoft Edge avec le jeton Edg/ approprié
BravebraveIdentité du navigateur Brave
OperaoperaOpera avec le jeton OPR/
ChromiumchromiumIdentité Chromium générique
WebViewwebviewAndroid WebView (ENT Tier3)

Alignement des versions

Chaque marque a sa propre cadence de version. Lors du basculement vers Edge, la version spécifique à Edge doit s'aligner avec la version Chromium. BotBrowser gère cela automatiquement, mais vous pouvez remplacer avec :

  • --bot-config-brand-full-version : Définit la version complète spécifique à la marque (par ex., 142.0.3595.65 pour Edge)
  • --bot-config-ua-full-version : Définit la version complète de Chromium (par ex., 142.0.7444.60)

Ces flags garantissent que les métadonnées UA-CH restent cohérentes en interne lorsque la cadence d'un éditeur diverge de celle de Chromium.

Identité WebView (ENT Tier3)

Pour la simulation Android WebView, combinez le changement de marque avec un User-Agent personnalisé et des paramètres de plateforme :

chrome --bot-profile="/path/to/android-profile.enc" \
       --bot-config-browser-brand=webview \
       --user-agent="Mozilla/5.0 (Linux; Android {platform-version}; {model}) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{ua-full-version} Mobile Safari/537.36" \
       --bot-config-platform=Android \
       --bot-config-platform-version=13 \
       --bot-config-model=SM-G991B \
       --bot-config-mobile=true

Les espaces réservés comme {platform-version} et {model} sont remplacés à l'exécution par les valeurs des flags correspondants. BotBrowser génère automatiquement les navigator.userAgentData et en-têtes Client Hints correspondants.

Configuration et utilisation

Changement de marque basique (CLI)

# Identité Edge avec proxy US
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=edge \
       --proxy-server=socks5://user:pass@proxy:1080 \
       --bot-config-timezone=America/New_York \
       --bot-config-locale=en-US

# Identité Brave avec proxy UK
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=brave \
       --proxy-server=socks5://user:pass@uk-proxy:1080 \
       --bot-config-timezone=Europe/London \
       --bot-config-locale=en-GB

Intégration Playwright

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

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

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

  const brands = await page.evaluate(() =>
    navigator.userAgentData.brands.map(b => `${b.brand} v${b.version}`)
  );
  console.log('Brands:', brands);

  const ua = await page.evaluate(() => navigator.userAgent);
  console.log('UA:', ua);

  await browser.close();
})();

Intégration Puppeteer

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
      '--bot-config-browser-brand=edge',
    ],
    headless: true,
    defaultViewport: null,
  });

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

  const highEntropy = await page.evaluate(async () => {
    return await navigator.userAgentData.getHighEntropyValues([
      'fullVersionList', 'platform', 'platformVersion'
    ]);
  });
  console.log('High-entropy:', highEntropy);

  await browser.close();
})();

Configuration multi-marques

Exécutez différentes marques pour différentes identités :

# Identité Chrome
chrome --bot-profile="/profiles/chrome-user.enc" \
       --bot-config-browser-brand=chrome \
       --proxy-server=socks5://proxy-a:1080 \
       --user-data-dir="/tmp/chrome-session"

# Identité Edge
chrome --bot-profile="/profiles/edge-user.enc" \
       --bot-config-browser-brand=edge \
       --proxy-server=socks5://proxy-b:1080 \
       --user-data-dir="/tmp/edge-session"

# Identité Brave
chrome --bot-profile="/profiles/brave-user.enc" \
       --bot-config-browser-brand=brave \
       --proxy-server=socks5://proxy-c:1080 \
       --user-data-dir="/tmp/brave-session"

Vérification

Après le lancement avec un remplacement de marque, vérifiez ces signaux :

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

// Vérifier la chaîne User-Agent
const ua = await page.evaluate(() => navigator.userAgent);
console.log('User-Agent:', ua);

// Vérifier les marques Client Hints
const brands = await page.evaluate(() =>
  navigator.userAgentData.brands.map(b => ({ brand: b.brand, version: b.version }))
);
console.log('Brands:', JSON.stringify(brands));

// Vérifier les valeurs à haute entropie
const highEntropy = await page.evaluate(async () => {
  return await navigator.userAgentData.getHighEntropyValues([
    'fullVersionList', 'platform', 'platformVersion',
    'architecture', 'bitness', 'model'
  ]);
});
console.log('High-entropy:', JSON.stringify(highEntropy));

Confirmez que :

  1. La chaîne User-Agent contient le bon identifiant de marque (Edg/ pour Edge, OPR/ pour Opera)
  2. Sec-CH-UA liste les bons jetons de marque dans le bon ordre
  3. navigator.userAgentData.brands correspond aux Client Hints au niveau HTTP
  4. Les valeurs à haute entropie comme fullVersionList affichent les bonnes versions spécifiques à la marque
  5. Aucun jeton spécifique à Chrome n'apparaît lors de l'utilisation d'une marque autre que Chrome (sauf si la marque inclut Chromium comme jeton de base)

Bonnes pratiques

  1. Gardez les versions alignées. Lors du basculement vers Edge, utilisez --bot-config-brand-full-version pour définir la bonne version Edge qui correspond à la version majeure Chromium de votre profil.

  2. Associez la marque aux habitudes d'utilisation régionales. Edge est plus courant dans les environnements d'entreprise. Brave a une démographie d'utilisateurs spécifique. Choisissez des marques qui s'alignent avec l'identité que vous présentez.

  3. Combinez la marque avec un proxy et une locale correspondants. Une identité complète inclut la marque, le réseau et les composants géographiques.

  4. Utilisez des profils conçus pour la marque cible. Certaines caractéristiques de profil peuvent différer entre les marques. Utiliser un profil capturé depuis un vrai navigateur Edge avec --bot-config-browser-brand=edge produit les résultats les plus cohérents.

  5. Testez les jetons de marque avec des outils de vérification d'empreinte. Vérifiez que tous les signaux de marque sont alignés après la configuration.

Questions fréquemment posées

Le changement de marque modifie-t-il la surface de fonctionnalités du navigateur ? Le changement de marque met à jour tous les signaux d'identité (UA, Client Hints, propriétés navigator). Les différences au niveau des fonctionnalités entre les marques (comme le bouclier de Brave ou la barre latérale d'Edge) ne sont pas émulées au niveau de l'interface, mais l'identité rapportée est cohérente.

Puis-je utiliser n'importe quelle marque avec n'importe quel profil ? Oui. Le flag --bot-config-browser-brand remplace l'identité de marque indépendamment de la configuration de base du profil. Les flags CLI ont la priorité la plus élevée.

Que se passe-t-il si je ne définis pas --bot-config-browser-brand ? Le navigateur utilise la marque spécifiée dans le profil chargé. Si le profil ne spécifie pas de marque, Chrome est la valeur par défaut.

Le changement de marque affecte-t-il le comportement des extensions ? Le changement de marque modifie les signaux d'identité, pas le runtime des extensions. Les extensions installées dans le navigateur fonctionnent de la même manière indépendamment de la marque configurée.

Puis-je changer de marque à l'exécution sans redémarrer ? Non. Le flag --bot-config-browser-brand est défini au lancement. Pour changer de marque, lancez une nouvelle instance du navigateur avec la marque souhaitée.

Qu'en est-il de la randomisation des jetons GREASE ? BotBrowser génère des jetons GREASE appropriés pour chaque marque. Le format et la position GREASE suivent les schémas observés dans les instances réelles de chaque marque de navigateur.

Le changement de marque WebView est-il différent des autres marques ? Oui. L'identité WebView (ENT Tier3) nécessite généralement des flags supplémentaires pour la plateforme, le modèle et les paramètres mobiles afin de produire une empreinte Android WebView complète. Consultez la section WebView ci-dessus pour les détails.

Résumé

L'identité de marque du navigateur englobe la chaîne User-Agent, les en-têtes Client Hints, les API navigator, l'ordre des jetons de marque et les métadonnées de version. Le flag --bot-config-browser-brand de BotBrowser met à jour tous ces signaux de manière cohérente au niveau du moteur, garantissant une identité de marque complète et crédible.

Pour les détails sur le User-Agent et les Client Hints, consultez Contrôle du User Agent et des Client Hints. Pour combiner l'identité de marque avec les paramètres géographiques, consultez Configuration du fuseau horaire, de la locale et de la langue. Pour les configurations multi-identités avec différentes marques, consultez Isolation multi-comptes du navigateur.

#marque du navigateur#Chrome#Edge#Brave#Identity

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.