← Wróć do bloga

Czym jest głosowy fingerprint przeglądarki? Jak lista głosów SpeechSynthesis zdradza cechy środowiska

Sedno sprawy: głosowy fingerprint odczytuje, jakie głosy syntezowane są zainstalowane na urządzeniu. To spis konfiguracji powiązany z systemem operacyjnym, a zmiana proxy czy wyczyszczenie cookies nic go nie rusza. Przy sprawdzaniu spójności sygnałów w środowiskach wielokontowych to pozycja, którą łatwo przeoczyć zaraz po Canvas i AudioContext.

Proxy zmienione, cookies wyczyszczone, a kontrole środowiska i tak wykazują rozbieżności? Przy audycie kont odpowiedź często kryje się w parametrach warstwy urządzenia. Głos to pozycja, którą przeocza się najłatwiej. Strona nie potrzebuje dostępu do mikrofonu, nie musi odtworzyć żadnego dźwięku. Wystarczy jedno wywołanie interfejsu, by odebrać spis powiązany z konfiguracją systemu.

O zawartości tego spisu decydują system operacyjny i pakiety językowe, a spis trzyma się urządzenia. Zmiana IP nie robi na nim wrażenia. MostMate to przeglądarka anty-detect stworzona właśnie z myślą o takich problemach: każde konto dostaje własne, odseparowane środowisko przeglądarki. W zakresie zarządzania mieszczą się też parametry warstwy urządzenia, w tym głos.

Czym jest głosowy fingerprint i czym różni się od voiceprintu z nagrania?

Fingerprint głosowy to konfiguracja syntezy mowy, nie mikrofon.

Rozdzielmy najpierw trzy pojęcia. Synteza mowy to zdolność przeglądarki do zamiany tekstu na dźwięk, czyli system stojący za czytaniem stron na głos. Lista głosów to opcje dźwiękowe, jakimi ta funkcja dysponuje w danym środowisku. Zgodnie z dokumentacją MDN wywołanie getVoices() zwraca listę obiektów głosów dostępnych na urządzeniu. Głosowy fingerprint to natomiast praktyka, w której strona traktuje cechy tej listy jako jedną z grup sygnałów identyfikujących środowisko. Każde pojęcie jest konkretne bardziej od poprzedniego.

Najwyraźniej różnicę widać na tle rozpoznawania voiceprintu. Tam potrzebne jest nagranie, zgoda użytkownika i faktycznie wydany dźwięk. Głosowy fingerprint od początku do końca pozostaje bezgłośny i nie wymaga żadnych uprawnień. Strona odczytuje menu, a nie sam głos. Różnica tkwi właśnie tu i stąd bierze się łatwość przeoczenia: żadnego komunikatu, żadnej świadomości, a dane już trafiły na zewnątrz.

Jak SpeechSynthesis przekazuje stronie listę głosów?

Pełną listę uzyskasz jednym wywołaniem speechSynthesis.getVoices().

Każdy obiekt głosu ma pięć pól. Ich znaczenie pokazuje tabela:

PoleZnaczeniePrzykładowe wartości
namenazwa głosuMicrosoft David, Samantha
langznacznik językaen-US, zh-CN
localServicesynteza lokalna czy usługa w chmurzetrue: lokalnie, false: online
defaultczy głos jest domyślnynajwyżej jeden na język
voiceURIidentyfikator usługi głosowejmoże zawierać wewnętrzne oznaczenia systemu

Sama nazwa to przeważnie tylko imię, natomiast voiceURI niesie informacje z niższych warstw. Firefox na macOS zwraca na przykład wartości w postaci urn:moz-tts:osx: plus ciągu wewnętrznych identyfikatorów systemu. Prywatne rejestry głosowe systemu w ten sposób opuszczają maszynę przez publiczny interfejs.

Na wynik odczytu wpływa jeszcze jeden szczegół. W Chrome, Edge i Firefox pierwsze wywołanie często zwraca pustą tablicę, a dane wypełniają się dopiero po zdarzeniu voiceschanged. Sam moment ładowania to również sygnał: jedna przeglądarka odpala zdarzenie od razu, inna z opóźnieniem, a jeszcze inna nie wyśle go wcale, bo ma już wszystko wczytane. Ten interfejs wciąż figuruje jako szkic w specyfikacji Web Speech API, więc szczegóły zachowania rozstrzyga implementacja konkretnej przeglądarki.

Jakie cztery grupy cech środowiska zdradza lista głosów?

Pojedyncza nazwa głosu jeszcze o niczym nie świadczy. O rozpoznawalności decyduje dopiero układ całej listy.

