← Назад в блог

Что такое AudioContext-отпечаток? Как аудиоотпечаток распознаёт окружение браузера

Главный вывод: аудиоотпечаток не трогает микрофон и не воспроизводит звук: браузер молча просчитывает заданный аудиофрагмент в памяти, и крошечные различия в результатах вычислений служат подписью устройства. Как и Canvas с WebGL, это отпечаток по результату рендеринга: смена IP не помогает, очистка кеша тоже, значение определяют оборудование и браузерный движок. Тем, кто ведёт несколько аккаунтов, достаточно двух критериев: значение в одном окружении должно надолго оставаться стабильным, а между окружениями обязано различаться. Настройка AudioContext в MostMate предлагает режимы «Реалистичный» и «Случайный», выбирайте по этим двум критериям.

«Выключу колонки и запрещу доступ к микрофону, тогда сайтам со мной не справиться» — так звучит самое распространённое заблуждение об аудиоотпечатке. На деле всё наоборот: ни один звук в этой проверке не записывается и не воспроизводится. В 2016 году исследователи Принстонского университета включили его в официальные итоги замеров на миллионе сайтов, и с тех пор он стал обязательным пунктом популярных детект-скриптов: ни одного разрешения, работа за миллисекунды, в режиме инкогнито всё действует как обычно. MostMate относится к антидетект-браузерам: продукт готовит для каждого аккаунта собственное окружение браузера, а аудиоотпечаток как раз входит в число параметров, с которыми работают такие продукты. В статье четыре вопроса: что видит сайт, почему это число стабильно, как параметр согласуется с остальными и как его настроить в антидетект-браузере.

Что видит сайт: ни разу не проигранная дорожка и одно число на выходе

Сайт получает итог в виде числа с плавающей точкой: ни звука, ни названия модели устройства. Популярные детект-скрипты (эталоном служит реализация в FingerprintJS, которую наследуют многие открытые библиотеки) работают по неизменной схеме из пяти шагов:

  • создаётся офлайн-аудиоконтекст (OfflineAudioContext, документация MDN): один канал, частота дискретизации 44100 Гц, около 5000 отсчётов, то есть примерно 113 миллисекунд звука; динамики на всём пути не задействованы;
  • осциллятор генерирует треугольную волну на фиксированных 10000 Гц, так что входной сигнал каждый раз один и тот же;
  • сигнал отправляется в динамический компрессор (DynamicsCompressorNode) с нарочито жёсткими параметрами (порог -50 дБ, колено 40, степень сжатия 12): вычисления специально выталкиваются в нелинейную зону, где различия между устройствами усиливаются;
  • вызывается startRendering, и рендеринг проходит в памяти полностью беззвучно;
  • берутся последние около 500 отсчётов выходного буфера, их абсолютные значения суммируются, и получается число вроде 124.0434.

Это число и есть аудиоотпечаток. Вычисление заканчивается до воспроизведения, поэтому на результат не влияют ни выключенный системный звук, ни отсутствие колонок; к записывающим устройствам он тоже не обращается, так что о разрешении для микрофона речи нет. В общих обзорах отпечатков браузера такие параметры обычно упоминают одной строкой, а отдельная статья оправдана из-за особого происхождения значения: число рождается из вычислительной погрешности, и погрешность эта устойчива. Этому посвящён следующий раздел.

Аудиоотпечаток на странице результатов Iphey

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

Почему одно число годится в отпечаток: погрешность оказывается устойчивой

Суть механизма в том, что аудиовычисления на разных устройствах не совпадают побитово, и это расхождение воспроизводимо. Спецификация Web Audio описывает порядок обработки, но не требует от всех реализаций побитово одинакового результата: точность операций с плавающей точкой у разных процессоров и реализация аудиостека в разных браузерных движках немного расходятся в округлении и порядке действий. В одиночной операции расхождение ничтожно, но сигнал многократно проходит нелинейную обработку в компрессоре, а затем суммируются сотни отсчётов, и мизерная разница постепенно вырастает до различимого значения.

Принстонское исследование дало и практический масштаб: на восемнадцати с лишним тысячах устройств аудиоотпечаток принял свыше семисот разных значений, это примерно 5.4 бита различающей способности, и из-за ограниченной выборки это лишь нижняя граница. Для проверки связанности такого порядка достаточно, потому что настоящая ценность параметра не в том, насколько значение уникально, а в том, насколько оно стабильно: на одной машине сто обновлений страницы не сдвигают результат ни на шаг, но смена компьютера или браузерного движка мгновенно меняет его. Сигнал без разрешений, который не стирается и не меняется при обновлении страницы: любимое сырьё платформ для построения профилей устройств.

Как параметр согласуется с остальными: три принципа согласованности

