Master's Thesis

Browser Fingerprinting Scripts: The Analysis

Final Thesis 1.28 MB

Author of thesis: Ing. Jiří Šotola

Acad. year: 2025/2026

Supervisor: Ing. Libor Polčák, Ph.D.

Reviewer: Ing. Vladimír Veselý, Ph.D.

Abstract:

This master’s thesis focuses on the analysis of browser fingerprinting scripts and methods for limiting their tracking capabilities while preserving the usability of web applications. The thesis summarizes the principles of browser fingerprinting, commonly used identification techniques, and the most frequently exploited web APIs, including Canvas, WebGL, AudioContext, and Navigator API. It also discusses defensive mechanisms against fingerprinting, particularly techniques based on value unification and modification of web API outputs. In the practical part, a dataset of currently used fingerprinting scripts was created, and a testing environment for automated evaluation of script behavior under different browser and device configurations was designed and implemented. The experiments were conducted both with and without the JShelter browser extension and focused on analyzing the stability, similarity, and environment dependency of generated fingerprints. The results demonstrate that individual scripts rely on different combinations of APIs and exhibit varying sensitivity to configuration changes and privacy protection mechanisms.

Keywords:

browser fingerprint, browser fingerprinting, privacy protection, JavaScript, web APIs, Canvas, WebGL, AudioContext, JShelter, fingerprinting scripts, user tracking, web security

Date of defence

23.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaDznamka

Grading

D

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných, např. ohledně důvodů pro uvedení některých grafů v příloze namísto hlavní části technické zprávy či použitých testovacích skriptů pro srovnání frameworků. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm E - dostatečně.

Topics for thesis defence

  1. Text práce na straně 62 obsahuje doslovný fragment instrukce adresované asi nástroji ChatGPT: "Ne, to tam nevydavej, spis tam napis, ze se primarne neprojevil..." Jak k tomuto pochybení při přípravě finálního rukopisu došlo a jaký postup jste při využití AI asistenta pro revizi textu uplatňoval?
  2. V práci uvadíte (str. 63), že rozšíření JShelter v Chromiu vyžaduje specifickou GUI interakci pro aktivaci. Jaká konkrétní technická řešení (např. inicializační skripty, modifikace rozšíření, alternativní frameworky) jste pro překonání tohoto omezení zvažoval a proč nebyla realizována?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Computer Networks (NNET)

Composition of Committee

doc. Ing. Petr Matoušek, Ph.D., M.A. (předseda)
doc. Ing. Tomáš Martínek, Ph.D. (místopředseda)
Ing. Zbyněk Křivka, Ph.D. (člen)
Ing. Ivana Burgetová, Ph.D. (člen)
Ing. Matěj Grégr, Ph.D. (člen)
Ing. Šárka Květoňová, Ph.D. (člen)

Supervisor’s report
Ing. Libor Polčák, Ph.D.

Pan Jiří Šotola podle mého názoru prokázal schopnosti vyžadované k úspěšnému obhájení své diplomové práce. Nakonec se s náročným tématem dokázal vypořádat a naměřené výsledky jsou užitečné.

Evaluation criteria Verbal classification
Informace k zadání

Práce navazuje na projekty řešené mj. v rámci FIT týkající se rozšíření JShelter. Cílem práce bylo najít a analyzovat skripty počítající otisk prohlížeče. S dosažnými výsledky jsem spokojen jen částečně, protože některé části mohly být řešeny, či prezentovány lépe:

  • Není jasné, jak v testech stability probíhá vyhodnocení podobnosti otisku prohlížeče. Např. berou se v případě Fingerprintjs v úvahu všechny komponenty, nebo jen některé? V případě skriptů, kde je výstupem nestrukturované číslo, nebo hash, počítá autor shodné znaky na stejné pozici, nebo postupuje jinak?
  • Testy také mohly rozšíření JShelter testovat v různých konfiguracích a netestovat jen modul Javascript Shield, ale i Fingerprint Detector.
  • U testu citlivosti autor opakovaně tvrdí, že když po změně hodnot některých API nezmění výstup, je to známka, že hodnota nebyla využita. Nebere však v úvahu možnost, že skript detekuje nekonzistenci porovnáním s jinými API.
  • U skriptů jako je OverpoweredJS autor nezmiňuje, zda má rozšíření JShelter, případně změny v rámci testovacího prostředí, nějaký vliv na položky udávající, že klient není běžný uživatel.
Aktivita při dokončování

V závěru student pracoval dobře, ale nedůslednost v dřívějších fázích a zmatečnost ve vyjadřování vedly k pozdnímu dokončování ve spěchu, což se projevuje překlepy, nejasnými větami i aplikaci chybných měření (sekce Obecné pouštění rozšíření JShelter). Textovou část práce jsem viděl, ale nebyla v pochopitelném stavu. Na výsledném textu jde vidět, že si student vzal mé rady k srdci a většinu zapracoval. Především kapitola testování by potřebovala ještě revizi, aby byla dobře pochopitelná.

Publikační činnost, ocenění

V současném stavu výsledky práce publikovatelné nejsou, ale je možné, že mě výsledky práce k publikaci inspirují.

Práce s literaturou

Student využíval literaturu doporučenou i vlastní. Ze začátku jsem měl pocit, že se v literatuře ztrácí. Na pozdějších konzultacích se již student v problematice orientoval.

Aktivita během řešení, konzultace, komunikace

Student byl aktivní průběžně, ale ne vždy byl připraven.

