TRACIO:s identifieringssystem genererar en stabil besökaridentifierare från över 130 webbläsarsignaler. Identifieraren består mellan sessioner, i inkognitoläge, vid VPN-byten och vid rensning av cookies. Den här sidan förklarar hela identifieringspipelinen.
Klienten samlar in över 130 olika webbläsarsignaler i 10 kategorier. Varje signal undersöker en annan aspekt av webbläsaren och enheten, från hårdvaruegenskaper till renderingsbeteende.
| Grupp | Signaler | Stabilitet | Exempel |
|---|---|---|---|
| Hårdvara | 12 | Mycket hög | Skärmupplösning, enhetsminne, hårdvaruparallellism, pekstöd |
| Rendering | 9 | Hög | Canvas-fingeravtryck (text + geometri), WebGL-renderare, ljudbearbetning |
| Teckensnitt | 5 | Hög | Tillgängliga systemteckensnitt (69 familjer testade), teckensnittsinställningar, MathML-rendering |
| Plattform | 25 | Medel | User-Agent, navigatoregenskaper, tidszon, språk, leverantör |
| CSS-motor | 10 | Medel | Media query-svar (färgschema, HDR, reducerad rörelse, framtvingade färger) |
| Lagring | 10 | Medel | Cookie-stöd, localStorage, sessionStorage, lagringskvot |
| WebGL | 9 | Hög | GPU-leverantör, renderare (avmaskad), shader-precision, tilläggsstöd |
| Nätverk | 3 | Låg | Anslutnings-RTT, TURN-sond, appversion |
| Bot-indikatorer | 15 | Ej tillämpligt | Webdriver-flagga, automatiseringsramverk, eval-längd, headless-markörer |
| Anpassad | 14 | Varierar | Math-fingeravtryck, WASM-funktioner, arkitekturdetektering |
Alla signaler är inte lika användbara för identifiering. Signaler klassificeras efter stabilitet:
Nivå 1 (Frusen): Hårdvaru- och renderingssignaler som nästan aldrig ändras. Canvas-fingeravtryck, WebGL-renderare, ljudfingeravtryck, GPU-parametrar, teckensnittsuppräkning, matematiska operationer, arkitekturbyte.
Nivå 2 (Halvstabil): Signaler som ändras vid webbläsaruppdateringar eller konfigurationsändringar. User-Agent, Client Hints, plugins, CSS-media queries, lagringsförmågor.
Nivå 3 (Volatil): Signaler som ändras ofta. Skärmupplösning (monitorbyten), tidszon (resor), språkinställningar, anslutningsegenskaper.
Besökar-ID:t beräknas med ett trenivåers hashningssystem som balanserar stabilitet med utökningsbarhet:
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base62Nivå 1 använder endast frusna signaler som är inneboende i hårdvaran och renderingsmotorn. Dessa signaler ändras endast när användaren byter till en annan fysisk enhet eller gör betydande hårdvaruändringar.
Inkluderade signaler: Canvas-fingeravtryckshash, WebGL-renderare (avmaskad), WebGL-leverantör (avmaskad), ljudfingeravtryck, teckensnittsuppräkningshash, WebGL-parameterhash, hash för matematiska operationer, arkitekturbyte (ARM vs x86).
Algoritm:
key1=value1|key2=value2|... (nycklar sorterade alfabetiskt)Nivå 1 är avsiktligt frusen. Nya signaler läggs aldrig till i nivå 1, vilket säkerställer att identitetskärnan förblir stabil över serveruppdateringar.
Nivå 2 fångar webbläsar- och OS-miljön. Dessa signaler ändras när användaren uppdaterar sin webbläsare, installerar tillägg eller ändrar systeminställningar.
Inkluderade signaler: User-Agent-data, Client Hints (varumärken, plattform, arkitektur), navigatoregenskaper (leverantör, plattform, språk), plugin-lista, skärmfärgdjup, enhetsminne, hårdvaruparallellism.
Nivå 3 fångar volatila signaler som kan ändras mellan sessioner. Dessa används för konfidenspoängsättning och fuzzy-matchning men påverkar inte kärnidentiteten.
Inkluderade signaler: Skärmupplösning, tidszon, språk, DOM-blockerare, lagringsförmågor, CSS-media query-svar, anslutningsegenskaper.
Varje nivå hashas med MurmurHash3-x64-128, en snabb, icke-kryptografisk hashfunktion som producerar 128-bitars utdata. Algoritmen:
MurmurHash3 ger utmärkt distribution (varje bit av indata påverkar varje bit av utdata) och är tillräckligt snabb för realtidsberäkning. Den är inte kryptografiskt säker, men det krävs inte för hashning av fingeravtryck.
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"Konfidenspoängen (0.0 till 1.0) representerar hur säkert systemet är på besökaridentifieringen:
När cookien _vid_t matchar en känd besökare sätts konfidensen till 1.0. Cookien innehåller besökarens UID, som servern validerar mot sina register. Detta är den snabbaste och mest tillförlitliga identifieringsvägen.
Nya besökare utan tidigare register får en konfidenspoäng på 0.90. Det finns ingen risk för felaktig matchning eftersom det inte finns några befintliga register att jämföra mot.
För återkommande besökare utan cookie-träff beräknar systemet konfidensen från:
Viktning efter signalfrekvens (IDF): Signaler som är mer unika över den globala populationen får högre vikt. En sällsynt WebGL-renderare är mer identifierande än en vanlig skärmupplösning.
Fuzzy-matchning: Systemet jämför det aktuella fingeravtrycket mot lagrade fingeravtryck med hjälp av Hamming-avstånd på bitnivå. Signaler grupperas efter nivå, och varje nivås matchningspoäng viktas oberoende.
Historisk konsekvens: Om en besökares signaler har varit stabila över flera besök ökar konfidensen. Om signalerna fluktuerar ofta minskar konfidensen.
| Scenario | Typisk poäng | Förklaring |
|---|---|---|
| Cookie-träff | 1.000 | _vid_t-cookiens UID verifierad på serversidan |
| Första besöket | 0.900 | Inga tidigare register att jämföra |
| Stark fingeravtrycksmatchning | 0.990–0.999 | Alla nivå 1-signaler matchar, de flesta nivå 2 matchar |
| Partiell matchning (webbläsaruppdatering) | 0.950–0.989 | Nivå 1 matchar, nivå 2 ändrad (ny UA) |
| Svag matchning (betydande ändringar) | 0.850–0.949 | Vissa nivå 1-signaler har ändrats |
| Tvetydig | 0.500–0.849 | Flera möjliga matchningar i databasen |
TRACIO använder en förstapartscookie (_vid_t) för att upprätthålla besökaridentiteten över sessioner:
_vid_tSameSite=Lax, och Secure på HTTPS (inte HttpOnly — agenten läser den på klientsidan)Cookien utfärdas både på serversidan (via svarshuvudet Set-Cookie) och på klientsidan av agenten, och UID:t speglas även till localStorage som reserv när cookies är blockerade.
Servern försöker sätta cookien på allt bredare domänomfång:
app.example.com → example.com → comDen bredaste domän där cookien framgångsrikt kan sättas används. Detta säkerställer att cookien består över subdomäner.
TRACIO kan identifiera samma person över olika webbläsare på samma enhet när nivå 1-signaler producerar matchande hashar. Eftersom nivå 1 förlitar sig på hårdvaru- och renderingsegenskaper (canvas, WebGL, ljud, teckensnitt) är dessa signaler ofta identiska mellan Chromium-baserade webbläsare på samma maskin och försämras mellan motorer (Chromium vs Firefox vs Safari). Att matcha en skrivbordsbesökare med en mobilbesökare är inte förväntat — hårdvaru- och renderingsytorna skiljer sig åt.
Webbläsaröverskridande matchning är till sin natur en operation med lägre konfidens och behandlas som sådan i poängsättningen.