Grupa pierwsza: ślady systemu operacyjnego i urządzenia. Głosy dostarcza systemowa usługa mowy. Na Windowsie królują nazwy typu Microsoft David czy Zira, na macOS Samantha i Daniel, a na telefonach z Androidem zestaw usług Google. Jeśli na linuksowym pulpicie usługa mowy nie została zainstalowana, lista bywa po prostu pusta.

Grupa druga: ustawienia językowe i regionalne. Kombinacja znaczników lang odzwierciedla, jakie pakiety językowe trafiły kiedykolwiek na tę maszynę. Lista z głosami japońskimi, arabskimi i hindi obok siebie wprost raportuje stronie wielojęzyczny dorobek urządzenia. Niektórzy użytkownicy sami by tego nie pamiętali.

Grupa trzecia: różnice między przeglądarkami. Chrome dokłada do głosów systemowych ofertę z chmury Google. Pole localService pozwala odróżnić syntezę lokalną od usługi sieciowej. Na tym samym komputerze Chrome i Firefox mogą zwrócić listy o odmiennej budowie.

Grupa czwarta: wartości domyślne i całościowy układ. Liczba głosów, ich kolejność, znaczniki językowe i głos domyślny, złożone w jedno, tworzą sygnał o sporej rozpoznawalności. Dodajmy granicę: to tylko jedna z poszlak. Strona musi skombinować wiele klas sygnałów, by wyciągać wnioski. Sama lista głosów nie wskaże konkretnej osoby.

Cztery grupy cech środowiska, które strona odczytuje z listy głosów

Czym głosowy fingerprint różni się od fingerprintów AudioContext i Canvas?

Metody te zwykle wymienia się razem, ale każda przygląda się czemuś innemu. Najpierw zestawienie:

Metoda wykrywaniaObserwowany obiektPrzebieg procesu
Głosowy fingerprint SpeechSynthesislista dostępnych głosów i ich polaodczyt konfiguracji, w pełni bezgłośny
Fingerprint AudioContextwyniki obliczeń przetwarzania audiowykonanie obliczeń, porównanie wyników
Fingerprint Canvascechy wyjścia renderowania grafikirenderowanie obrazu, porównanie pikseli
Fingerprint fontówzainstalowane czcionki i ich renderowanietestowanie dostępności czcionek

Wyliczanie listy głosów i renderowanie dźwięku to dwie odrębne drogi. Jedna czyta statyczny spis, druga liczy dynamiczny wynik. Nie sposób ich mylić. Artykuł o fingerprincie AudioContext omawia zasady i ustawienia drugiej drogi, a fingerprint fontów stoi po tej samej stronie co lista głosów: oba podejścia to statyczne spisy, czyli bezpośrednie odczyty tego, co urządzenie ma zainstalowane.

Jak sprawdzić, które informacje o głosach ujawnia przeglądarka?

Do sprawdzenia wystarczą narzędzia deweloperskie. W pięć minut zobaczysz dokładnie ten spis, który widzi strona.

  1. Otwórz konsolę (Console) w narzędziach deweloperskich, wpisz speechSynthesis.getVoices(), zatwierdź Enterem i przejrzyj wynik.
  2. Rozwiń obiekty głosów na liście i zanotuj wartości pól name, lang, localService oraz voiceURI.
  3. Odśwież stronę i sprawdź ponownie od razu, porównując, czy pierwsze zapytanie zwróciło pustą tablicę. Tak potwierdzisz asynchroniczne ładowanie.
  4. Powtórz czynność na innym komputerze albo pod innym systemem i oceń, czy różnice pochodzą z systemowej usługi mowy, czy z implementacji przeglądarki.
  5. Sprawdź listę jeszcze raz na proxy. Zwykle się nie zmienia, co wprost potwierdza, że mamy do czynienia z sygnałem warstwy urządzenia.

Interpretując wynik, zachowaj dwie ostrożności. Pusta lista nie dowodzi braku głosowego fingerprintu: pustka sama w sobie jest informacją. Linux bez usługi mowy czy niektóre środowiska automatyzacji zwracają przeważnie właśnie pustą tablicę. Długa lista z kolei nie czyni Cię łatwiejszym do rozpoznania. Oceniaj, czy całe środowisko trzyma się kupy, a nie licz pojedyncze parametry.

Jak MostMate zarządza głosowymi cechami środowiska?

Lista głosów to parametr warstwy urządzenia, więc przeglądarka anty-detect nie zostawia jej przypadkowi, lecz włącza do konfiguracji środowiska.

W MostMate, przy tworzeniu lub edycji środowiska, w sekcji „Ustawienia fingerprintu" (指纹设置) parametr SpeechVoices figuruje osobno, obok Canvas, AudioContext, ClientRects i obrazu WebGL. Do wyboru są dwa tryby, Real i Noise, przy czym Noise odpowiada trybowi szumu.