Points proposed by supervisor: 75

Grade proposed by supervisor: C

Reviewer’s report
Ing. Vladimír Veselý, Ph.D.

Práce je solidní inženýrské dílo, jehož hezké průměrné hodnocení zbytečně kazí zapomenutá věta z konverzace s AI/vedoucím v technické zprávě. Výslednou známku (tedy buď C, nebo D) nechávám na komisi.

Evaluation criteria Verbal classification Points
Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Zadání bylo splněno. K bodu 6 (prezentace zjisteni projektu JShelter) práce konstatuje záměr výsledky prezentovat, avšak neobsahuje za mě explicitní potvrzení, že k prezentaci skutečně došlo a její závěry. Nicméně vzhledem k tomu, že je vedoucí práce hlavním vývojářem JShelter, tak to lze brát jako lichou poznámku.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Práce má 71 stran textu v husté LaTeXové šabloně, se všemi pomocnými provozy pak 91 stránek. Dle nástroje https://app.fit.vut.cz/theses-checker/ na počítání normostran, má 104,22 normostran, je tedy mírně nad standard pro DP.

Prezentační úroveň technické zprávy

Práce má logickou strukturu a jednotlivé kapitoly kopírují body zadání: teorie (Kapitoly 2-4) -> implementace (Kapitola 5) -> testování a analýza (Kapitola 6). Oceňuji, že výsledky v kapitole 6 jsou podávány unifromě pro každý skript.

Za závažnou chybu snižující hodnocení prezentační úrovně považuji přítomnost fragmentu konverzace s AI nástrojem (či vedoucím?) na straně 62 v druhé polovině. Text obsahuje: "[...] Ne, to tam nevydávej, spíš tam napiš, že se primárně neprojevil. a ještě tam nech ty hodnoty, co byly v předchozím. Ostatně co jsem ti poslal, těch 53 [...]", kterážto se omylem dostala do odevzdaného textu technické zprávy.

60
Formální úprava technické zprávy

Práce je psána v češtině a je bez zásadnějších prohřešků vůči gramatice.

Zde pár šotků, kteří utekli:

  • V závěru (str. 66) je skript ThumbmarkJS oznacen jako "ThundermarkJS".
  • Tabulky B.3 (Fingerprint-browser) a B.4 (Fingerprintjs) jsou v příloze B umístěny až za tabulkami B.5 až B.7, čímž je narušeno logické číselné pořadí.
  • Na straně 33 je divně diakritika a tím i slovo: "zásahy´ům".
  • Strana 67 je zcela prázdná.
70
Práce s literaturou

Student v práci cituje z pro diplomovou práci průměrného množství zdrojů (53 pramenů). Majoritu z nich tvoří online zdroje - těm, které jsou jen referencemi na domovské stránky technologií, by slušela spíš reference pod čarou. Literaturu tvoří i vědecké články, které jsou korektně využívány a interpretovány.

Nicméně využívání pramenů za každou jednotlivou sdělenou větou (příkladem [1] na str. 5, [38] str. 23, [45] na str.29)  mi místy v textu přijde až rušivé a raději bych volil seskupení všech myšlenek z jednoho zdroje do stejného odstavce. Další drobnou výhradou je zařazení komerčního slovníčku (zdroj [34], soax.com) jako opory pro věcná tvrzení; vhodnejší by byly více primarní zdroje.

80
Realizační výstup

Bohužel i přes tři emaily v kopii na vedoucího se mi studenta nepodařilo dostat ke konzultaci k výsledné práci a zejména demonstraci implementace.

Realizační výstup tvoří jednotky zdrojových kódů v JavaScriptu, HTML  a JSON, které konfigurují testovací prostředí a analyzují běh skriptů v nich. Student implementaci doprovodil vhodnou dokumentací, díky které se dají reprodukovat výsledky.

65
Využitelnost výsledků

Výsledky měření představují dataset chování konkrétních knihoven v čase, ke kterému se dá vracet či navazovat v rámci vědeckých článků. Samotná implementace v Playwright má evidentně limity své použitelnosti pro komplexní analýzu API - to ale neznamená, že se je nepodaří v budoucnu odstranit či najít jiný vhodnější testovací framework.

Náročnost zadání

Evaluation level: průměrně obtížné zadání

Práce je součástí dlouhodobých výzkumných aktivit NES@FIT. Cílem práce bylo rešeršovat skripty využívající malé lži, vybrat z nich vhodnou podmnožinu, programaticky je testovat a analyzovat v kontextu rozšíření JShelter. Zadání tak, jak jej specifikoval vedoucí, považuji za průměrně obtížné.

Topics for thesis defence:
  1. Text práce na straně 62 obsahuje doslovný fragment instrukce adresované asi nástroji ChatGPT: "Ne, to tam nevydavej, spis tam napis, ze se primarne neprojevil..." Jak k tomuto pochybení při přípravě finálního rukopisu došlo a jaký postup jste při využití AI asistenta pro revizi textu uplatňoval?
  2. V práci uvadíte (str. 63), že rozšíření JShelter v Chromiu vyžaduje specifickou GUI interakci pro aktivaci. Jaká konkrétní technická řešení (např. inicializační skripty, modifikace rozšíření, alternativní frameworky) jste pro překonání tohoto omezení zvažoval a proč nebyla realizována?
Points proposed by reviewer: 69

Grade proposed by reviewer: D

Responsibility: Mgr. et Mgr. Hana Odstrčilová