Защита свойств Navigator в BotBrowser: согласованная идентичность браузера
Как BotBrowser контролирует свойства navigator, User-Agent, Client Hints и аппаратные значения для поддержания согласованной идентичности браузера между сессиями.
Риск для конфиденциальности
Объект navigator раскрывает аппаратные данные, информацию об ОС, версию браузера и языковые предпочтения каждому скрипту на странице. Эти свойства могут быть объединены в сигнал отслеживания. BotBrowser дает полный контроль над всеми значениями navigator из единого профиля отпечатка.
Контроль Navigator на основе профиля
Каждый профиль BotBrowser определяет полный, внутренне согласованный набор свойств navigator. Загрузка профиля применяет все значения до выполнения любого кода страницы:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Это контролирует navigator.userAgent, navigator.platform, navigator.hardwareConcurrency, navigator.deviceMemory, navigator.languages и все соответствующие HTTP-заголовки из единого источника.
Настройка бренда браузера
Переключите всю идентичность бренда браузера одним флагом:
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-browser-brand=edge
Это обновляет строку User-Agent, navigator.userAgentData.brands, заголовки Sec-CH-UA и свойства, специфичные для поставщика, одновременно.
Контроль языка
Переопределите языковые настройки для соответствия любому региону:
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-languages="fr-FR,fr,en-US,en"
Это обновляет navigator.language, navigator.languages и HTTP-заголовок Accept-Language.
Согласованность Client Hints
BotBrowser контролирует User-Agent Client Hints на уровне движка. JavaScript API (navigator.userAgentData.getHighEntropyValues()) и HTTP-заголовки (Sec-CH-UA, Sec-CH-UA-Platform) возвращают значения, соответствующие загруженному профилю.
Проверка
После запуска BotBrowser с профилем проверьте согласованность:
console.log('UA:', navigator.userAgent);
console.log('Platform:', navigator.platform);
console.log('Cores:', navigator.hardwareConcurrency);
console.log('Memory:', navigator.deviceMemory);
console.log('Languages:', navigator.languages);
const ua = await navigator.userAgentData.getHighEntropyValues([
'platform', 'fullVersionList'
]);
console.log('CH Platform:', ua.platform);
console.log('CH Versions:', ua.fullVersionList);
Все значения должны соответствовать загруженному профилю.