Po wybraniu Noise w panelu podglądu fingerprintu po prawej stronie, w wierszu SpeechVoices pojawi się wartość oznaczona sześcioznakowym kodem. Canvas i AudioContext mają odrębne kody, nieprzenoszone między sobą. Kod identyfikuje konfigurację szumu, a faktyczną wartość hasha obejrzysz dopiero na stronie detekcji otwieranej z poziomu środowiska.

Parametr SpeechVoices w ustawieniach fingerprintu MostMate

Parametrów głosowych nie stroi się w izolacji. System operacyjny, język i strefa czasowa środowiska przesądzają o tym, jak lista głosów powinna wyglądać. Środowisko Windows z zestawem głosów macOS to jaskrawa sprzeczność. Kolejność działań sugerujemy taką: najpierw ustal system i proxy, dopiero potem weryfikuj parametry warstwy urządzenia, głosowe włącznie. To pewniejsza droga niż testowanie wszystkiego po trochu na oślep.

Gdy zależy Ci na kontroli pozycja po pozycji, skorzystaj z listy ręcznej konfiguracji fingerprintu na oficjalnej stronie. Chcesz skrócić konfigurację? Przy tworzeniu środowiska zastosuj konfigurację rekomendowaną, która obejmuje ten zestaw parametrów, a później doszlifuj wybrane pozycje. Wspomnijmy też o granicach: przeglądarka anty-detect zarządza konfiguracją środowiska, nie gwarantuje jednak, że strona nie rozpozna środowiska, ani że konto nie spotka się z weryfikacją platformy. Konto i tak musi trzymać się zasad platformy.

Najczęstsze pytania

Czy głosowy fingerprint nagrywa mój głos?

Nie. Cały proces odczytu omija mikrofon i nie odtwarza żadnego dźwięku. Strona otrzymuje wyłącznie spis konfiguracji systemowej usługi mowy. Rozpoznawanie voiceprintu wymaga zgody na nagrywanie, głosowy fingerprint nie potrzebuje żadnych uprawnień.

Dlaczego listy głosów na dwóch komputerach się różnią?

O składzie listy decydują system operacyjny, pakiety językowe i usługi głosowe. Windows i macOS mają inne głosy wbudowane, zainstalowane pakiety językowe też bywają różne, a chmurowe głosy nakładane przez przeglądarkę dokładają kolejną warstwę odmienności. Listy nie mają prawa się zgadzać.

Pusta lista głosów oznacza brak głosowego fingerprintu?

Pusta lista sama w sobie jest informacją. Linux bez usługi mowy i niektóre środowiska automatyzacji często zwracają pustą tablicę. Dla strony to cecha odbiegająca od normy. Nie licz na to, że działa jak niewidzialność.

Czy głosowy fingerprint i fingerprint AudioContext to to samo?

Nie. Głosowy fingerprint czyta statyczny spis konfiguracji, a AudioContext liczy dynamiczny wynik przetwarzania dźwięku. Ścieżki wykrywania się różnią, więc przy audycie środowiska sprawdź je osobno.

Czy MostMate pozwala zmodyfikować samą listę głosów SpeechSynthesis?

W produkcie odpowiada za to parametr SpeechVoices w ustawieniach fingerprintu, z dwoma trybami: Real i Noise. Dostępny poziom szczegółowości zależy od interfejsu klienta. Po konfiguracji otwórz stronę detekcji środowiska i porównaj faktycznie ujawnianą listę.

Podsumowanie

Istota głosowego fingerprintu mieści się w jednym zdaniu: strona dowiaduje się, co to urządzenie ma zainstalowane. Bez nagrywania, bez uprawnień, a mimo to wszystko podąża za systemem operacyjnym. Zmiana IP nie robi żadnej różnicy. Stąd wiele powszechnych nawyków zaczyna mieć sens: samo czyszczenie cookies, sama podmiana proxy. Gdy środowisko się nie zgadza, wyrównać trzeba także parametry warstwy urządzenia.

Po stronie produktu MostMate umieszcza SpeechVoices w ustawieniach fingerprintu, obok Canvas i AudioContext. Do wyboru tryby Real i Noise. Pełny przegląd pozostałych funkcji znajdziesz na oficjalnej stronie MostMate.

Chcesz wiedzieć, co Twoje obecne środowisko ujawnia? Przejdź listę głosów krokami z piątej sekcji albo pobierz MostMate i ustaw środowisko porównawcze.

MOSTMATE

Bezpieczne zarządzanie wieloma kontami, bez komplikacji

Zacznij od pierwszego konta i z MostMate buduj bezpieczniejsze, inteligentniejsze i wydajniejsze operacje obejmujące wiele kont.

  • Niezależne profile. Spójne tożsamości.
  • Automatyzacja AI · Kondycja kont · Praca zespołowa
Pobierz MostMate