← Назад до блогу

Що таке голосовий відбиток браузера і як список голосів SpeechSynthesis видає характеристики середовища

Суть: голосовий відбиток зчитує перелік синтезованих голосів, установлених на пристрої. Це перелік налаштувань, який іде за операційною системою: ані зміна проксі, ані чистка Cookie його не змінюють. Коли звіряєте узгодженість сигналів між кількома акаунтами, це пункт, який часто пропускають після Canvas та AudioContext.

«Проксі змінено, Cookie очищено, а середовище все одно не збігається?» Коли розбираєтеся з акаунтами, відповідь часто лежить у параметрах на рівні пристрою. Голос серед них найлегше прогледіти. Сайту не потрібен доступ до мікрофона і не треба нічого відтворювати: достатньо одного виклику, щоб отримати перелік, прив'язаний до системних налаштувань.

Перелік визначають операційна система та мовні пакети, і він подорожує разом із пристроєм. IP змінився, а список на місці. MostMate створено саме для таких завдань: це антидетект-браузер, який готує кожному акаунту окреме середовище браузера. Параметри рівня пристрою теж під керуванням, і голос серед них.

Що таке голосовий відбиток і чим він відрізняється від розпізнавання за голосом

Матеріал голосового відбитка: конфігурація синтезу мовлення, а не голос, знятий мікрофоном.

Спершу розведемо три поняття. Синтез мовлення: здатність браузера перетворювати текст на звук, та сама, що стоїть за читанням сторінок уголос. Список голосів: варіанти звучання, доступні цій функції в поточному середовищі. За документацією MDN, виклик getVoices() повертає перелік об'єктів голосів, доступних на пристрої. Голосовий же відбиток виникає тоді, коли сайт сприймає ознаки цього списку як сигнал для розпізнавання середовища. Кожне наступне поняття конкретніше за попереднє.

Порівняння з розпізнаванням за голосом розставляє все на місця. Тому потрібні запис, дозвіл і те, щоб ви справді щось сказали. Голосовий відбиток працює беззвучно і не просить жодних дозволів. Сайт зчитує меню, а не звук. У цьому вся різниця, і вона ж пояснює, чому відбиток легко прогледіти: жодного спливаючого вікна, жодних відчуттів, а дані вже передано.

Як SpeechSynthesis віддає список голосів сайту?

Сайт зчитує список через speechSynthesis.getVoices(): один виклик дає повний перелік.

Кожен об'єкт голосу містить п'ять полів, їхні значення в таблиці:

ПолеЗначенняТипові приклади
nameназва голосуMicrosoft David, Samantha
langмовний тегen-US, zh-CN
localServiceлокальний синтез чи хмараtrue: локально, false: онлайн
defaultчи голос за замовчуваннямне більше одного на мову
voiceURIадреса служби синтезуможе містити системні ідентифікатори

За назвою зазвичай стоїть чиєсь просте ім'я, а нижчий рівень несе voiceURI. У Firefox на macOS значення виглядає як urn:moz-tts:osx: із внутрішнім системним ідентифікатором. Приватні реєстри голосів операційної системи ось так, через публічний інтерфейс, стають доступними стороннім.

Іще одна деталь впливає на результат. У Chrome, Edge та Firefox перший виклик часто повертає порожній масив: список заповнюється лише після події voiceschanged. Сам момент завантаження теж сигнал. Один браузер спрацьовує миттєво, інший із затримкою, третій уже не сповіщає, якщо все завантажено заздалегідь. У специфікації Web Speech API цей інтерфейс досі має статус чернетки, тому в деталях поведінки орієнтуйтеся на реалізацію конкретного браузера.

Які чотири типи ознак середовища видає список голосів?

Один голос нічого не доводить: розрізняльну силу має комбінація всього списку.

Перший тип: операційна система й пристрій. Голоси дає системна служба синтезу. У Windows це імена на кшталт Microsoft David чи Zira, на macOS типовими є Samantha та Daniel, на Android працює набір від Google. Якщо на Linux-десктопі служби немає, список нерідко порожній.

Другий тип: мовні й регіональні налаштування. Комбінація тегів lang показує, які мовні пакети стояли на машині. Список, де сусідять японська, арабська й гінді, фактично повідомляє сайту про багатомовний досвід. Про такий, який сам користувач може й не пригадати.

Третій тип: відмінності між браузерами. Chrome додає до системних голосів хмарні голоси Google. Поле localService дозволяє відділити локальний синтез від онлайн-служби. На одній машині Chrome і Firefox можуть повернути списки різного складу.

Четвертий тип: типові значення й загальна комбінація. Кількість, порядок, мовні теги та голос за замовчуванням разом дають сигнал із чималою розрізняльною силою. Одне застереження: це лише один із сигналів, і сайт робить висновок, зважуючи їх сукупно. За списком голосів конкретну людину не впізнати.

Схема чотирьох типів ознак середовища, які сайт зчитує зі списку голосів

Чим голосовий відбиток відрізняється від AudioContext і Canvas?

Їх часто згадують разом, але об'єкти спостереження зовсім різні. Спершу порівняння:

МетодОб'єкт спостереженняОсобливість процесу
Голосовий відбиток SpeechSynthesisсписок голосів і їхні полячитання конфігурації, беззвучно
Відбиток AudioContextрезультат обчислень обробки аудіовиконання обчислень, порівняння виходу
Відбиток Canvasознаки графічного рендерингурендеринг зображення, порівняння пікселів
Відбиток шрифтівшрифти системи та їх рендерингперевірка доступності шрифтів

Перелік голосів і рендеринг аудіо: два різні шляхи. Один зчитує статичний перелік, інший обчислює динамічний результат, і плутати їх не варто. Принципи та налаштування другого шляху розібрано в статті про відбиток AudioContext. Відбиток шрифтів належить до тієї ж статичної родини, що й список голосів: обидва просто зчитують, що встановлено на пристрої.

Як перевірити, які голосові дані віддає браузер?

Досить інструментів розробника: за п'ять хвилин матимете той самий перелік, що й сайт.

  1. Відкрийте Console в інструментах розробника, введіть speechSynthesis.getVoices() і натисніть Enter, щоб побачити відповідь.
  2. Розгорніть об'єкти голосів у списку та запишіть значення name, lang, localService і voiceURI.
  3. Одразу після оновлення сторінки запитайте ще раз: якщо перша відповідь була порожнім масивом, асинхронне завантаження підтверджено.
  4. Повторіть кроки на іншому комп'ютері або в іншій системі та подивіться, звідки різниця: від системної служби синтезу чи від реалізації браузера.
  5. Увімкніть проксі й перевірте знову. Список зазвичай не змінюється, і це наочно підтверджує, що сигнал лежить на рівні пристрою.

Тлумачачи результати, дотримуйтеся міри. Порожній список не означає відсутності відбитка: порожнеча сама по собі теж інформація. Linux без служби синтезу й частина автоматизованих середовищ часто повертають порожній масив. Довгий список теж не означає, що вас легше впізнати. Оцінюйте, чи узгоджене середовище загалом, а не рахуйте окремі параметри.

Як MostMate керує голосовими ознаками середовища?

Список голосів належить до параметрів рівня пристрою, тому антидетект-браузер вносить його в конфігурацію середовища, а не залишає напризволяще.

У MostMate, у налаштуваннях відбитків (指纹设置) під час створення або редагування середовища, SpeechVoices стоїть окремим параметром поруч із Canvas, AudioContext, ClientRects та WebGL-графікою. Всього два режими: Real і Noise, де Noise є режимом шуму.

Після вибору Noise рядок SpeechVoices на панелі попереднього перегляду праворуч покаже значення з шестизначним кодом. У Canvas та AudioContext коди свої, і вони не взаємозамінні. Код лише позначає шумову конфігурацію, а фактичний хеш, який видно назовні, дивіться на сторінці перевірки середовища.

Параметр SpeechVoices у налаштуваннях відбитків MostMate

Голос не налаштовують окремо від усього. Операційна система, мова та часовий пояс середовища визначають, яким має бути список голосів. Середовище Windows із набором голосів macOS: очевидна суперечність. Порядок дій: спершу зафіксуйте систему та проксі, потім звіряйте параметри рівня пристрою на кшталт голосів. Це надійніше, ніж навмане перебирати пункти.

Коли потрібен контроль над кожним пунктом, звіртеся з переліком ручних налаштувань відбитків на офіційному сайті. Щоб заощадити час, під час створення середовища візьміть рекомендовану конфігурацію, яка запакує всі ці параметри, а згодом перевірте вибірково. І про межі: антидетект-браузер керує конфігурацією середовища, але не гарантує, що сайт не розпізнає середовище, і не гарантує, що акаунт не спровокує перевірку з боку платформи. Правила платформи доводиться дотримуватися самому акаунту.

Часті запитання

Чи записує голосовий відбиток мій голос?

Ні. Під час читання мікрофон не задіяно й аудіо не відтворюється: сайт отримує лише перелік налаштувань системної служби синтезу. Розпізнаванню за голосом потрібен дозвіл на запис, а голосовому відбитку не потрібен жоден.

Чому списки голосів на двох комп'ютерах різні?

Голоси визначаються операційною системою, мовними пакетами та службою синтезу. Вбудовані голоси Windows і macOS не збігаються, набори мовних пакетів теж, а хмарні голоси, які додає браузер, у кожного свої. Списки природно не збігаються.

Якщо список голосів порожній, відбитка немає?

Порожній список теж сигнал: для сайту це аномалія, а не маскування.

Чи голосовий відбиток і відбиток AudioContext це одне й те саме?

Ні, це різні речі. Голосовий відбиток зчитує статичну конфігурацію, AudioContext обчислює динамічний результат обробки аудіо. Шляхи перевірки різні, тож під час діагностики середовища їх звіряють окремо.

Чи можна в MostMate змінити лише список голосів SpeechSynthesis?

У продукті це параметр SpeechVoices у налаштуваннях відбитків з режимами Real і Noise; рівень деталізації залежить від клієнта. Після зміни варто відкрити сторінку перевірки середовища і звірити список, який насправді видно назовні.

Підсумок

Суть голосового відбитка в тому, що сайт дізнається, що встановлено на цьому пристрої. Запису немає, дозволів не питають, а прив'язка до операційної системи нікуди не зникає. IP змінився? Список на місці. Тому багато звичних дій отримують пояснення: якщо чистити лише Cookie і міняти проксі, параметри рівня пристрою доведеться вирівнювати теж.

Зі свого боку MostMate ставить SpeechVoices в один ряд із Canvas та AudioContext у налаштуваннях відбитків. Режими все ті самі два: Real і Noise. З іншими можливостями продукту можна ознайомитися на сайті MostMate.

Хочете знати, що ваше середовище віддає прямо зараз: пройдіть кроки з п'ятого розділу й перевірте список голосів, а можна завантажити MostMate і створити середовище для порівняння.

MOSTMATE

Безпечне керування кількома обліковими записами — це просто

Почніть із першого облікового запису й побудуйте з MostMate безпечнішу, розумнішу та ефективнішу роботу з кількома обліковими записами.

  • Незалежні профілі. Узгоджені ідентичності.
  • ШІ-автоматизація · Стан облікових записів · Командні операції
Завантажити MostMate