С IP аудиоотпечаток не связан вообще, это чисто аппаратный сигнал. С Canvas и WebGL его роднит принадлежность к параметрам по результату рендеринга: сайт даёт браузеру фиксированную вычислительную задачу и ждёт, что реальное устройство посчитает её на месте. Качество настройки окружения проверяют по трём пунктам:

  • Стабильность внутри окружения: одинаковый результат при каждом рендеринге служит условием признания, что перед вами «нормальное устройство». Скачки значения говорят лишь о том, что параметры трогали руками, и только вызывают подозрения.
  • Различия между окружениями: когда десять окружений отдают один и тот же аудиоотпечаток, вы собственноручно рисуете круг на графе связей. Обратная крайность, стремление «вытащить каждый параметр на максимум», тоже ведёт не туда; риски рандомизации детально разобраны в статье Почему рандомизация отпечатка небезопасна.
  • Соответствие браузерному движку: аудиостек реализован внутри движка, и значение меняется вместе с движком и его версией. Заявленные в окружении UA и система должны совпадать с фактическим движком; после крупного обновления браузера значение обновится само, вмешиваться вручную не нужно.

Все три принципа укладываются в одну фразу: аудиоотпечаток должен выглядеть «как у настоящей машины», а не «лучше всех». MostMate закрепил эту логику в четырёх принципах дизайна; целиком они описаны в статье Четыре принципа дизайна MostMate, здесь же речь только об аудиопараметре.

Как проверить свой аудиоотпечаток: два сравнения вскрывают проблему

Расширения не понадобятся: один сайт-детектор и пара обновлений страницы.

Шаг 1: откройте любой сайт-детектор и найдите пункт аудиоотпечатка. BrowserScan и Iphey выносят его отдельной строкой; как читать доверительный балл Iphey, по шагам показано в практическом разборе Практика проверки в Iphey, пользуйтесь ими в паре.

Шаг 2: обновите страницу в одном окружении два-три раза и следите за числом. Неизменность значения считается зачётной; если число меняется при каждом обновлении, аудиопараметр окружения переведён в режим пересчёта, и вы буквально вещаете платформе: «этим устройством управляют».

Шаг 3: замерьте второе окружение и сравните два значения. Аудиоотпечатки разных окружений обязаны различаться; полное совпадение служит поводом вернуться и проверить, не переиспользуется ли один шаблон отпечатка, ведь повторное использование шаблона остаётся самым незаметным источником связывания аккаунтов.

Сравнение результатов двух окружений

Как настроить AudioContext в MostMate: «Реалистичный» против «Случайного»

В форме создания окружения MostMate выносит AudioContext отдельным пунктом в область настроек отпечатка и предлагает два режима: «Реалистичный» и «Случайный», а панель предпросмотра отпечатка справа в реальном времени показывает текущее значение, итог виден ещё до сохранения. Выбор между режимами прямолинеен: для повседневного основного окружения берите «Реалистичный», значение считается на вашей машине, стабильно по своей природе и точно ложится в принцип стабильности внутри окружения; при массовом создании группы окружений берите «Случайный», каждое окружение получит собственное значение, отличное от соседних и стабильное внутри, как того требует принцип различий между окружениями.

Пользовательского режима с ручным вводом для аудиопараметра не предусмотрено, и в самом этом решении есть смысл: ценность аудиоотпечатка в его стабильности, а собранное вручную фиксированное значение её лишь обесценивает. Выбирая между «Реалистичным» и «Случайным», думайте о том, как создаются эти окружения, а не подгоняйте каждый параметр по отдельности; родственные Canvas, изображения WebGL и ClientRects оцениваются по той же логике, а разделение труда внутри всей системы описано на странице Что такое MostMate.

Область настроек отпечатка в антидетект-браузере MostMate

Частые вопросы

Нужны ли аудиоотпечатку разрешения на микрофон или колонки?

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

Спасёт ли от аудиоотпечатка очистка Cookie или режим инкогнито?

Нет. Cookie хранятся локально, и их можно стереть, тогда как аудиоотпечаток каждый раз вычисляет само устройство; это два полностью независимых механизма, и очистка кеша на него не действует.

Не безопаснее ли отключить AudioContext или зафиксировать одно значение?

Ровно наоборот. Аудиовычисления без проблем выполняет подавляющее большинство обычных браузеров, поэтому и «отключённый», и «одинаковый у всех» AudioContext сами по себе становятся бросающейся в глаза особенностью, которую вычислить проще, чем обычное значение.

Когда аудиоотпечаток меняется?

При смене устройства, смене браузерного движка или крупном обновлении браузера значение меняется, и это естественная эволюция настоящей машины; в повседневной работе одно окружение должно долго держать значение, а частые изменения как раз служат сигналом неполадки.

Заключение

Логику аудиоотпечатка можно сжать до одной фразы: сайту не нужен звук, чтобы измерить устройство, потому что каждая машина считает со своими устойчивыми и едва заметными особенностями. С этим ключом многое встаёт на места: почему тишина его не останавливает, почему параметры «на максимум» опасны, почему значения массовых окружений обязаны различаться. MostMate сводит подобные параметры к режимам «Реалистичный» и «Случайный» и показывает результат прямо в панели предпросмотра. Если хотите лично проверить аудиоотпечаток своих окружений, скачайте MostMate и создайте два окружения в бесплатной версии, чтобы сравнить значения: большинство пробелов в понимании закрывается за один заход.

MOSTMATE

Безопасное управление аккаунтами — это просто

Начните с первого аккаунта и выстройте с MostMate более безопасную, умную и эффективную работу с несколькими аккаунтами.

  • Независимые профили. Согласованные цифровые идентичности.
  • ИИ-автоматизация · Состояние аккаунтов · Командная работа
Скачать MostMate