Identifikační systém TRACIO generuje stabilní identifikátor návštěvníka z více než 130 signálů prohlížeče. Identifikátor přetrvává napříč relacemi, v anonymním režimu, při změnách VPN i po vymazání cookies. Tato stránka vysvětluje kompletní identifikační pipeline.
Klient sbírá více než 130 samostatných signálů prohlížeče v 10 kategoriích. Každý signál zkoumá jiný aspekt prohlížeče a zařízení, od hardwarových charakteristik po chování při vykreslování.
| Skupina | Signály | Stabilita | Příklady |
|---|---|---|---|
| Hardware | 12 | Velmi vysoká | Rozlišení obrazovky, paměť zařízení, hardwarová paralelnost, podpora dotyku |
| Vykreslování | 9 | Vysoká | Canvas fingerprint (text + geometrie), WebGL renderer, zpracování zvuku |
| Písma | 5 | Vysoká | Dostupná systémová písma (testováno 69 rodin), nastavení písem, vykreslení MathML |
| Platforma | 25 | Střední | User-Agent, vlastnosti navigatoru, časové pásmo, jazyk, dodavatel |
| CSS Engine | 10 | Střední | Odpovědi media query (barevné schéma, HDR, omezený pohyb, vynucené barvy) |
| Úložiště | 10 | Střední | Podpora cookies, localStorage, sessionStorage, kvóta úložiště |
| WebGL | 9 | Vysoká | Dodavatel GPU, renderer (nemaskovaný), přesnost shaderu, podpora rozšíření |
| Síť | 3 | Nízká | RTT připojení, TURN probe, verze aplikace |
| Bot indikátory | 15 | Nevztahuje se | Příznak webdriver, automatizační frameworky, délka eval, headless markery |
| Vlastní | 14 | Proměnlivá | Math fingerprint, funkce WASM, detekce architektury |
Ne všechny signály jsou pro identifikaci stejně užitečné. Signály se klasifikují podle stability:
Úroveň 1 (Zmrazená): Hardwarové a vykreslovací signály, které se téměř nikdy nemění. Canvas fingerprint, WebGL renderer, audio fingerprint, parametry GPU, výčet písem, matematické operace, byte architektury.
Úroveň 2 (Částečně stabilní): Signály, které se mění s aktualizacemi prohlížeče nebo změnami konfigurace. User-Agent, Client Hints, pluginy, CSS media queries, možnosti úložiště.
Úroveň 3 (Proměnlivá): Signály, které se často mění. Rozlišení obrazovky (změny monitoru), časové pásmo (cestování), jazyková nastavení, vlastnosti připojení.
ID návštěvníka se počítá pomocí třívrstvého hashovacího systému, který vyvažuje stabilitu s rozšiřitelností:
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base62Úroveň 1 využívá výhradně zmrazené signály, které jsou vlastní hardwaru a vykreslovacímu enginu. Tyto signály se mění pouze tehdy, když uživatel přejde na jiné fyzické zařízení nebo provede zásadní hardwarové změny.
Zahrnuté signály: Hash canvas fingerprintu, WebGL renderer (nemaskovaný), WebGL dodavatel (nemaskovaný), audio fingerprint, hash výčtu písem, hash parametrů WebGL, hash matematických operací, byte architektury (ARM vs. x86).
Algoritmus:
key1=value1|key2=value2|... (klíče seřazené abecedně)Úroveň 1 je záměrně zmrazená. Do úrovně 1 se nikdy nepřidávají nové signály, což zajišťuje, že jádro identity zůstává stabilní i po aktualizacích serveru.
Úroveň 2 zachycuje prostředí prohlížeče a operačního systému. Tyto signály se mění, když uživatel aktualizuje prohlížeč, nainstaluje rozšíření nebo změní systémová nastavení.
Zahrnuté signály: Data User-Agent, Client Hints (značky, platforma, architektura), vlastnosti navigatoru (dodavatel, platforma, jazyky), seznam pluginů, barevná hloubka obrazovky, paměť zařízení, hardwarová paralelnost.
Úroveň 3 zachycuje proměnlivé signály, které se mohou mezi relacemi měnit. Používají se pro hodnocení spolehlivosti a fuzzy párování, ale neovlivňují jádro identity.
Zahrnuté signály: Rozlišení obrazovky, časové pásmo, jazyk, DOM blockery, možnosti úložiště, odpovědi CSS media query, vlastnosti připojení.
Každá úroveň se hashuje pomocí MurmurHash3-x64-128, rychlé nekryptografické hashovací funkce, která produkuje 128bitový výstup. Algoritmus:
MurmurHash3 poskytuje vynikající distribuci (každý bit vstupu ovlivňuje každý bit výstupu) a je dostatečně rychlý pro výpočet v reálném čase. Není kryptograficky bezpečný, což však pro hashování fingerprintů není potřeba.
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"Skóre spolehlivosti (0.0 až 1.0) vyjadřuje, jak jistý si systém je identifikací návštěvníka:
Když se cookie _vid_t shoduje se známým návštěvníkem, spolehlivost se nastaví na 1.0. Cookie obsahuje UID návštěvníka, které server validuje proti svým záznamům. Toto je nejrychlejší a nejspolehlivější cesta identifikace.
Noví návštěvníci bez předchozího záznamu obdrží skóre spolehlivosti 0.90. Neexistuje riziko chybného spárování, protože nejsou žádné existující záznamy pro porovnání.
Pro vracející se návštěvníky bez shody cookie počítá systém spolehlivost z:
Vážení podle frekvence signálu (IDF): Signály, které jsou napříč globální populací jedinečnější, získávají vyšší váhu. Vzácný WebGL renderer je více identifikující než běžné rozlišení obrazovky.
Fuzzy párování: Systém porovnává aktuální fingerprint s uloženými fingerprinty pomocí Hammingovy vzdálenosti na úrovni bitů. Signály se seskupují podle úrovní a skóre shody každé úrovně se váží nezávisle.
Historická konzistence: Pokud jsou signály návštěvníka stabilní napříč více návštěvami, spolehlivost roste. Pokud signály často kolísají, spolehlivost klesá.
| Scénář | Typické skóre | Vysvětlení |
|---|---|---|
| Shoda cookie | 1.000 | UID cookie _vid_t ověřeno na straně serveru |
| První návštěva | 0.900 | Žádné předchozí záznamy k porovnání |
| Silná shoda fingerprintu | 0.990–0.999 | Všechny signály úrovně 1 se shodují, většina úrovně 2 |
| Částečná shoda (aktualizace prohlížeče) | 0.950–0.989 | Úroveň 1 se shoduje, úroveň 2 změněna (nový UA) |
| Slabá shoda (zásadní změny) | 0.850–0.949 | Některé signály úrovně 1 se změnily |
| Nejednoznačná | 0.500–0.849 | Více možných shod v databázi |
TRACIO používá first-party cookie (_vid_t) k udržení identity návštěvníka napříč relacemi:
_vid_tSameSite=Lax a Secure při HTTPS (nikoli HttpOnly — agent jej čte na straně klienta)Cookie se vydává jak na straně serveru (přes odpovědní hlavičku Set-Cookie), tak na straně klienta agentem, a UID se navíc zrcadlí do localStorage jako záloha pro případ, že jsou cookies blokovány.
Server se pokouší nastavit cookie na postupně širších rozsazích domény:
app.example.com → example.com → comPoužije se nejširší doména, na které se cookie úspěšně nastaví. Tím je zajištěno, že cookie přetrvává napříč subdoménami.
TRACIO dokáže identifikovat stejnou osobu napříč různými prohlížeči na stejném zařízení, když signály úrovně 1 produkují shodné hashe. Protože úroveň 1 se opírá o hardwarové a vykreslovací charakteristiky (canvas, WebGL, audio, písma), jsou tyto signály často identické mezi prohlížeči založenými na Chromiu na stejném stroji a jejich shoda klesá napříč různými enginy (Chromium vs. Firefox vs. Safari). Spárování návštěvníka z desktopu s návštěvníkem z mobilu se neočekává — hardwarové a vykreslovací plochy se liší.
Párování napříč prohlížeči je ze své podstaty operace s nižší spolehlivostí a v hodnocení se s ním tak zachází.