Tilbage i 2019 satte jeg mig for at undersøge om browser fingerprinting kunne være en erstatning for cookies til web analytics. Jeg indsamlede en masse data og for nyligt blev jeg motiveret til at få det analyseret og udgive et nyt blogindlæg.

Fingerprint data blev indsamlet tilbage i 2019-2020.

Fingerprint data blev indsamlet tilbage i 2019-2020.

Cookies er geniale men begrænsede

De seneste år er cookies blevet stærkt begrænset som redskab til at tracke brugere. Både fordi 3. part cookies er blevet begrænset med fx ITP men også fordi brugere nu skal give consent til cookies og dermed tracking.

Cookies er geniale til at genkende en bestemt browser på tværs af sidevisninger og sessioner. Det er helt anonymt og brugeren har fuld kontrol og kan slette cookies efter behov.

Browser fingerprinting

Et alternativ til at sætte en cookie med et anonymt ID kan være at forsøge at genkende og adskille browsere fra hinanden, baseret på alle de indstillinger og informationer man kan se om en given bruger med JavaScript. Dette kaldes browser fingerprinting.

Browser fingerprinting er stærkt kritiseret, fordi det sker uden at brugeren er klar over det og browsere forsøger derfor at blokere for det.

amiunique.org kan du se om der kan laves et unikt fingerprint af din browsere og se hvilke datapunkter der indgår i et fingerprint.

Hvad indgår i et fingerprint?

Her er en ikke-udtømmende liste over hvad der kan indgå i et fingerprint.

  • User Agent
  • Sprog
  • Operativ system
  • Tidszone
  • Hvilke fonts der er installeret
  • Om der bruges Adblocker
  • Browser
  • Browser version
  • Om Java er aktiveret
  • Hvilke plugins der er installeret
  • Skærm opløsning
  • Om browseren må bruge kamera og mikrofon
  • Og mange flere…

Men også ting som batteri status og om ens statuslinje er vist eller skjult.

Se hele listen på amiunique.org.

Men spørgsmålet er om det ovenhovedet gør browseren unik?

Kan fingerprinting erstatte cookies?

Fra et teknisk synspunkt er det interessant at teste om fingerprinting overhovedet kan være en erstatning for cookies i forhold til at identificere brugere i Google Analytics. Jeg lavede en test hvor jeg brugte fingerprintjs til at generere et fingerprint og gemme det com custom dimension i Google Analytics. Selvfølgelig opsat i GTM.

Fingerprintjs laver et Array med alle datapunkterne som derefter hashes så man får en værdi som fx 69a45868bbc98e83a463e2e0730be988.

Datapunkter der indgår i et fingerprintjs fingerprint som derefter hashes.

Datapunkter som fingerprintjs bruger til at lave et fingerprint som derefter hashes.

Herunder ses nogle eksempler på fingerprints, device, browser samt hvor mange GA users der har præcis denne kombination. Hvis et fingerprint skal være unikt, skal det kun matche én bestemt User. Ellers er der dermed flere browsere som har det samme fingerprint og så kan det ikke bruges til at genkende én browser mellem sidevisninger og besøg, som en cookie kan.

Og her kan man allerede se problemet, hvor flere Users har det samme fingerprint.

Hvis vi kigger på hele datasættet opdelt i desktop og mobile er der dog en stor andel af fingerprint værdierne der kun har én GA user, så de er unikke.

Langt størstedelen af desktop har kun én User, men der er stadig 26 fingerprints som er fælles for mere end 5 GA Users. På mobile ser det dog anderledes ud, hvor der stadig er flest som matcher én User, men der er mange som matcher mere end én.

Dette skyldes at fingerprint afhænger af hvor meget man har ændret indstillingerne på sin computer og browser, samt installeret fonts og lignende. Og det gør man bare ikke i nær så høj grad på mobile.

Derudover er der også mange flere forskellige computere, med forskellige skærmopløsninger, osv.
På mobile i Danmark er der rigtig mange brugere fordelt på de nyeste modeller af iPhone.

Men det bliver værre endnu.

For som det ses herover er der 200 fingerprints som matcher mere end 5 users og der er faktisk ét fingerprint som er ens for 128 forskellige browsere. Der er altså 128 iPhones som er 100% identiske i forhold til alle de datapunkter som fingerprintet bruger.

Herunder ses antal users i datasættet fordelt på Device Category og Operating System. Der er 6304 users på iPhone og iPad, så når der er 128 brugere med samme fingerprint, så er det 2% af alle iPhones/iPads der har identisk fingerprint. Ikke særlig unikt, må man sige.

For at se den totale udfordring med at bruge fingerprint til at gøre browsere unikke, har jeg vist summen af GA Users i de enkelte buckets herunder.

Her ses det at der fx for mobile er 3655 users som har et unikt fingerprint. Men der findes samtidig 3923 users som har et fingerprint som deles af mere end 5 brugere.

Hvis vi opdeler dem i to grupper: Unikke fingerprints (som kun matcher én GA user) og ikke unikke fingerprints, så ser fordelingen således ud.

På mobile er det altså kun 37% af brugere der har et unikt fingerprint, mens det på desktop er 89%. Totalt set har 58% af brugerne et unikt fingerprint og når andelen af trafik fra mobile tilmed er stigende er det derfor totalt umuligt at bruge fingerprint til at identificere og genkende brugere og dermed være en erstatning for cookies.

Andre alternativer til cookies

Plausible Analytics er en ny analytics platform, som kan lave (simpel) analytics uden brug af cookies.

I stedet for cookies bruger laver de et hash af IP adresse og User Agent samt et daily salt. Derved kan de genkende den samme bruger på den samme dag, men næste dag vil der være et nyt salt og så vil brugere være en ny unik bruger. Teoretisk vil der sagtens kunne være flere forskellige brugere fra den samme IP som har samme User Agent, men i praksis vil det være marginalt, så det er et OK kompromis. Meget bedre end fingerprinting, som faktisk ikke bruger IP adressen.

Under afsnittet How we count unique users without cookies kan du læse mere om hvordan Plausible Analytics tæller unikke brugere uden cookies. Eller du kan læse det her: