Защита таймингов производительности в 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);
Аппаратные значения должны соответствовать конфигурации профиля.
Начало работы
- Скачайте BotBrowser с GitHub
- Загрузите профиль с
--bot-profile - Используйте
--bot-time-scaleдля контроля характеристик таймингов - Проверьте аппаратные значения на сайтах тестирования отпечатков