1. Що таке AudioContext у відбитках браузера
AudioContext є частиною Web Audio API, що пропонує граф обробки сигналів для керування джерелами аудіо, фільтрами та призначеннями всередині браузера. Хоча він не такий візуальний чи часто згадуваний, як відбитки Canvas або WebGL, він може бути прихованим, але сильним ідентифікатором на програмному рівні.
Системи відбитків експлуатують конвеєри відтворення аудіо, такі як:
- Кількість каналів і можливості пристрою виведення аудіо
- Розбіжності в частоті дискретизації та точності під час відтворення
- Поведінка затримки обробки аудіо
- Чи підтримується або блокується ScriptProcessorNode чи AudioWorklet
- Властивості налагодження, такі як
audioContext.listener
,currentTime
таbaseLatency
З мінімальною взаємодією з користувачем або запитами на дозвіл, відбиток AudioContext важко відключити і може бути синтезований непомітно, що робить його популярною мішенню в пасивних системах розпізнавання пристроїв.
2. Як платформи виявляють відбитки AudioContext
Найбільш просунуті платформи (особливо ті, що орієнтовані на водяні знаки аудіо, згортку аудіо або характеристики DSP) можуть використовувати AudioContext таким чином, щоб вимірювати внутрішні варіації браузера та аудіо-движка.
Приклад фрагмента виявлення:
const audioCtx = new AudioContext();
const oscillator = audioCtx.createOscillator();
const listener = audioCtx.listener;
const dest = audioCtx.destination;
console.log(listener.forwardX.value, listener.forwardY.value, listener.forwardZ.value);
console.log({
sampleRate: audioCtx.sampleRate,
baseLatency: audioCtx.baseLatency,
state: audioCtx.state,
outputChannelCount: dest.maxChannelCount,
});
Що може бути відбитком:
Властивість аудіо | Використання у відстеженні |
---|---|
Частота дискретизації | Може виявляти налаштування за замовчуванням ОС/macOS/Windows |
Підтримка кількості каналів | Визначення можливостей пристрою |
Простір Audio Listener | Приховані стерео/3D орієнтаційні патерни |
Сигнатури ядра DSP | Особливо в мережах згортки |
Планування Web Audio | Події, такі як oncomplete + затримки, є показовими |
Деякі платформи навіть відтворюють синтетичні форми хвилі, обчислюють швидкі перетворення Фур’є (FFT) за допомогою JavaScript або кодують тонкі аудіо артефакти (наприклад, розбіжності відсікання), щоб розрізняти реальні та емульовані браузери.
3. Як FlashID маскує відбитки AudioContext
Щоб запобігти випадковому відбитку браузерів за допомогою звуку, FlashID забезпечує повну віртуалізацію та спуфінг поведінки Web Audio API, включаючи:
Віртуалізація AudioContext Listener
- Спуфінг значень 3D орієнтації, таких як
forwardX
,positionX
,velocity
дляPannerNode
таAudioListener
- Спуфінг значень 3D орієнтації, таких як
Маскування частоти дискретизації та кількості каналів
- Маскування
audioContext.sampleRate
за допомогою конфігурованих реалістичних значень для настільних/мобільних пристроїв (44100
,48000
тощо) - Спуфінг максимальної кількості вихідних каналів (
destination.maxChannelCount
) незалежно від справжніх обмежень пристрою
- Маскування
Симуляція шляху DSP
- Кодування етнічно змішаного буферного виходу замість використання фактичних сигнальних графів
- Запобігання системам використовувати ScriptNode або комунікацію Worklet для виведення унікальності
Контроль стану та затримки
- Фіксація
audioContext.state
до очікуваних значень часу виконання (running/closed/suspended) - Маскування
baseLatency
для відображення стандартної поведінки за замовчуванням настільного або мобільного пристрою
- Фіксація
Послідовність контексту протягом сесії
- Аудіо відбитки прив’язані до ідентичності кожного профілю
- Запобігає дрейфу між послідовними сесіями відтворення, забезпечуючи однакові базові значення після багаторазових скидань двигуна
FlashID імітує це за допомогою внутрішнього проксі AudioBus та налаштовує підроблені вузли та ланцюжки маршрутизації, які підтримують правдоподібні відповіді Web Audio API, не розкриваючи реальні характеристики DSP пристрою.
Це гарантує, що платформи не можуть використовувати AudioContext окремо або в поєднанні з Canvas/WebGL для реконструкції різноманітності пристроїв або позначення підроблених середовищ — при цьому надаючи той самий інтерфейс, який очікував би ваш код.
Вам також може сподобатися