Идентичность

Переключение бренда: Chrome, Edge, Brave, Opera

Как переключаться между идентичностями Chrome, Edge, Brave и Opera с полной согласованностью сигналов в UA, Client Hints и API navigator.

Документация

Нужна поддерживаемая продуктовая документация?

У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.

Введение

Каждый браузер на базе Chromium имеет отдельную идентичность, определяемую токенами бренда, строкой User-Agent, заголовками Client Hints и значениями API navigator. Chrome, Edge, Brave и Opera представляют разную информацию о бренде, нумерацию версий и функциональную поверхность, несмотря на общий движок Chromium. Когда ваш браузер заявляет себя Edge, но сообщает токены бренда Chrome в Sec-CH-UA, несоответствие очевидно.

BotBrowser выполняет переключение бренда на уровне движка браузера. Когда вы выбираете бренд с помощью --bot-config-browser-brand, все связанные сигналы обновляются согласованно: строка User-Agent, все заголовки Client Hints, navigator.userAgentData, порядок токенов бренда и метаданные версий отражают выбранный бренд. Эта статья объясняет, что контролирует переключение бренда, как его настроить и почему согласованность всех сигналов бренда важна.

Влияние на конфиденциальность

Бренд браузера является значимым компонентом идентичности вашего браузера. Системы отслеживания используют информацию о бренде для:

  • Сегментации пользователей по браузеру: разные бренды имеют разные базы пользователей, демографию и паттерны использования
  • Проверки согласованности отпечатка: отпечаток, заявляющий токены бренда Chrome, но имеющий свойства navigator, специфичные для Edge, выглядит подозрительно
  • Отслеживания поведения, специфичного для бренда: каждый бренд имеет уникальные настройки по умолчанию, флаги функций и поведение расширений, влияющие на отпечаток

Когда сигналы бренда несогласованны, само несоответствие становится сигналом отслеживания. Браузер, сообщающий Sec-CH-UA: "Microsoft Edge", но имеющий navigator.userAgent, содержащий "Chrome" без специфичных для Edge токенов, очевидно неправильно настроен. Это несоответствие более отличительно, чем любой бренд по отдельности.

BotBrowser гарантирует, что при выборе бренда каждый связанный сигнал выстраивается правильно. Нет частичных обновлений и пропущенных свойств.

Техническая основа

Что определяет бренд браузера

Идентичность бренда браузера выражается через множество сигналов:

Строка User-Agent: традиционный заголовок User-Agent и свойство navigator.userAgent. Каждый бренд имеет отдельный формат:

  • 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): заголовок Sec-CH-UA содержит токены бренда с информацией о версии. Каждый бренд имеет определённый порядок и состав:

  • 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: JavaScript API, предоставляющий структурированную информацию о бренде:

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

Токены GREASE: Chromium добавляет рандомизированные токены GREASE в Client Hints для предотвращения привязки серверов к определённым форматам токенов. Формат и позиция токена GREASE различаются по брендам.

Каденция версий: Chrome, Edge и Opera выпускаются по разным расписаниям. Chrome 142 может соответствовать Edge 142, но с разными patch-версиями. Opera имеет собственную нумерацию мажорных версий. Эти соотношения версий должны быть корректными для достоверности бренда.

Порядок токенов бренда

Порядок токенов бренда в Sec-CH-UA и navigator.userAgentData.brands важен. Каждый бренд имеет определённый, согласованный порядок. Рандомизация порядка или использование неправильного порядка является сигналом несоответствия.

BotBrowser поддерживает правильный порядок токенов бренда для каждого поддерживаемого бренда, включая правильное размещение токенов GREASE.

Распространённые подходы и их ограничения

Переопределение строки User-Agent

Фреймворки Playwright и Puppeteer предлагают опции переопределения 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');

Это изменяет только заголовок User-Agent и navigator.userAgent. Не обновляются:

  • Заголовки Sec-CH-UA (по-прежнему сообщают токены бренда Chrome)
  • navigator.userAgentData.brands (по-прежнему возвращает бренды Chrome)
  • Sec-CH-UA-Full-Version-List (по-прежнему показывает версии Chrome)
  • Высокоэнтропийные значения Client Hints

Результат - явное несоответствие между строкой UA и Client Hints.

Переопределение Client Hints через CDP

CDP предоставляет Network.setUserAgentOverride, который может установить некоторые значения Client Hints. Однако:

  • Требуется Network.enable, что может влиять на поведение отпечатков
  • Не все значения Client Hints покрываются
  • Переопределение должно поддерживаться для каждой страницы и worker
  • Порядок токенов бренда и генерация токенов GREASE не автоматизированы

Подмена бренда через расширения

Расширения, модифицирующие заголовок User-Agent, сталкиваются с теми же ограничениями, что и переопределения на уровне фреймворка. Они не могут изменить значения, возвращаемые navigator.userAgentData.getHighEntropyValues(), поскольку этот API реализован в нативном коде, а не в слое JavaScript, к которому расширения имеют доступ.

Подход BotBrowser

Флаг --bot-config-browser-brand

Флаг --bot-config-browser-brand в BotBrowser (ENT Tier2) изменяет идентичность бренда браузера на уровне движка:

# Запуск как Microsoft Edge
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=edge

# Запуск как Brave
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=brave

# Запуск как Opera
chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-browser-brand=opera

При установке бренда BotBrowser обновляет все связанные сигналы:

СигналОбновлён
Заголовок User-AgentДа
navigator.userAgentДа
Заголовок Sec-CH-UAДа
Sec-CH-UA-Full-Version-ListДа
navigator.userAgentData.brandsДа
getHighEntropyValues()Да
Порядок токенов брендаДа
Формат токена GREASEДа

