Аудио Fingerprinting: AudioContext отслеживает браузер
Браузер и устройство

Аудио Fingerprinting: AudioContext отслеживает браузер

Аудио фингерпринт использует Web Audio API для обработки сигнала в памяти — крошечные отличия в арифметике с плавающей точкой уникально идентифицируют устройство.

7 мин чтения·

Аудио фингерпринт использует Web Audio API для обработки бесшумного сигнала в памяти и измерения крошечных различий в числах с плавающей точкой — различий, уникальных для аппаратного и программного стека вашего устройства. Никакого звука не воспроизводится, микрофон не задействован, разрешения не запрашиваются. Проверьте отпечаток браузера, включая аудиосигналы, прямо сейчас на whatsmy.fyi.

TL;DR

Аудио fingerprinting создаёт небольшую задачу рендеринга аудио полностью в памяти браузера, затем считывает обратно числовой результат. Поскольку каждое сочетание CPU, аудиостека ОС и движка браузера обрабатывает математику с плавающей точкой немного по-разному, результат является стабильным числом, уникально идентифицирующим ваше устройство — сохраняется в режиме инкогнито, при очистке cookies и даже при смене браузера на основе Chromium.

Что такое аудио fingerprinting?

Аудио fingerprinting эксплуатирует OfflineAudioContext — API браузера, изначально разработанный для рендеринга аудио быстрее реального времени для обработки, микширования и экспорта. Скрипты fingerprinting используют его для рендеринга математически определённой формы волны без выходного устройства, затем измеряют, как арифметика с плавающей точкой платформы обработала вычисление. Результат — единственное число — например, 124.0434488 на одной машине или 79.59 на другой — служит идентификатором устройства.

В отличие от canvas fingerprinting, который зондирует конвейер 2D-рендеринга GPU, аудио fingerprinting зондирует конвейер цифровой обработки сигналов (DSP) вашего CPU. Оба фиксируют совершенно разные уровни аппаратного стека, что делает их взаимодополняющими сигналами при совместном применении.

Как работает аудио fingerprinting?

Процесс запускается в фоновом потоке менее чем за 50 миллисекунд и выполняется в четыре чётких шага.

Шаг 1 — Создание OfflineAudioContext

Скрипт создаёт экземпляр OfflineAudioContext с фиксированным количеством каналов, количеством сэмплов и частотой дискретизации — обычно один канал, 5 000 сэмплов при 44 100 Гц. «Офлайн» означает, что рендеринг происходит полностью в памяти: аппаратное обеспечение для аудио не задействовано, выходное устройство не требуется, звук не воспроизводится.

Шаг 2 — Генерация формы волны

OscillatorNode настраивается для генерации треугольной волны на 10 000 Гц. Это математически точная, повторяющаяся форма волны — во входных данных нет случайности. Любое различие в выводе поэтому происходит исключительно из цепочки обработки платформы.

Шаг 3 — Применение DynamicsCompressor

Сигнал осциллятора направляется через DynamicsCompressorNode с конкретными значениями порога, колена, соотношения, атаки и спада. Компрессор применяет нелинейную кривую усиления — математика включает деление и возведение в степень. Нелинейные операции умножают ошибки округления с плавающей точкой на всех платформах, именно поэтому используется компрессор: он усиливает крошечные различия между архитектурами CPU и реализациями аудиостека.

Шаг 4 — Считывание и хеширование вывода

После завершения рендеринга buffer.getChannelData(0) возвращает Float32Array из 5 000 значений. Скрипт обычно суммирует абсолютные значения сэмплов 4 500–5 000 для получения одного числа с плавающей точкой. Это число — или хеш полного массива — становится аудио-отпечатком.

// AudioContext fingerprinting — минимальный рабочий пример
async function getAudioFingerprint() {
  const AudioCtx =
    window.OfflineAudioContext || window.webkitOfflineAudioContext;

  // 1. Создание контекста в памяти — без аппаратного обеспечения, без разрешений
  const ctx = new AudioCtx(1, 5000, 44100);

  // 2. Осциллятор — треугольная волна при 10 кГц (детерминированный вход)
  const osc = ctx.createOscillator();
  osc.type = 'triangle';
  osc.frequency.setValueAtTime(10000, ctx.currentTime);

  // 3. DynamicsCompressor — нелинейная математика усиливает различия платформ
  const comp = ctx.createDynamicsCompressor();
  comp.threshold.setValueAtTime(-50, ctx.currentTime);
  comp.knee.setValueAtTime(40, ctx.currentTime);
  comp.ratio.setValueAtTime(12, ctx.currentTime);
  comp.attack.setValueAtTime(0, ctx.currentTime);
  comp.release.setValueAtTime(0.25, ctx.currentTime);

  osc.connect(comp);
  comp.connect(ctx.destination);
  osc.start(0);

  // 4. Рендеринг и считывание
  const buffer = await ctx.startRendering();
  const data = buffer.getChannelData(0);

  // Chrome macOS: ~101.46  |  Safari: ~79.59  |  Firefox: ~80.95
  return data.slice(4500).reduce((acc, v) => acc + Math.abs(v), 0);
}

