Защита аудиоотпечатков с BotBrowser
Как BotBrowser контролирует вывод Web Audio API на уровне движка браузера, обеспечивая согласованные аудиосигналы между платформами.
Риск для конфиденциальности
Обработка Web Audio API производит вывод, который варьируется в зависимости от устройства и платформы, что делает его сигналом отслеживания. Звук не воспроизводится, и разрешения не требуются. Вывод зависит от аудиооборудования, аудиоподсистемы ОС и версии браузера.
Решение BotBrowser
BotBrowser контролирует вывод аудиообработки на уровне движка браузера. При загрузке профиля отпечатка аудиосигналы соответствуют целевой платформе профиля.
Загрузка профиля
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Параметры AudioContext, частоты дискретизации и вывод обработки согласуются с конфигурацией платформы профиля.
Детерминированный вывод с зерном шума
С зерном шума аудиоотпечатки становятся детерминированными. Один и тот же профиль и зерно всегда производят одинаковый результат:
chrome --bot-profile="/path/to/profile.enc" \
--bot-noise-seed=12345
Кроссплатформенная согласованность
Профиль Windows, работающий на macOS или Linux, производит аудиовывод, согласованный с аудиоподсистемой Windows, а не хост-платформы.
Верификация
После запуска BotBrowser проверьте защиту аудио с помощью Puppeteer:
const { chromium } = require('playwright-core');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-noise-seed=12345',
],
headless: true,
});
const page = await (await browser.newContext()).newPage();
// Проверка частоты дискретизации AudioContext
const sampleRate = await page.evaluate(() => {
const ctx = new AudioContext();
return ctx.sampleRate;
});
console.log('Частота дискретизации:', sampleRate);
// Перезагрузка и проверка стабильности
await page.reload();
const sampleRate2 = await page.evaluate(() => {
const ctx = new AudioContext();
return ctx.sampleRate;
});
console.log('Стабильно:', sampleRate === sampleRate2);
Ключевые проверки:
- Хеши аудиоотпечатков остаются стабильными при перезагрузке страницы
- Частота дискретизации AudioContext соответствует значению по умолчанию платформы профиля
- Разные профили производят разные аудиоотпечатки
Начало работы
- Скачайте BotBrowser с GitHub
- Загрузите профиль с помощью
--bot-profile - Используйте
--bot-noise-seedдля детерминированного аудиовывода - Проверьте с помощью инструментов тестирования отпечатков, проверяющих AudioContext