Vilka signaler överlever webbläsaruppdateringar? En stabilitetsanalys
Vi analyserade signalstabilitet över 50 uppdateringar av Chrome, Firefox och Safari. Här är de mest och minst stabila fingerprinting-signalerna.
Webbläsaruppdateringar är device fingerprintings naturliga fiende. Var 4:e till 6:e vecka släpper Chrome, Firefox och Safari nya versioner som kan förändra signalvärden — de ändrar user-agent-strängar, modifierar renderingsbeteende och lägger till eller tar bort API:er. Som noteras i W3C Fingerprinting Guidance arbetar webbläsarna aktivt med att begränsa den fingerprintbara ytan. För fingerprinting-system som behandlar alla signaler likvärdigt är varje uppdatering ett potentiellt identitetsbrott för miljontals besökare.
Vi genomförde en heltäckande stabilitetsanalys över 50 webbläsaruppdateringar för att besvara den grundläggande frågan: vilka signaler kan du lita på, och vilka kommer att svika dig?
Metod
Vi instrumenterade 200 fysiska enheter över 5 operativsystem (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) och 3 webbläsare (Chrome, Firefox, Safari). Varje enhet körde automatiserad signalinsamling dagligen i 14 månader och täckte 50 större versionsuppdateringar av webbläsare: 24 Chrome-releaser, 16 Firefox-releaser och 10 Safari-releaser.
För varje signal spårade vi: hur ofta värdet ändrades, huruvida ändringen korrelerade med en webbläsaruppdatering eller en extern faktor (drivrutinsuppdatering, OS-patch) och ändringens omfattning (fullständigt utbyte av värdet kontra mindre variation).
Stabilitetsnivåerna
Nivå 1: Stenhårt stabila (99,5 %+ stabilitet)
Dessa signaler ändrades endast när fysisk hårdvara byttes ut eller drivrutiner uppdaterades — aldrig enbart på grund av webbläsaruppdateringar.
Hardware Concurrency (navigator.hardwareConcurrency): 99,97 % stabil. Ändrades endast på 1 enhet som fick en BIOS-uppdatering som påverkade hyperthreading. Device Memory (navigator.deviceMemory): 99,98 % stabil. En enhet uppgraderades från 8 GB till 16 GB under studien. Skärmupplösning och färgdjup: 99,92 % stabil. Ändringar korrelerade med skärmbyten och händelser vid dockningsstationer. WebGL Max Texture Size: 99,99 % stabil. Noll webbläsarrelaterade ändringar. Ändrades en gång på en enhet som fick en NVIDIA-drivrutinsuppdatering. Ljudets samplingsfrekvens: 100 % stabil. Noll ändringar över samtliga 200 enheter och 50 uppdateringar. Detta är den enskilt mest stabila signalen vi spårar.
Nivå 2: Mestadels stabila (95–99,5 %)
Dessa signaler ändras ibland vid webbläsaruppdateringar men förblir stabila över de flesta releaser.
Canvas 2D-fingeravtryck: 97,8 % stabil. Ändringar inträffade i Chrome 118 (uppdatering av teckensnittsrenderingsmotorn), Chrome 122 (ändring av subpixel-antialiasing) och Firefox 121 (uppdatering av textformning). Varje ändring påverkade alla enheter på den webbläsaren samtidigt — ett detekterbart mönster som vi hanterar med webbläsarversionsmedveten matchning. WebGL Renderer-sträng: 98,1 % stabil. Chrome omformaterar ibland ANGLE-wrapperns sträng. Den underliggande GPU-informationen är oförändrad, men strängrepresentationen förskjuts. Vi parsar GPU-modellen ur strängen i stället för att hasha strängen direkt. Teckensnittslista: 96,4 % stabil. OS-uppdateringar lägger ibland till eller tar bort systemteckensnitt. Webbläsaruppdateringar påverkar sällan uppräkningen av teckensnitt, men Chrome 120 ändrade ordningen som teckensnitten rapporteras i, vilket bröt hash-baserad teckensnittsfingerprinting. Vi använder mängdbaserad jämförelse (mängdlikhet) i stället för ordnad hashning.
Nivå 3: Måttlig stabilitet (80–95 %)
Dessa signaler ändras med märkbar frekvens men ger ändå användbart identifieringsvärde mellan ändringarna.
Installerade plugins: 89,2 % stabil. Chromes fortsatta minskning av plugins-arrayen (navigator.plugins) tog i vissa sammanhang bort plugin-synligheten helt. Firefox behöll uppräkningen av plugins. Safari begränsade den till en standarduppsättning. CSS-funktionsdetektering: 91,7 % stabil. Nya CSS-funktioner läggs till med varje webbläsarrelease, vilket ändrar uppsättningen funktioner som vår CSS-sondering upptäcker. Vi viktar nya funktioner lägre än etablerade för att minska påverkan. Touch-stöd: 93,1 % stabil. Skrivbordswebbläsare ändrar ibland sitt rapporterade touch-stöd när Chrome justerar sin detektering av enhetsemulering.
Nivå 4: Volatila (<80 %)
Dessa signaler ändras ofta och bör aldrig vara primära identifieringsankare.
User Agent-sträng: 42,3 % stabil. Chromes User-Agent-reduktionsinitiativ ändrade strängformatet flera gånger. Firefox uppdaterar versionsnumret vid varje release. Safari modifierar WebKit-versionssträngen regelbundet. Detta brukade vara ryggraden i enkla fingerprinting-system — de systemen är nu trasiga. Anslutningstyp (navigator.connection): 68,4 % stabil. Ändras vid nätverksbyte (WiFi till mobilnät, olika WiFi-nätverk). Battery API: 71,2 % stabil. Varierar med laddningsstatus och API:ets tillgänglighet i webbläsaren. Chrome begränsade åtkomsten till Battery API i vissa sammanhang. Tillgänglig skärmyta: 76,8 % stabil. Ändras med aktivitetsfältets synlighet, fönsterhantering och justeringar av skärmskalning.
Jämförelse mellan webbläsare
Chrome är den mest volatila webbläsaren för fingerprinting-stabilitet. Google arbetar aktivt med att minska fingerprintbarheten, vilket innebär att Chrome-uppdateringar bryter fler signaler än uppdateringar av Firefox eller Safari. Under vår studieperiod:
Chrome orsakade signaländringar i 3,2 % av insamlingssessionerna. Firefox orsakade signaländringar i 1,8 % av insamlingssessionerna. Safari orsakade signaländringar i 1,1 % av insamlingssessionerna.
Safaris lägre volatilitet beror dels på att Apple släpper färre releaser per år, dels på att Safaris fingerprinting-motåtgärder (Intelligent Tracking Prevention) verkar på nätverksnivå i stället för att ändra API:ers returvärden.
Praktiska rekommendationer
Utifrån denna analys ger vi fem rekommendationer för fingerprinting-system i produktion:
Använd aldrig user agent som identifieringsankare. Det är den minst stabila särskiljande signalen. Använd den endast för webbläsardetektering och konfidenspoäng på nivå 3.
Separera hårdvarusignaler från mjukvarusignaler. Hårdvarusignaler (GPU, skärm, ljud) är 40x stabilare än mjukvarusignaler (user agent, plugins, CSS-funktioner). Vikta dem därefter.
Använd mängdbaserad jämförelse för uppräkningsbara signaler. Teckensnittslistor, plugin-listor och resultat från funktionsdetektering bör jämföras med mängdlikhet eller liknande mängdavståndsmått, inte med ordnad hashning. Ordningsändringar är vanliga; innehållsändringar är sällsynta.
Inför webbläsarversionsmedveten matchning. När Chrome 118 ändrar canvas-rendering för alla Chrome-användare samtidigt bör ditt system känna igen detta som en webbläsaruppdatering, inte ett massidentitetsbrott. Spåra webbläsarversioner och tillämpa versionsspecifika matchningstoleranser.
Övervaka signalstabiliteten kontinuerligt. Våra stabilitetsprocent baseras på historiska data. Framtida webbläsaruppdateringar kan ändra stabilitetsprofilen för vilken signal som helst. Vi bedriver kontinuerlig övervakning och justerar automatiskt signalvikterna när stabiliteten ändras.
Påverkan på tracio.ai
Vår V3-arkitektur för identifiering i flera nivåer återspeglar direkt denna stabilitetsanalys. Nivå 1-signaler (hårdvara) bär 60 % vikt. Nivå 2-signaler (rendering, teckensnitt) bär 30 % vikt. Nivå 3-signaler (webbläsarmetadata, anslutning) bär 10 % vikt. Denna viktning säkerställer att de mest stabila signalerna driver identifieringen, medan volatila signaler bidrar till konfidenspoäng utan att orsaka identitetsbrott.
Resultatet: 99,5 % identifieringsstabilitet över 50 webbläsaruppdateringar, mot 69 % för system som använder platt hash-baserad fingerprinting. Skillnaden är inte algoritmisk finess — det är empirisk signalanalys tillämpad på arkitekturbeslut.