Почему каждое устройство «звучит» по-разному?

Вариация обусловлена тем, как каждая платформа реализует арифметику с плавающей точкой IEEE 754 для обработки аудио. Три уровня вносят вклад:

  • Архитектура CPU и инструкции SIMD: Процессоры x86 используют векторные инструкции SSE2 или AVX2; процессоры ARM используют NEON. Одно и то же умножение даёт разный менее значимый бит в зависимости от набора инструкций.
  • Аудиостек ОС и версия драйвера: Chrome использует разную внутреннюю реализацию FFT в macOS, Windows и Linux. Android 9 и Android 10 дают измеримо разные значения на одном физическом устройстве.
  • Расхождение движков браузера: Blink, WebKit и Gecko накопили более десяти лет независимых модификаций кода обработки аудио. Firefox возвращает другое значение, чем Chrome на том же оборудовании macOS.

Насколько уникален аудио fingerprint?

НаходкаЗначениеИсточник
Энтропия аудио fingerprint (в изоляции)~4,8 битarXiv 2107.14201 (2021)
Энтропия canvas fingerprint (для сравнения)~5,7 битEFF Cover Your Tracks
Сайты среди топ-100k Alexa, использующие скрипты fingerprinting~10%Академическое исследование, 2021
Точность комбинированного fingerprint (100+ сигналов, включая аудио)до 99,6%Fingerprint.com

Кто использует аудио fingerprinting в реальной жизни?

Платформы обнаружения мошенничества

Предотвращение мошенничества — основной законный вариант использования. Платформы такие как Fingerprint.com, DataDome, ThreatMetrix и Sift используют аудио fingerprinting как один из множества сигналов для обнаружения захватов аккаунтов и активности ботов. Боты, запускающие Puppeteer или Playwright без патчей скрытности, часто используют виртуализированные аудиостеки, возвращающие нулевые или аномальные значения.

Межсайтовые рекламные сети

По мере отказа от сторонних cookies в крупных браузерах компании рекламных технологий ускорили инвестиции в fingerprinting для разрешения идентичности. В феврале 2025 года Google отменил собственный внутренний запрет на fingerprinting устройств для рекламы, что Информационный комиссар Великобритании публично назвал «безответственным».

Законно ли аудио fingerprinting?

По GDPR аудио fingerprint, способный выделить индивида, является персональными данными согласно статье 4. Директива ePrivacy, разъяснённая в руководстве EDPB 2024 года, теперь явно охватывает fingerprinting устройств. По российскому Федеральному закону № 152-ФЗ «О персональных данных» подобные идентификаторы также могут требовать согласия при использовании в рекламных целях.

Как защититься от аудио fingerprinting?

  • Tor Browser (наиболее сильная защита): Tor полностью отключает Web Audio API (dom.webaudio.enabled = false). Нечего снимать отпечаток.
  • Brave Browser — Farbling (лучший баланс для ежедневного использования): Farbling в Brave умножает значения аудиобуфера на крошечный случайный коэффициент, полученный из сид-значения за сессию и сайт. Шум делает межсайтовое отслеживание ненадёжным.
  • Firefox privacy.resistFingerprinting: Включение этого флага в about:config заставляет Firefox возвращать единообразные аудиозначения.
  • Режим инкогнито — без защиты: Chrome, Firefox и Edge в режиме инкогнито возвращают идентичные аудио fingerprints. Проверьте другие раскрываемые сигналы на whatsmy.fyi.

Часто задаваемые вопросы

Использует ли аудио fingerprinting мой микрофон?

Нет. Аудио fingerprinting использует API OfflineAudioContext, который рендерит аудио полностью в памяти без доступа к устройствам ввода. Разрешения не требуются, звук не воспроизводится.

Работает ли он в режиме инкогнито?

Да, полностью. Режим инкогнито предотвращает сохранение истории браузера, cookies и локальных данных на диске — но аудио fingerprint вычисляется из аппаратных и программных характеристик. Только браузеры с активной рандомизацией аудио API, такие как Brave или Tor Browser, ведут себя иначе.

Может ли VPN защитить от аудио fingerprinting?

Нет. VPN меняет IP-адрес и шифрует трафик, но не влияет на то, как браузер обрабатывает аудиоматематику. Проверьте, действительно ли VPN маскирует ваш IP, на whatsmy.fyi.

Связанные статьи

Проверьте свой IP-адрес, местоположение и оценку конфиденциальности — мгновенно.

Без логов. Без слежки. Без внешних API.

Запустить проверку →

Похожие статьи

Аудио Fingerprinting: AudioContext отслеживает браузер | whatsmy.fyi