Що таке відбиток AudioContext? Як аудіовідбиток розпізнає середовище браузера
Головний висновок: аудіовідбиток обходиться без мікрофона і без звуку: браузер у фоновому режимі обчислює фіксовану аудіодоріжку в пам'яті, а дрібні відмінності в результатах цих обчислень стають підписом пристрою. Це відбиток за результатом рендерингу, як Canvas і WebGL: IP не впливає, кеш не стирає, значення визначають обладнання та рушій браузера. Тим, хто веде кілька акаунтів, достатньо двох критеріїв: в межах одного середовища значення має роками лишатися сталим, а в різних середовищах обов'язково відрізнятися. Налаштування AudioContext у MostMate має режими «Реалістичний» і «Випадковий», обирайте за цими двома критеріями.
«Вимкну колонки і забороню мікрофон, тоді сайти мене не почують». Саме так виглядає найпоширеніше непорозуміння щодо аудіовідбитка. Насправді діє зворотне: у цій перевірці звук не записується і не відтворюється жодного разу. Ще 2016 року дослідники Принстонського університету внесли його до офіційних підсумків вимірювань на мільйоні сайтів, і відтоді він став обов'язковим пунктом популярних перевірочних скриптів: жодного дозволу, робота за мілісекунди, в режимі інкогніто все функціонує як завжди. MostMate належить до антидетект-браузерів: продукт готує для кожного акаунта власне середовище браузера, а аудіовідбиток якраз із параметрів, які такі продукти опрацьовують. У статті чотири питання: що бачить сайт, чому це число стабільне, як параметр узгоджується з рештою та як його налаштувати в антидетект-браузері.
Що бачить сайт: доріжка, яку ніхто не програвав, і одне число у відповідь
Сайт отримує підсумок у вигляді числа з плаваючою комою: ані звуку, ані моделі пристрою. Популярні перевірочні скрипти (орієнтиром слугує реалізація в FingerprintJS, яку переймають чимало відкритих бібліотек) діють за незмінною схемою з п'яти кроків:
- створюється офлайн-аудіоконтекст (OfflineAudioContext, документація MDN): один канал, частота дискретизації 44100 Гц, близько 5000 семплів, тобто приблизно 113 мілісекунд аудіо; гучномовці на жодному етапі не залучені;
- осцилятор генерує трикутну хвилю на фіксованих 10000 Гц, тож вхідний сигнал щоразу однаковий;
- сигнал надходить до динамічного компресора (DynamicsCompressorNode) з навмисно жорсткими налаштуваннями (поріг -50 дБ, коліно 40, ступінь стиснення 12): обчислення спеціально виштовхуються в нелінійну зону, де відмінності між пристроями підсилюються;
- викликається startRendering, і рендеринг мовчки завершується в пам'яті, без жодного чутного звуку;
- беруться останні близько 500 семплів вихідного буфера, сумуються їхні абсолютні значення, і виходить число на кшталт 124.0434.
Це число й є аудіовідбитком. Обчислення завершується до відтворення, тому результат байдужий ні до системного беззвуку, ні до відсутніх колонок; до записувальних пристроїв воно теж не звертається, тож про дозвіл для мікрофона мови немає. У загальних оглядах відбитків браузера такі параметри згадують одним рядком, а окрема стаття має сенс через особливе походження значення: воно народжується з обчислювальної похибки, і саме ця похибка стабільна. Детальніше про це в наступному розділі.

Детектори зазвичай показують шістнадцятковий рядок, отриманий хешуванням цього сирого числа; довжина відрізняється від сайту до сайту. Порівнюючи, стежте лише за тим, чи стабільне значення в межах одного середовища і чи відрізняється воно між середовищами, сам формат рядка байдужий.
Чому одне число може слугувати відбитком: похибка виявляється стабільною
Механізм ось у чому: аудіообчислення на різних пристроях не збігаються побітно, і ця розбіжність відтворювана. Специфікація 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.

Часті запитання
Чи потрібні аудіовідбитку дозволи на мікрофон або колонки?
Ні. Уся доріжка рендериться офлайн у пам'яті, ані гучномовці, ані записувальні пристрої не залучені, тож значення збирають навіть беззвучні машини зовсім без аудіообладнання.
Чи рятує від аудіовідбитка очищення Cookie чи режим інкогніто?
Ні. Cookie зберігаються локально, і їх можна стерти, тоді як аудіовідбиток щоразу обчислює сам пристрій; це два цілком окремі механізми, і очищення кешу на нього не впливає.
Чи не безпечніше вимкнути AudioContext або зафіксувати одне значення?
Усе навпаки. Аудіообчислення без труднощів виконує переважна більшість звичайних браузерів, тож і «вимкнений», і «однаковий у всіх» AudioContext самі собою стають помітною рисою, яку вирахувати легше, ніж звичайне значення.
Коли аудіовідбиток змінюється?
Зміна пристрою, зміна рушія браузера чи велике оновлення браузера змінюють значення, і це природна еволюція справжньої машини; в одному середовищі за повсякденного користування значення має лишатися сталим довго, а часті зміни якраз є тривожним сигналом.
Висновок
Логіку аудіовідбитка можна стиснути до одного речення: сайту не потрібен звук, щоб виміряти пристрій, бо кожна машина рахує з усталеними й ледь помітними відмінностями. З цим ключем багато звичних практик перестає дивувати: чому тиша його не зупиняє, чому параметри «на максимум» небезпечні, чому значення пакетних середовищ мають відрізнятися. MostMate зводить такі параметри до режимів «Реалістичний» і «Випадковий» і показує результат одразу в панелі попереднього перегляду. Якщо хочете власноруч перевірити аудіовідбиток своїх середовищ, завантажте MostMate і створіть два середовища у безкоштовній версії, щоб порівняти значення: більшість прогалин у розумінні закривається за один раз.
MOSTMATE
Безпечне керування кількома обліковими записами — це просто
Почніть із першого облікового запису й побудуйте з MostMate безпечнішу, розумнішу та ефективнішу роботу з кількома обліковими записами.
- Незалежні профілі. Узгоджені ідентичності.
- ШІ-автоматизація · Стан облікових записів · Командні операції