Поддерживаемые бренды

БрендЗначение флагаПримечания
ChromechromeИдентичность по умолчанию на базе Chromium
EdgeedgeMicrosoft Edge с правильным токеном Edg/
BravebraveИдентичность браузера Brave
OperaoperaOpera с токеном OPR/
ChromiumchromiumОбщая идентичность Chromium
WebViewwebviewAndroid WebView (ENT Tier3)

Выравнивание версий

Каждый бренд имеет собственную каденцию версий. При переключении на Edge версия, специфичная для Edge, должна соответствовать версии Chromium. BotBrowser обрабатывает это автоматически, но вы можете переопределить с помощью:

  • --bot-config-brand-full-version: устанавливает полную версию бренда (например, Edge 142.0.3595.65)
  • --bot-config-ua-full-version: устанавливает полную версию Chromium (например, 142.0.7444.60)

Эти флаги обеспечивают внутреннюю согласованность метаданных UA-CH, когда каденция поставщика расходится с Chromium.

Настройка и использование

Базовое переключение бренда (CLI)

# Идентичность Edge с прокси из США
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

# Идентичность Brave с прокси из Великобритании
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

Интеграция с 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();
})();

Интеграция с 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();
})();

Верификация

После запуска с переопределением бренда проверьте следующие сигналы:

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

// Проверка строки User-Agent
const ua = await page.evaluate(() => navigator.userAgent);
console.log('User-Agent:', ua);

// Проверка брендов Client Hints
const brands = await page.evaluate(() =>
  navigator.userAgentData.brands.map(b => ({ brand: b.brand, version: b.version }))
);
console.log('Brands:', JSON.stringify(brands));

// Проверка высокоэнтропийных значений
const highEntropy = await page.evaluate(async () => {
  return await navigator.userAgentData.getHighEntropyValues([
    'fullVersionList', 'platform', 'platformVersion',
    'architecture', 'bitness', 'model'
  ]);
});
console.log('High-entropy:', JSON.stringify(highEntropy));

Подтвердите, что:

  1. Строка User-Agent содержит правильный идентификатор бренда (Edg/ для Edge, OPR/ для Opera)
  2. Sec-CH-UA перечисляет правильные токены бренда в правильном порядке
  3. navigator.userAgentData.brands совпадает с Client Hints на уровне HTTP
  4. Высокоэнтропийные значения fullVersionList показывают правильные версии бренда
  5. Токены Chrome не появляются при использовании другого бренда (если только бренд не включает Chromium как базовый токен)

Лучшие практики

  1. Поддерживайте выравнивание версий. При переключении на Edge используйте --bot-config-brand-full-version для установки правильной версии Edge, соответствующей мажорной версии Chromium в вашем профиле.

  2. Согласуйте бренд с региональными паттернами использования. Edge более распространён в корпоративных средах. Brave имеет определённую демографию пользователей. Выбирайте бренды, соответствующие представляемой идентичности.

  3. Комбинируйте бренд с соответствующим прокси и локалью. Полная идентичность включает компоненты бренда, сети и географии.

  4. Используйте профили, разработанные для целевого бренда. Некоторые функции профиля могут различаться между брендами. Использование профиля, захваченного с реального браузера Edge, с --bot-config-browser-brand=edge даёт наиболее согласованные результаты.

  5. Тестируйте токены бренда с инструментами верификации отпечатков. Проверяйте выравнивание всех сигналов бренда после настройки.

Часто задаваемые вопросы

Изменяет ли переключение бренда функциональную поверхность браузера? Переключение бренда обновляет все сигналы идентичности (UA, Client Hints, свойства navigator). Различия на уровне функций между брендами (щит Brave или боковая панель Edge) не эмулируются на уровне UI, но заявленная идентичность согласована.

Могу ли я использовать любой бренд с любым профилем? Да. Флаг --bot-config-browser-brand переопределяет идентичность бренда независимо от базовой конфигурации профиля. Флаги CLI имеют наивысший приоритет.

Что произойдёт, если не установить --bot-config-browser-brand? Браузер использует бренд, указанный в загруженном профиле. Если профиль не указывает бренд, по умолчанию используется Chrome.

Влияет ли переключение бренда на поведение расширений? Переключение бренда изменяет сигналы идентичности, а не среду выполнения расширений. Установленные в браузере расширения функционируют одинаково независимо от настроенного бренда.

Могу ли я сменить бренд без перезапуска? Нет. Флаг --bot-config-browser-brand устанавливается при запуске. Для смены бренда запустите новый экземпляр браузера с нужным брендом.

Как насчёт рандомизации токенов GREASE? BotBrowser генерирует подходящие токены GREASE для каждого бренда. Формат и позиция GREASE следуют паттернам, наблюдаемым в реальных экземплярах каждого бренда браузера.

Отличается ли переключение бренда WebView от других брендов? Да. Идентичность WebView (ENT Tier3) обычно требует дополнительных флагов для платформы, модели и мобильных настроек для создания полного отпечатка Android WebView. Подробности см. в разделе WebView выше.

Итоги

Идентичность бренда браузера охватывает строку User-Agent, заголовки Client Hints, API navigator, порядок токенов бренда и метаданные версий. Флаг --bot-config-browser-brand в BotBrowser обновляет все эти сигналы согласованно на уровне движка, обеспечивая полную и достоверную идентичность бренда.

Для деталей User-Agent и Client Hints смотрите Управление User Agent и Client Hints. Для комбинирования идентичности бренда с географическими настройками смотрите Настройка часового пояса, локали и языка. Для конфигураций с несколькими идентичностями и разными брендами смотрите Изоляция браузеров для мультиаккаунтов.

#бренд браузера#Chrome#Edge#Brave#Identity

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.