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

Защита аудиоотпечатков с 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);

Ключевые проверки:

  1. Хеши аудиоотпечатков остаются стабильными при перезагрузке страницы
  2. Частота дискретизации AudioContext соответствует значению по умолчанию платформы профиля
  3. Разные профили производят разные аудиоотпечатки

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

  1. Скачайте BotBrowser с GitHub
  2. Загрузите профиль с помощью --bot-profile
  3. Используйте --bot-noise-seed для детерминированного аудиовывода
  4. Проверьте с помощью инструментов тестирования отпечатков, проверяющих AudioContext
#audio#fingerprinting#audiocontext#privacy