Назад к блогу
Отпечатки

Защита таймингов производительности в BotBrowser: согласованные аппаратные сигналы

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

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

Скорость выполнения JavaScript и API отчетности об оборудовании, такие как navigator.hardwareConcurrency и navigator.deviceMemory, различаются в зависимости от устройства. Эти различия могут служить сигналом отслеживания. BotBrowser контролирует все значения, связанные с производительностью, через профиль отпечатка.

Аппаратный контроль на основе профиля

Загрузка профиля применяет согласованные аппаратные значения до выполнения любого кода:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

navigator.hardwareConcurrency и navigator.deviceMemory сообщают значения из профиля, а не реальное оборудование хост-машины.

Масштабирование таймингов производительности

BotBrowser может настроить характеристики таймингов для соответствия целевому оборудованию профиля:

chrome --bot-profile="/path/to/profile.enc" \
       --bot-time-scale=1.2

Флаг --bot-time-scale масштабирует сигналы таймингов, чтобы бенчмарки JavaScript давали результаты, согласованные с классом устройства профиля.

Детерминированная конфигурация

Объедините контроль таймингов с другими детерминированными флагами для полной согласованности:

chrome --bot-profile="/path/to/profile.enc" \
       --bot-time-scale=1.0 \
       --bot-noise-seed=42 \
       --bot-stack-seed=profile \
       --user-data-dir="$(mktemp -d)"

Согласованность частоты кадров

Тайминг requestAnimationFrame выравнивается с конфигурацией дисплея профиля, поддерживая поведение частоты кадров согласованным с заявленным оборудованием.

Проверка

После загрузки профиля:

console.log('Cores:', navigator.hardwareConcurrency);
console.log('Memory:', navigator.deviceMemory);

const start = performance.now();
for (let i = 0; i < 100000; i++) Math.sqrt(i);
console.log('Timing:', performance.now() - start);

Аппаратные значения должны соответствовать конфигурации профиля.

Начало работы

  1. Скачайте BotBrowser с GitHub
  2. Загрузите профиль с --bot-profile
  3. Используйте --bot-time-scale для контроля характеристик таймингов
  4. Проверьте аппаратные значения на сайтах тестирования отпечатков
#performance#timing#fingerprinting#privacy#cpu