User Tools

Site Tools


privacy:fingerprinting

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
privacy:fingerprinting [2026/08/05 18:01] – New page: browser fingerprinting. Mechanism and attribute families; the finding that the word 'fingerprinting' spans six unrelated literatures (of 201 papers naming a fingerprint in the seven-venue corpus, only 59 are about browsers and 71 are traffic ana karel.kubicek.claudeprivacy:fingerprinting [2026/08/21 14:50] (current) – Boxes: <wrap> renders a span, use uppercase <WRAP>; one box per list, not per bullet karel.kubicek.claude
Line 3: Line 3:
 //Browser fingerprinting// identifies a browser — and through it a device and a person — from the configuration it exposes to JavaScript and to HTTP: fonts, canvas rendering, audio processing, screen geometry, installed extensions, GPU behaviour. Unlike [[Privacy:Cookies|cookies]] it is **stateless**: nothing is written to the client, so nothing can be cleared, and there is no browser API a user can use to say no. That is what makes it the tracking technique that outlives every storage-based countermeasure, and the one a measurement study is least well equipped to observe. //Browser fingerprinting// identifies a browser — and through it a device and a person — from the configuration it exposes to JavaScript and to HTTP: fonts, canvas rendering, audio processing, screen geometry, installed extensions, GPU behaviour. Unlike [[Privacy:Cookies|cookies]] it is **stateless**: nothing is written to the client, so nothing can be cleared, and there is no browser API a user can use to say no. That is what makes it the tracking technique that outlives every storage-based countermeasure, and the one a measurement study is least well equipped to observe.
  
-The canonical entry point outside this wiki is Laperdrix et al.'s survey {[laperdrix2020_survey]}, which covers the attribute space, the entropy literature and the defence taxonomy in a way this page does not attempt to duplicate. What this page adds is the **measurement methodology**: how the 59 papers in our corpus actually detected fingerprinting, why their prevalence numbers cannot be compared with one another, and what you have to instrument to produce a number of your own.+The canonical entry point outside this wiki is Laperdrix et al.'s survey {[laperdrix2020_survey]}, which covers the attribute space, the entropy literature and the defence taxonomy in a way this page does not attempt to duplicate. What this page adds is the **measurement methodology**: how the 83 papers in our corpus actually detected fingerprinting, why their prevalence numbers cannot be compared with one another, and what you have to instrument to produce a number of your own.
  
 <WRAP important> <WRAP important>
-**Before you search the literature for "fingerprinting", know that the word names at least six unrelated research areas.** In our corpus of seven security and privacy venues, 201 papers describe detecting something they call a fingerprint. Only 59 of them are about browsers. The largest single group — 71 papers — is **website fingerprinting**, an encrypted-traffic-analysis problem about inferring which page a victim loaded over Tor or a VPN. It shares the word and almost nothing else. See [[#What the Word Means in the Literature]].+**Before you search the literature for "fingerprinting", know that the word names at least eight unrelated research areas.** In our corpus of seven security and privacy venues, 280 papers describe detecting something they call a fingerprint. Only 83 of them are about browsers. The largest single group — 105 papers — is **website fingerprinting**, an encrypted-traffic-analysis problem about inferring which page a victim loaded over Tor or a VPN. It shares the word and almost nothing else. See [[#What the Word Means in the Literature]].
 </WRAP> </WRAP>
  
Line 32: Line 32:
 ===== What the Word Means in the Literature ===== ===== What the Word Means in the Literature =====
  
-This section is the reason to read this page before doing a literature search. Every figure below comes from a structured extraction over **4,322 full-text papers** from CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf and IEEE S&P, 2010–2024, in which each paper contributes one record with a verbatim evidence quote per claim. The population here is the **201 papers whose ''detection.phenomenon'' field names a fingerprint** — not the whole corpus, and not the 4,196 papers that detected //something//.+This section is the reason to read this page before doing a literature search. Every figure below comes from a structured extraction over **5,859 full-text papers** from CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf and IEEE S&P, 2010–2026, in which each paper contributes one record with a verbatim evidence quote per claim. The 2025 and 2026 venue-years are provisional — CCS and IMC 2026 have not been held and two more 2026 venue-years are incompletely selected — so read any row that reaches them as a floor. The population here is the **280 papers whose ''detection.phenomenon'' field names a fingerprint** — not the whole corpus, and not the 5,655 papers that detected //something//.
  
-Those 201 papers produce **339 distinct free-text descriptions**. That is the whole problem: the field is not a vocabulary, and no exact-string aggregation over it means anything. After folding (method at the end of this section):+Those 280 papers produce **459 distinct free-text descriptions**. That is the whole problem: the field is not a vocabulary, and no exact-string aggregation over it means anything. After folding (method at the end of this section):
  
-^ What was actually being fingerprinted ^ Papers ^ Share of 201 ^ Distinct strings ^ +^ What was actually being fingerprinted ^ Papers ^ Share of 280 ^ Distinct strings ^ 
-| **Website / traffic fingerprinting** — which page or site a victim loaded, from encrypted traffic | 71 35.3% | 106 +| **Website / traffic fingerprinting** — which page or site a victim loaded, from encrypted traffic | 105 37.5% | 136 
-| **Browser fingerprinting** — the subject of this page | 59 | 29.4% | 111 +| **Browser fingerprinting** — the subject of this page | 83 | 29.6% | 156 
-| Remote host & network-stack ID — TLS, OS, server, middlebox | 31 15.4% | 41 +| Remote host & network-stack ID — TLS, OS, server, middlebox, DPI 38 13.6% | 53 
-| Physical-object & hardware forensics — PRNU, paper speckle, clock skew, phone sensors | 22 | 10.9% | 40 +| Physical-object & hardware forensics — PRNU, paper speckle, clock skew, phone sensors, flash and USB timing 28 | 10.0% | 54 
-| Human biometrics — actual fingers | 14 7.0% | 21 +| Human biometrics — actual fingers | 16 5.7% | 24 
-| Off-web device identification — BLE/IoT, MAC randomisation, LTE handsets | | 4.5% | 11 +| Off-web device identification — BLE/IoT, MAC randomisation, LTE handsets, mobile SDKs 13 | 4.6% | 18 
-| Media content identification — Shazam-style | | 2.0% | +| Media content identification — Shazam-style | | 2.9% | 11 
-| Analysis-environment evasion — malware fingerprinting the sandbox | 1 | 0.5% | +| Analysis-environment evasion — malware fingerprinting the sandbox | 2 | 0.7% | 4 | 
-| //unmapped//| 2.0% | |+| **LLM / model identification** — which model serves an endpoint //(new in 2025)// | 1 | 0.4% | 
 +| //unmapped//| 2.1% | |
  
-Twelve papers (6.0%) fall in more than one family, so shares exceed 100%. The practical consequences:+Eighteen papers (6.4%) fall in more than one family, so shares exceed 100%. The practical consequences:
  
   * **A keyword search on "fingerprint" over a security corpus is about 30% precise** for browser fingerprinting. If you are building a related-work section, "website fingerprinting" is the false-friend that will dominate your results.   * **A keyword search on "fingerprint" over a security corpus is about 30% precise** for browser fingerprinting. If you are building a related-work section, "website fingerprinting" is the false-friend that will dominate your results.
-  * **Both literatures are the same size and both are growing.** Per 1,000 corpus papers, browser fingerprinting goes 6.→ 9.→ 15.→ 15.across 2010–2013, 2014–2017, 2018–2021, 2022–2024; website fingerprinting goes 12.→ 15.→ 17.→ 16.7. Neither is displacing the other.+  * **Both literatures are the same size and both are growing.** Per 1,000 corpus papers, browser fingerprinting goes 5.→ 13.→ 16.0 → 14.8 → 15.across 2010–2013, 2014–2017, 2018–2021, 2022–2024 and the provisional 2025–2026; website fingerprinting goes 13.→ 14.→ 17.→ 17.9 → 22.8. Neither is displacing the other, and in the last window traffic fingerprinting pulls ahead — on two incomplete venue-years, so do not lean on it.
   * **They do not cite each other and they do not share methods.** One drives instrumented browsers over crawls; the other trains classifiers on packet traces. Reviewers from one side routinely read submissions from the other.   * **They do not cite each other and they do not share methods.** One drives instrumented browsers over crawls; the other trains classifiers on packet traces. Reviewers from one side routinely read submissions from the other.
  
Line 56: Line 57:
  
 ^ Venue ^ Corpus papers ^ Browser-FP papers ^ Share of venue ^ ^ Venue ^ Corpus papers ^ Browser-FP papers ^ Share of venue ^
-USENIX Security 1,117 13 1.2% | +TheWebConf 843 17 | 2.0% | 
-TheWebConf 713 13 1.8% | +PETS 510 17 3.3% | 
-PETS 355 10 2.8% | +USENIX Security 1,410 14 1.0% | 
-| CCS | 889 | 1.0% | +| CCS | 990 11 | 1.1% | 
-| NDSS | 419 | 1.7% | +| NDSS | 701 | 1.3% | 
-IMC 559 0.7% | +IEEE S&767 1.2% | 
-IEEE S&270 1.1% |+IMC 638 0.9% |
  
-PETS is the densest venue by a factor of two to four, which matches where the community sits — but the absolute numbers are small everywhere. **This is a 59-paper literature across fifteen years and seven venues.** It is small enough to read in full, and this page's report script prints the list.+PETS is the densest venue by a factor of two to three, which matches where the community sits — but the absolute numbers are small everywhere. **This is an 83-paper literature across seventeen years and seven venues.** It is small enough to read in full, and this page's report script prints the list.
  
 ==== How the folding was done, and its residue ==== ==== How the folding was done, and its residue ====
Line 70: Line 71:
 ''detection.phenomenon'' is one of the three least reproducible fields in the extraction: two independent runs over identical text agree on roughly 20% of exact free-text strings. It can carry a ranking; it cannot carry a precise percentage. The fold used here is in ''scripts/fp_fold.mjs'' below and works in three passes: ''detection.phenomenon'' is one of the three least reproducible fields in the extraction: two independent runs over identical text agree on roughly 20% of exact free-text strings. It can carry a ranking; it cannot carry a precise percentage. The fold used here is in ''scripts/fp_fold.mjs'' below and works in three passes:
  
-  - **Strong patterns**, ordered, matching the //subject// of the fingerprint — a named web API, a Tor circuit, a biometric sensor, a TLS stack. First match wins, because the discriminating word is the qualifier and not the head noun: "website fingerprinting" and "canvas fingerprinting" share the noun and share nothing else. This resolved 321 of 390 tuples. +  - **Strong patterns**, ordered, matching the //subject// of the fingerprint — a named web API, a Tor circuit, a biometric sensor, a TLS stack. First match wins, because the discriminating word is the qualifier and not the head noun: "website fingerprinting" and "canvas fingerprinting" share the noun and share nothing else. This resolved 441 of 544 tuples. 
-  - **Property-only strings, resolved by paper context.** 77 of the 390 strings name only a property — "fingerprint stability", "fingerprint uniqueness", "fingerprint comparison speed" — and are genuinely unresolvable in isolation: //"fingerprint comparison speed"// is a PGP key fingerprint, //"font fingerprint uniqueness"// is a browser. Such a tuple inherits the family of a strong tuple in the same paper. This resolved 49 more. +  - **Property-only strings, resolved by paper context.** 95 of the 544 strings name only a property — "fingerprint stability", "fingerprint uniqueness", "fingerprint comparison speed" — and are genuinely unresolvable in isolation: //"fingerprint comparison speed"// is a PGP key fingerprint, //"font fingerprint uniqueness"// is a browser. Such a tuple inherits the family of a strong tuple in the same paper. This resolved 76 more. 
-  - **Hand verification of what was left**, by reading each ''evidence.quote'' and the paper title. Twelve tuples were assigned by hand and the reason recorded inline in the script; five in four papers could not be assigned at all and are printed rather than dropped. All four are genuinely something else: malware feature hashing, textual PGP key-fingerprint representations, Tor relay identity keys, and Zcash transaction values.+  - **Hand verification of what was left**, by reading each ''evidence.quote'' and the paper title. Nineteen assignments are recorded by hand in the script, each with its reason inlineseven tuples in six papers could not be assigned at all and are printed rather than dropped. All six are genuinely something else: malware feature hashing, textual PGP key-fingerprint representations, Tor relay identity keys, Zcash transaction values, and two memory side-channel papers that fingerprint which application is resident in a confidential VM. 
 + 
 +The fold had to be extended for this corpus. On the 4,322-paper corpus the residue was 5 tuples in 4 papers; the 2025–2026 papers took it to **59 tuples in 31 papers** before the patterns were widened. What arrived was mostly new subject matter rather than new phrasing — DPI-device fingerprinting, ad-blocker and filter-list fingerprintability, LLM identification, AR/VR app inference, mobile fingerprinting SDKs. [[provenance:privacy:fingerprinting]] lists every string and where it went.
  
 <WRAP info> <WRAP info>
-**Why the fold matters quantitatively.** Not folding does not just add noise, it changes answers. FingerprintJS appears in this 59-paper subset under **six distinct spellings** (''fingerprintjs'', ''fingerprintjs2'', ''FingerprintJS2'', ''Fingerprint2'', ''FingerprintJS'', ''FPJS Pro''), so an exact-string count reports the most-used fingerprinting library in the literature at a fraction of its real frequency. The same is true of the phenomenon field, where 59 papers generate 111 strings.+**Why the fold matters quantitatively.** Not folding does not just add noise, it changes answers. FingerprintJS appears in this 83-paper subset under **seven distinct spellings** (''fingerprintjs'', ''fingerprintjs2'', ''FingerprintJS2'', ''Fingerprint2'', ''FingerprintJS'', ''FPJS Pro'', ''Fingerprintjs2 (FPJS2)''), so an exact-string count reports the most-used fingerprinting library in the literature at a fraction of its real frequency. The same is true of the phenomenon field, where 83 papers generate 156 strings.
 </WRAP> </WRAP>
  
 ===== Use in Publications ===== ===== Use in Publications =====
  
-Population for everything in this section: the **59 browser-fingerprinting papers** identified above. Sentinel values (''not-stated'') are counted as what they are and never as answers.+Population for everything in this section: the **83 browser-fingerprinting papers** identified above. Sentinel values (''not-stated'') are counted as what they are and never as answers.
  
 ==== What kind of papers these are ==== ==== What kind of papers these are ====
  
-^ Property ^ Papers ^ Share of 59 +^ Property ^ Papers ^ Share of 83 
-| Measured the web platform | 56 | 94.9% | +| Measured the web platform | 78 | 94.0% | 
-| Also measured mobile | 11 18.6% | +| Also measured mobile | 16 19.3% | 
-| Ran an automated web crawl | 41 69.5% | +| Ran an automated web crawl | 57 68.7% | 
-| Empirical (measured the world as it is) | 58 | 98.3% | +| Empirical (measured the world as it is) | 82 | 98.8% | 
-| Proposes a system, attack or defence | 41 69.5% | +| Proposes a system, attack or defence | 54 65.1% | 
-| Reanalyses an existing dataset | 28 47.5% | +| Reanalyses an existing dataset | 36 43.4% | 
-| Recruited human participants | 13 | 22.0% | +| Recruited human participants | 19 | 22.9% | 
-| Assessed a law | 11.9% | +| Assessed a law | 10 12.0% | 
-| Released an artifact link | 53 89.8% |+| Released an artifact link | 77 92.8% |
  
-Two of these are worth pausing on. **69.5% also propose a system, attack or defence** — this is a literature where measuring and building are the same paper, so a "prevalence of fingerprinting" number is very often a by-product of evaluating a detector rather than the study's primary object. And **89.8% released an artifact link**, well above the 66.2% corpus-wide rate for 2024, which is the single best practical fact on this page: the detectors are almost all available.+Two of these are worth pausing on. **65.1% also propose a system, attack or defence** — this is a literature where measuring and building are the same paper, so a "prevalence of fingerprinting" number is very often a by-product of evaluating a detector rather than the study's primary object. And **92.8% released an artifact link**, well above the corpus-wide rate (66.2% for 2024, 76.9% for 2025), which is the single best practical fact on this page: the detectors are almost all available.
  
 ==== Which surfaces and questions get measured ==== ==== Which surfaces and questions get measured ====
Line 101: Line 104:
 Ranked, not precise — searched across the phenomenon, technique, metric and prevalence text of each paper's fingerprint tuples, because a paper enumerating twenty APIs still writes only "browser fingerprinting" in a ten-word summary field. Ranked, not precise — searched across the phenomenon, technique, metric and prevalence text of each paper's fingerprint tuples, because a paper enumerating twenty APIs still writes only "browser fingerprinting" in a ten-word summary field.
  
-^ Surface or question ^ Papers ^ Share of 59 +^ Surface or question ^ Papers ^ Share of 83 ^ 
-| Fingerprinting **scripts** as the detection target | 25 42.4% | +| Uniqueness / entropy / anonymity set | 34 | 41.0% | 
-Uniqueness / entropy / anonymity set 25 42.4% | +| Fingerprinting **scripts** as the detection target | 33 39.8% | 
-Canvas 17 28.8% | +Canvas 23 27.7% | 
-Stability & evolution over time 12 20.3% | +Stability & evolution over time 14 16.9% | 
-| Audio (''AudioContext'' / Web Audio) {[chalise2022_webaudio]} | 15.3% | +Fonts 11 13.3% | 
-Fonts 13.6% | +| Audio (''AudioContext'' / Web Audio) {[chalise2022_webaudio]} | 10 12.0% | 
-| Defences and their resistance | 7 | 11.9% | +Browser extensions as a signal 10 12.0% | 
-| Browser extensions as a signal | 6 | 10.2% | +| Defences and their resistance | 9 | 10.8% | 
-| WebGL / GPU | 8.5% | +| WebGL / GPU | 9.6% | 
-| ''navigator'' / User-Agent / plugins | 4 | 6.8% | +| ''navigator'' / User-Agent / plugins | 6 | 7.2% | 
-Timing & clock | 4 | 6.8% | +WebRTC | 6 | 7.2% | 
-WebRTC | 4 | 6.8% | +Timing & clock | 4 | 4.8% | 
-| Screen & display | | 3.4% | +| Screen & display | | 3.6% | 
-| Device sensors (motion, battery) | 2 | 3.4% |+| Device sensors (motion, battery) | 2 | 2.4% |
  
-The top row is the structural finding. **The most common thing a browser-fingerprinting paper detects is not a fingerprint — it is a script that takes one.** That is a different measurement problem with a different failure mode: you are classifying JavaScript, so your ground truth is a filter list or a hand-labelled sample, and your recall is bounded by which scripts your crawler happened to load. It is why this page's tooling section is mostly about [[Privacy:JavaScript|JavaScript instrumentation]] and not about attribute collection.+The top two rows are the structural finding, and on the extended corpus they have swapped: uniqueness/entropy is now marginally ahead of script detection, 34 papers to 33, where on the 4,322-paper corpus they were tied at 25. The point is unchanged. **One of the two most common things a browser-fingerprinting paper detects is not a fingerprint — it is a script that takes one.** That is a different measurement problem with a different failure mode: you are classifying JavaScript, so your ground truth is a filter list or a hand-labelled sample, and your recall is bounded by which scripts your crawler happened to load. It is why this page's tooling section is mostly about [[Privacy:JavaScript|JavaScript instrumentation]] and not about attribute collection.
  
 ==== Prevalence numbers are not comparable across papers ==== ==== Prevalence numbers are not comparable across papers ====
  
 <WRAP important> <WRAP important>
-Do not build a time series from published fingerprinting-prevalence figures. Of the 59 papers, 57 state a headline number, and they are measuring different things with the same words.+Do not build a time series from published fingerprinting-prevalence figures. Of the 83 papers, 81 state a headline number, and they are measuring different things with the same words.
 </WRAP> </WRAP>
  
Line 151: Line 154:
 ==== Detection in the wild versus defence ==== ==== Detection in the wild versus defence ====
  
-The 59 papers split into two research programmes that use the same instrumentation:+The 83 papers split into two research programmes that use the same instrumentation:
  
 **Detecting fingerprinting** — the classifier lineage. Heuristic API-access counting (Acar et al., Englehardt & Narayanan) gave way to learned script classifiers: FP-Inspector {[iqbal2021_fingerprinting]} on syntactic and dynamic JS features, FP-Radar {[bahrami2022_radar]} on the co-occurrence graph of API accesses over time, automatic discovery of //emerging// techniques {[su2023_automatic]}, taint tracking with entropy thresholds in FP-Tracer {[boussaha2024_tracer]}, and federated detection without centralising crawl data in FP-Fed {[annamalai2024_fpfed]}. Rizzo et al. {[rizzo2021_unveiling]} come at it from code mining instead. **Detecting fingerprinting** — the classifier lineage. Heuristic API-access counting (Acar et al., Englehardt & Narayanan) gave way to learned script classifiers: FP-Inspector {[iqbal2021_fingerprinting]} on syntactic and dynamic JS features, FP-Radar {[bahrami2022_radar]} on the co-occurrence graph of API accesses over time, automatic discovery of //emerging// techniques {[su2023_automatic]}, taint tracking with entropy thresholds in FP-Tracer {[boussaha2024_tracer]}, and federated detection without centralising crawl data in FP-Fed {[annamalai2024_fpfed]}. Rizzo et al. {[rizzo2021_unveiling]} come at it from code mining instead.
Line 163: Line 166:
 Tools each paper //used or produced// (''usedOrMentioned'' filtered, so a baseline someone compared against does not read as adoption), folded across spellings: Tools each paper //used or produced// (''usedOrMentioned'' filtered, so a baseline someone compared against does not read as adoption), folded across spellings:
  
-^ Tool family ^ Papers ^ Share of 59 +^ Tool family ^ Papers ^ Share of 83 
-| EasyList / EasyPrivacy | 14 23.7% | +| EasyList / EasyPrivacy | 19 22.9% | 
-| OpenWPM | 12 20.3% | +| OpenWPM | 15 18.1% | 
-Disconnect list 10 | 16.9% | +FingerprintJS 14 | 16.9% | 
-FingerprintJS | 15.3% | +Disconnect list 13 | 15.7% | 
-| Brave | | 8.5% | +| Brave | | 8.4% | 
-| FP-Inspector | 4 | 6.8% | +| DuckDuckGo Tracker Radar Collector | 6 | 7.2% | 
-DuckDuckGo Tracker Radar Collector 5.1% | +| uBlock Origin | 6 | 7.2% | 
-| Panopticlick / Cover Your Tracks | 2 | 3.4% | +| FP-Inspector | 4 | 4.8% | 
-AmIUnique | 2 | 3.4% | +AmIUnique 4.8% | 
-uBlock Origin | 2 | 3.4% | +| Panopticlick / Cover Your Tracks | 2 | 2.4% | 
-| FP-Scanner / FP-Collect | 1 | 1.7% | +Tor Browser | 2 | 2.4% | 
-Tor Browser | 1 | 1.7% | +puppeteer-extra-plugin-stealth | 2 | 2.4% | 
-| puppeteer-extra-plugin-stealth | 1 | 1.7% |+| FP-Scanner / FP-Collect | 1 | 1.2% | 
 +FPMON | 1 | 1.2% |
  
-Read the top of that table carefully. **The most-used resource in the browser-fingerprinting literature is an ad-blocking filter list**, and the same holds for ground truth: of the classification resources these papers name, EasyList/EasyPrivacy (13 papers) and Disconnect (10) outrank every purpose-built fingerprinting resource. Filter lists were not built to label fingerprinting — EasyPrivacy blocks trackers, and fingerprinting scripts are a subset that overlaps imperfectly. Using one as ground truth caps your measurable recall at the list's coverage and imports its known bias against the long tail (see [[Privacy:Requests]] on why up to 90% of EasyList resource rules provide no benefit in common browsing).+Read the top of that table carefully. **The most-used resource in the browser-fingerprinting literature is an ad-blocking filter list**, and the same holds for ground truth: of the classification resources these papers name, EasyList/EasyPrivacy (17 papers) and Disconnect (13) outrank every purpose-built fingerprinting resource. Filter lists were not built to label fingerprinting — EasyPrivacy blocks trackers, and fingerprinting scripts are a subset that overlaps imperfectly. Using one as ground truth caps your measurable recall at the list's coverage and imports its known bias against the long tail (see [[Privacy:Requests]] on why up to 90% of EasyList resource rules provide no benefit in common browsing).
  
-FingerprintJS at 15.3% is the mirror image: papers use the //attacker's// library as a positive control, checking whether a script contains its magic strings. OmniCrawl {[cassel2022_omnicrawl]} found that 277 of 1,444 fingerprinting-matching scripts (14%) contained all the fingerprintjs2 magic strings — good for precision, useless for anything the library does not do.+FingerprintJS at 16.9% is the mirror image: papers use the //attacker's// library as a positive control, checking whether a script contains its magic strings. OmniCrawl {[cassel2022_omnicrawl]} found that 277 of 1,444 fingerprinting-matching scripts (14%) contained all the fingerprintjs2 magic strings — good for precision, useless for anything the library does not do.
  
 ==== Crawl methodology, compared with the corpus ==== ==== Crawl methodology, compared with the corpus ====
  
-Of the 59 papers, 41 ran a crawl and all 41 recorded a configuration. They report their setup **better than the corpus average on every axis**:+Of the 83 papers, 57 ran a crawl and all 57 recorded a configuration. They report their setup **better than the corpus average on every axis**:
  
-^ ''crawlConfig'' field ^ States a value ^ Share of 41 ^ All 829 crawling papers ^ +^ ''crawlConfig'' field ^ States a value ^ Share of 57 ^ All 1,080 papers with a crawl configuration 
-| Statefulness (stateful vs. stateless) | 16 39.0% | 21.5% | +| Statefulness (stateful vs. stateless) | 21 36.8% | 21.9% | 
-| Interaction depth | 38 92.7% | 78.6% | +| Interaction depth | 52 91.2% | 77.9% | 
-| Consent action | 29 70.7% | 55.2% | +| Consent action | 39 68.4% | 54.2% | 
-| Headless or headful | | 17.1% | 13.4% | +| Headless or headful | 10 | 17.5% | 13.0% | 
-| Authentication | 39 95.1% | 71.5% | +| Authentication | 55 96.5% | 72.1% | 
-| Browser named | 33 80.5% | 47.6% |+| Browser named | 44 77.2% | 49.0% |
  
 <WRAP important> <WRAP important>
-**The headless row is the one that should worry you: 17.1%.** Headless Chrome differs from headful Chrome in exactly the attributes a fingerprinting script reads — ''navigator.webdriver'', missing plugin arrays, a different WebGL vendor string, no ''chrome'' runtime object, and different font rasterisation. A fingerprinting script can therefore detect your crawler, and a cloaking script can serve it different content. 83% of the papers measuring fingerprinting do not say whether they were detectable in this way.+**The headless row is the one that should worry you: 17.5%.** Headless Chrome differs from headful Chrome in exactly the attributes a fingerprinting script reads — ''navigator.webdriver'', missing plugin arrays, a different WebGL vendor string, no ''chrome'' runtime object, and different font rasterisation. A fingerprinting script can therefore detect your crawler, and a cloaking script can serve it different content. More than four in five of the papers measuring fingerprinting do not say whether they were detectable in this way.
  
 The corpus contains direct evidence that this is not hypothetical. FP-Fed {[annamalai2024_fpfed]} explicitly measures **fingerprinting scripts missed by automated crawls**; PhishPrint and the phishing-page studies {[sanchezrola2023_rods]} show sites profiling the visitor precisely to decide what to serve a crawler; and 96.52% of phishing kits in one study used fingerprinting-based cloaking. If you crawl for fingerprinting, assume the sites you care about most are the ones checking. The corpus contains direct evidence that this is not hypothetical. FP-Fed {[annamalai2024_fpfed]} explicitly measures **fingerprinting scripts missed by automated crawls**; PhishPrint and the phishing-page studies {[sanchezrola2023_rods]} show sites profiling the visitor precisely to decide what to serve a crawler; and 96.52% of phishing kits in one study used fingerprinting-based cloaking. If you crawl for fingerprinting, assume the sites you care about most are the ones checking.
 </WRAP> </WRAP>
  
-Browsers actually driven: Chrome/Chromium 22 papers, Firefox 14, then single papers using Internet Explorer, Opera, Brave, Tor Browser, DuckDuckGo and Ghostery. The privacy-browser tail is thin, which matters because a defence study needs the browser whose defence it is testing. Note also [[Programming:Stateful stateless]]: only 39.0% state statefulness, and for fingerprinting the choice is not neutral — a stateless crawl sees the script's first-visit behaviour only.+Browsers actually driven: Chrome/Chromium 29 papers, Firefox 17, then single papers using Internet Explorer, Opera, Brave, Tor Browser, DuckDuckGoGhostery, Android WebView and Spartacus. The privacy-browser tail is thin, which matters because a defence study needs the browser whose defence it is testing. Note also [[Programming:Stateful stateless]]: only 36.8% state statefulness, and for fingerprinting the choice is not neutral — a stateless crawl sees the script's first-visit behaviour only.
  
 ==== Legal framing is rare ==== ==== Legal framing is rare ====
  
-Only **of 59** papers (11.9%) assess a law, against 6.1% corpus-wide — so twice the corpus rate, and still an outlier practice. Folded, the laws are GDPR (papers) and the ePrivacy Directive (4 papers, appearing under four different spellings including "European directives 2002/58/CE and 2009/136/CE"), plus one CCPA and one UK Digital Economy Act. The papers that do it are the ones joining fingerprinting to consent: cookie respawning with fingerprinting {[fouad2022my]}, and post-cookie tracking that bypasses a GDPR consent choice {[papadogiannakis2021_user]}.+Only **10 of 83** papers (12.0%) assess a law, against 6.9% corpus-wide (402 of 5,859) — so not quite twice the corpus rate, and still an outlier practice. Folded, the laws are GDPR (papers) and the ePrivacy Directive (4 papers, appearing under three different spellings including "European directives 2002/58/CE and 2009/136/CE"), then CCPA (3), plus one each of the UK Digital Economy Act, Brazil's LGPD, COPPA and the DSA. The papers that do it are the ones joining fingerprinting to consent: cookie respawning with fingerprinting {[fouad2022my]}, and post-cookie tracking that bypasses a GDPR consent choice {[papadogiannakis2021_user]}.
  
 This is a gap, not a finding about the law. Fingerprinting has no consent API, so the compliance question — can a technique that cannot be refused ever rest on consent? — is squarely open, and became sharper in 2025 (see below). See [[Privacy:Consent]] and [[Practices:Legal enforcement]]. This is a gap, not a finding about the law. Fingerprinting has no consent API, so the compliance question — can a technique that cannot be refused ever rest on consent? — is squarely open, and became sharper in 2025 (see below). See [[Privacy:Consent]] and [[Practices:Legal enforcement]].
Line 210: Line 214:
 ==== Human subjects ==== ==== Human subjects ====
  
-13 papers (22.0%) recruited participants, which is how uniqueness gets measured at all: you cannot compute an anonymity set from a crawl. Recruitment is bimodal — Mechanical Turk and other crowd platforms for the attack-feasibility studies (n ≈ 1,000–2,300), professional networks and volunteer panels for the longitudinal ones (Pugliese et al. ran three waves of 2,315 / 1,275 / 243 {[pugliese2020_long]}), and one 52,000-user browser-telemetry study {[zeber2020representativeness]}. If you are planning a uniqueness measurement, read [[Design:User studies]] and [[Practices:Ethics]] first: you are collecting a device identifier from participants, which is personal data under GDPR regardless of your intent.+19 papers (22.9%) recruited participants, which is how uniqueness gets measured at all: you cannot compute an anonymity set from a crawl. Recruitment is bimodal — Mechanical Turk and other crowd platforms for the attack-feasibility studies (n ≈ 1,000–2,300), professional networks and volunteer panels for the longitudinal ones (Pugliese et al. ran three waves of 2,315 / 1,275 / 243 {[pugliese2020_long]}), and one 52,000-user browser-telemetry study {[zeber2020representativeness]}. If you are planning a uniqueness measurement, read [[Design:User studies]] and [[Practices:Ethics]] first: you are collecting a device identifier from participants, which is personal data under GDPR regardless of your intent.
  
 ==== Reproducing these figures ==== ==== Reproducing these figures ====
  
-The report script prints every number on this page with its denominator, the unmapped residue, and the full 59-paper list. The folding rules live in a separate module so they can be audited and reused.+The report script prints every number on this page with its denominator, the unmapped residue, and the full 83-paper list. The folding rules live in a separate module so they can be audited and reused.
  
 <file javascript fp_fold.mjs> <file javascript fp_fold.mjs>
Line 242: Line 246:
   // Remote host and network-stack identification.   // Remote host and network-stack identification.
   ['network-stack', /\b(tls|ja3|\bos fingerprint|middlebox|router|web-?server|protocol fingerprint)/i],   ['network-stack', /\b(tls|ja3|\bos fingerprint|middlebox|router|web-?server|protocol fingerprint)/i],
 +  // LLM / model identification. New in 2025; before browser-device so that
 +  // "LLM version fingerprinting" is not swallowed by a generic pattern.
 +  ['llm-model', /\b(llm (version )?fingerprint|large language model|known-llm)/i],
   // Browser fingerprinting: named web APIs or an explicit browser qualifier.   // Browser fingerprinting: named web APIs or an explicit browser qualifier.
   ['browser-device', /\b(canvas|webgl|audiocontext|font|screen|navigator|browser|fingerprinting script|fingerprinter|extension)/i],   ['browser-device', /\b(canvas|webgl|audiocontext|font|screen|navigator|browser|fingerprinting script|fingerprinter|extension)/i],
Line 271: Line 278:
  
 <code> <code>
-corpus                                        4322 papers +corpus                                        5859 papers 
-detection fired at all                        4196 papers +detection fired at all                        5655 papers 
-phenomenon names a fingerprint                201 papers +phenomenon names a fingerprint                280 papers 
-only the technique does (excluded)             77 papers+only the technique does (excluded)            103 papers
  
-339 distinct free-text strings across 201 papers.+459 distinct free-text strings across 280 papers.
  
-What was being fingerprinted               Papers  Share of 201  Distinct strings+What was being fingerprinted               Papers  Share of 280  Distinct strings
 -----------------------------------------  ------  ------------  ---------------- -----------------------------------------  ------  ------------  ----------------
-Website / traffic fingerprinting           71      35.3%         106 +Website / traffic fingerprinting           105     37.5%         136 
-Browser fingerprinting (the web platform)  59      29.4%         111 +Browser fingerprinting (the web platform)  83      29.6%         156 
-Remote host & network-stack ID             31      15.4%         41 +Remote host & network-stack ID             38      13.6%         53 
-Physical-object & hardware forensics       22      10.9%         40 +Physical-object & hardware forensics       28      10.0%         54 
-Human biometrics                           14      7.0%          21 +Human biometrics                           16      5.7%          24 
-Off-web device identification              9       4.5%          11 +Off-web device identification              13      4.6%          18 
-unmapped                                         2.0%          5 +Media content identification                     2.9%          11 
-Media content identification                     2.0%          6 +unmapped                                         2.1%          7 
-Analysis-environment evasion                     0.5%          2+Analysis-environment evasion               2       0.7%          4 
 +LLM / model identification                 1       0.4%          4
  
-Tuples390 total — 321 resolved by the string, 49 by paper context +Shares exceed 100%18 papers (6.4%) fall in more than one family.
-(property-only strings), 5 unresolved. +
-77 of 390 strings name only a property of a fingerprint, not its subject.+
  
-Unmapped residue (printed in full): tuples, papers+Tuples: 544 total — 441 resolved by the string, 76 by paper context 
 +(property-only strings), 7 unresolved. 
 +95 of 544 strings name only a property of a fingerprint, not its subject. 
 + 
 +Unmapped residue (printed in full): tuples, papers
   CCS/2011/bitshred-feature-hashing-malware-for-scalable-triage-and-semantic-analysis   CCS/2011/bitshred-feature-hashing-malware-for-scalable-triage-and-semantic-analysis
       Fingerprint similarity approximation       Fingerprint similarity approximation
Line 305: Line 315:
   CCS/2019/privacy-aspects-and-subliminal-channels-in-zcash   CCS/2019/privacy-aspects-and-subliminal-channels-in-zcash
       fingerprint survival       fingerprint survival
 +  USENIX/2025/shadows-in-cipher-spaces-exploiting-tweak-repetition-in-hardware-memory-encrypti
 +      Application page fingerprints
 +  NDSS/2026/snpeek-side-channel-analysis-for-privacy-applications-on-confidential-vms
 +      PHH fingerprinting leakage
 </code> </code>
  
 ==== Methodology and limitations of these figures ==== ==== Methodology and limitations of these figures ====
  
-  * **Seven venues only.** CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf, IEEE S&P, 2010–2024IEEE S&P is only 43% retrieved (paywall) so it is under-represented; **EuroS&PACSACRAID, AsiaCCS, CHI and SOUPS are absent entirely**, and for this topic that is a real hole — the usability side of fingerprinting defences publishes at CHI and SOUPS. Every claim here is a claim about those seven venues. +  * **Seven venues only**, 2010–2026, with 2025 and 2026 provisionalWhich venueswhich yearswhat each stage of the selection funnel costs and which venue-years are empty are on [[literature:corpus]] and are not restated here. For //this// topic the absent venues are a real hole — the usability side of fingerprinting defences publishes at CHI and SOUPS. Every claim here is a claim about those seven venues. 
-  * **One paper is double-counted.** DRAWN APART {[laor2022_drawn]} appears twice in the NDSS 2022 index under two slugs, so the 59 is 58 distinct papers. Counts elsewhere on the page carry the same one-paper error.+  * **One paper is double-counted.** DRAWN APART {[laor2022_drawn]} appears twice in the NDSS 2022 index, once under its title slug and once as ''auto-draft-242'', so the 83 is 82 distinct papers. Counts elsewhere on the page carry the same one-paper error. Two other papers in the corpus have the same problem, neither of them here.
   * **Silence is not absence.** "Does not state whether it ran headless" means the paper did not say. These are reporting figures, not practice figures.   * **Silence is not absence.** "Does not state whether it ran headless" means the paper did not say. These are reporting figures, not practice figures.
   * **Field stability.** Enum fields (''platforms'', ''crawlConfig.*'', ''legal.law'') reproduce to within a few points on a repeat extraction and carry percentages here. ''detection.phenomenon'' does not, which is what the whole folding exercise is for — the family table is a set of rankings with an honest residue, not a measurement.   * **Field stability.** Enum fields (''platforms'', ''crawlConfig.*'', ''legal.law'') reproduce to within a few points on a repeat extraction and carry percentages here. ''detection.phenomenon'' does not, which is what the whole folding exercise is for — the family table is a set of rankings with an honest residue, not a measurement.
-  * **The 59 is a floor.** A paper that studies fingerprinting without the extractor recording a fingerprint-named phenomenon is missing from it. 77 further papers name a fingerprint only in the ''technique'' field and were deliberately excluded, since "we detected X by fingerprinting the TLS stack" is a paper about X. +  * **The 83 is a floor.** A paper that studies fingerprinting without the extractor recording a fingerprint-named phenomenon is missing from it. 103 further papers name a fingerprint only in the ''technique'' field and were deliberately excluded, since "we detected X by fingerprinting the TLS stack" is a paper about X. 
-  * **Quotes were spot-checked.** Every figure above was checked against the source PDF text for a sample of its evidence quotes; 0.9% of quotes in the dataset could not be located in the source at all.+  * **Quotes were spot-checked.** ''scripts/quote_check.mjs --detection fingerprint'' verifies the evidence quotes behind this page in bulk against ''paper.cols.txt''the results, and the ones that had to be read by hand, are on [[provenance:privacy:fingerprinting]]. The dataset's own "0.9% of quotes could not be located" figure was measured on the earlier 4,322-paper run and has not been re-measured. 
 +  * **Every query behind this section, the report script and its unedited output** are on [[provenance:privacy:fingerprinting]]; corpus-level caveats are on [[literature:corpus]].
  
 ===== Defences, and What They Mean for Your Measurement ===== ===== Defences, and What They Mean for Your Measurement =====
Line 330: Line 345:
  
   - **Uniformity and randomisation are measured differently.** Against a uniformity defence you measure //how many users share a bucket//; against farbling you measure //whether values are linkable across sessions//. A protocol written for one gives a meaningless answer against the other, and this is a common flaw in defence comparisons.   - **Uniformity and randomisation are measured differently.** Against a uniformity defence you measure //how many users share a bucket//; against farbling you measure //whether values are linkable across sessions//. A protocol written for one gives a meaningless answer against the other, and this is a common flaw in defence comparisons.
-  - **Your own crawler's browser is a defence configuration.** A 2026 Firefox with FPP on by default in Standard mode is not the browser that older papers measured with. State the browser, the version, and the fingerprinting-protection settings — the 19.5% of crawling papers in the corpus that state statefulness are ahead of the field, and fingerprinting-protection state is reported even less often than that.+  - **Your own crawler's browser is a defence configuration.** A 2026 Firefox with FPP on by default in Standard mode is not the browser that older papers measured with. State the browser, the version, and the fingerprinting-protection settings — the 19.6% of crawling papers in the corpus that state statefulness are ahead of the field, and fingerprinting-protection state is reported even less often than that.
  
 ==== The 2025 policy reversal ==== ==== The 2025 policy reversal ====
Line 337: Line 352:
 On 18 December 2024 Google notified users of its advertising products that **from 16 February 2025 it would no longer prohibit them from employing fingerprinting techniques**. The UK Information Commissioner's Office responded the next day: //"We think this change is irresponsible"//, quoting Google's own 2019 position on fingerprinting back at it — //"We think this subverts user choice and is wrong."//((UK Information Commissioner's Office, [[https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2024/12/our-response-to-google-s-policy-change-on-fingerprinting/|"Our response to Google's policy change on fingerprinting"]], 19 December 2024. Verified against the ICO page directly on 2026-08-05.)) On 18 December 2024 Google notified users of its advertising products that **from 16 February 2025 it would no longer prohibit them from employing fingerprinting techniques**. The UK Information Commissioner's Office responded the next day: //"We think this change is irresponsible"//, quoting Google's own 2019 position on fingerprinting back at it — //"We think this subverts user choice and is wrong."//((UK Information Commissioner's Office, [[https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2024/12/our-response-to-google-s-policy-change-on-fingerprinting/|"Our response to Google's policy change on fingerprinting"]], 19 December 2024. Verified against the ICO page directly on 2026-08-05.))
  
-For a measurement researcher this is the most consequential change in the topic since GDPR. Prevalence figures from before February 2025 describe a web in which the largest ad platform contractually forbade the technique. Anything you measure after it does not, and the corpus behind this page ends in 2024 — so **there is currently no peer-reviewed measurement in these seven venues of the post-reversal web.** That is an open research question with a date on it.+For a measurement researcher this is the most consequential change in the topic since GDPR. Prevalence figures from before February 2025 describe a web in which the largest ad platform contractually forbade the technique; anything you measure after it does not
 + 
 +**The first post-reversal measurement in these seven venues has now landed.** Luo et al. {[luo2025_canvassing]} crawled the Tranco top 20K and a random tail sample **in May 2025**, three months after the change, and found canvas fingerprinting on **12.7% of 16,276 popular sites and 9.9% of 17,260 tail sites**That is one technique on one crawl, and it is not a before/after comparison — nobody has run the same instrument on both sides of the date. But the page can no longer say the post-reversal web is unmeasured, and a pre/post study now has a published post-side baseline to work against.
 </WRAP> </WRAP>
  
Line 344: Line 361:
 ==== Detecting fingerprinting in a crawl ==== ==== Detecting fingerprinting in a crawl ====
  
-  * **[[https://github.com/openwpm/OpenWPM|OpenWPM]]** — the standard instrumented crawler; its JavaScript instrumentation records every access to a configured API surface, with call arguments and stack, which is the raw material every detector on this page consumes. 12 of the 59 papers use it. See [[Programming:Crawler:OpenWPM]].+  * **[[https://github.com/openwpm/OpenWPM|OpenWPM]]** — the standard instrumented crawler; its JavaScript instrumentation records every access to a configured API surface, with call arguments and stack, which is the raw material every detector on this page consumes. 15 of the 83 papers use it. See [[Programming:Crawler:OpenWPM]].
   * **[[https://github.com/uiowa-irl/FP-Inspector|FP-Inspector]]** {[iqbal2021_fingerprinting]} — the most-used purpose-built classifier in the corpus (4 papers). Treat it as a **research artifact frozen at its 2021 paper**, not a maintained tool: useful for its classifier, feature set and labelled script list; expect to port it.   * **[[https://github.com/uiowa-irl/FP-Inspector|FP-Inspector]]** {[iqbal2021_fingerprinting]} — the most-used purpose-built classifier in the corpus (4 papers). Treat it as a **research artifact frozen at its 2021 paper**, not a maintained tool: useful for its classifier, feature set and labelled script list; expect to port it.
-  * **[[https://github.com/duckduckgo/tracker-radar-collector|DuckDuckGo Tracker Radar Collector]]** — a lighter Puppeteer-based collector with an API-access collector built in; papers. See [[Programming:Crawler:Tracker radar collector]].+  * **[[https://github.com/duckduckgo/tracker-radar-collector|DuckDuckGo Tracker Radar Collector]]** — a lighter Puppeteer-based collector with an API-access collector built in; papers. See [[Programming:Crawler:Tracker radar collector]].
   * **Filter lists** — EasyPrivacy and Disconnect are what most papers actually use for ground truth. Read the caveat above before you do the same, and see [[Privacy:Requests]] for how to apply them in post-processing rather than during the crawl.   * **Filter lists** — EasyPrivacy and Disconnect are what most papers actually use for ground truth. Read the caveat above before you do the same, and see [[Privacy:Requests]] for how to apply them in post-processing rather than during the crawl.
  
Line 358: Line 375:
   * **[[https://abrahamjuliot.github.io/creepjs/|CreepJS]]** — aggressive detection of lies and inconsistencies: it is the closest public analogue to FP-Scanner {[vastel2018_scanner]} and the fastest way to discover that your stealth plugin is making you //more// identifiable.   * **[[https://abrahamjuliot.github.io/creepjs/|CreepJS]]** — aggressive detection of lies and inconsistencies: it is the closest public analogue to FP-Scanner {[vastel2018_scanner]} and the fastest way to discover that your stealth plugin is making you //more// identifiable.
   * **[[https://fpmon.github.io/fingerprinting-monitor/|FPMON]]** — a browser extension that reports, in real time, which fingerprinting-relevant APIs the current page touched. Handy for a spot check on a site your pipeline flagged.   * **[[https://fpmon.github.io/fingerprinting-monitor/|FPMON]]** — a browser extension that reports, in real time, which fingerprinting-relevant APIs the current page touched. Handy for a spot check on a site your pipeline flagged.
-  * **[[https://github.com/fingerprintjs/fingerprintjs|FingerprintJS]]** — the open-source library, used as a positive control by of the 59 papers. Licence history matters if you vendor it: MIT, then Business Source License 1.1 for the 4.x series, back to MIT from 5.0.0 (current npm release 5.2.0, MIT, checked 2026-08-05). The hosted **Fingerprint Pro** product is separate and proprietary.+  * **[[https://github.com/fingerprintjs/fingerprintjs|FingerprintJS]]** — the open-source library, used as a positive control by 14 of the 83 papers. Licence history matters if you vendor it: MIT, then Business Source License 1.1 for the 4.x series, back to MIT from 5.0.0 (current npm release 5.2.0, MIT, checked 2026-08-05). The hosted **Fingerprint Pro** product is separate and proprietary.
  
 ==== A crawler self-check you should run ==== ==== A crawler self-check you should run ====
Line 369: Line 386:
   - Whether the fingerprinting scripts you detected are the same set a headful browser on the same page loads. FP-Fed {[annamalai2024_fpfed]} measures precisely this gap.   - Whether the fingerprinting scripts you detected are the same set a headful browser on the same page loads. FP-Fed {[annamalai2024_fpfed]} measures precisely this gap.
  
-''puppeteer-extra-plugin-stealth'' patches many of the obvious tells and appears in one corpus paper. Do not treat it as a solution: CreepJS and FP-Scanner-style consistency checks defeat it, and a partially-patched browser occupies an anonymity set of one. If detectability matters to your result, **measure it and report it** rather than assuming it away.+''puppeteer-extra-plugin-stealth'' patches many of the obvious tells and appears in two corpus papers. Do not treat it as a solution: CreepJS and FP-Scanner-style consistency checks defeat it, and a partially-patched browser occupies an anonymity set of one. If detectability matters to your result, **measure it and report it** rather than assuming it away.
  
 ===== Open Questions ===== ===== Open Questions =====
  
-  * <wrap todo>No measurement in these seven venues of fingerprinting prevalence **after** Google's 16 February 2025 policy change. The pre/post comparison is the obvious study and the baseline data (FP-Radar, FP-Inspector) is public.</wrap> +<WRAP todo> 
-  * <wrap todo>No study quantifies how much a **headless or containerised crawler** under-counts fingerprinting relative to a headful one on the same site listFP-Fed {[annamalai2024_fpfed]} shows the gap exists; nobody has measured its size across a large crawl.</wrap> +  * No **pre/post comparison** across Google's 16 February 2025 policy change. Luo et al. {[luo2025_canvassing]} now supply a post-reversal canvas-fingerprinting baseline (May 2025, 12.7% of the top 20K), so what is missing is the same instrument run on both sides of the date rather than any measurement at all. The pre-side baseline data (FP-Radar, FP-Inspector) is public. 
-  * <wrap todo>Prevalence figures are incomparable across papers because unit, rank cut and definition all vary. A shared benchmark — a fixed site sample with hand-labelled ground truth — does not exist for fingerprinting the way EasyList serves ad-blocking research.</wrap> +  * **Partly answered since this page was written.** Annamalai et al. {[annamalai2025_beyond]} compared real user sessions against an automated crawl of the same sites and found the crawl missed **211 of 471 fingerprinting websites (45%)** — the first published size for this gapWhat is still open is the narrower question: how much of that 45% is //headless versus headful// as opposed to interaction depth, authentication and consent, which the paper attributes it to. 
-  * <wrap todo>Consent and fingerprinting: only of 59 papers touch a law, and none in the corpus tests whether a CMP's consent signal changes fingerprinting behaviour on the same site. Combining this page's detection tooling with [[Privacy:Consent]]'s CMP interaction is a well-defined study.</wrap> +  * Prevalence figures are incomparable across papers because unit, rank cut and definition all vary. A shared benchmark — a fixed site sample with hand-labelled ground truth — does not exist for fingerprinting the way EasyList serves ad-blocking research. 
-  * <wrap todo>Usability of fingerprinting defences is invisible here because CHI and SOUPS are outside the corpus. Someone with access should extend the [[#What the Word Means in the Literature]] analysis to those venues.</wrap>+  * Consent and fingerprinting: only 10 of 83 papers touch a law, and none in the corpus tests whether a CMP's consent signal changes fingerprinting behaviour on the same site. Combining this page's detection tooling with [[Privacy:Consent]]'s CMP interaction is a well-defined study. 
 +  * Usability of fingerprinting defences is invisible here because CHI and SOUPS are outside the corpus. Someone with access should extend the [[#What the Word Means in the Literature]] analysis to those venues. 
 +</WRAP>
  
 ===== Related Pages ===== ===== Related Pages =====
  
   * [[Privacy:Cookies]] — the stateful counterpart; fingerprinting and cookies are used together, and respawning links them directly {[fouad2022my]}.   * [[Privacy:Cookies]] — the stateful counterpart; fingerprinting and cookies are used together, and respawning links them directly {[fouad2022my]}.
-  * [[Privacy:JavaScript]] — classifying the scripts that 42.4% of these papers are actually detecting.+  * [[Privacy:JavaScript]] — classifying the scripts that 39.8% of these papers are actually detecting.
   * [[Privacy:Requests]] — the filter lists that most of this literature uses as ground truth, and why that is a compromise.   * [[Privacy:Requests]] — the filter lists that most of this literature uses as ground truth, and why that is a compromise.
   * [[Privacy:Consent]] — the open compliance question: a technique with no refusal mechanism.   * [[Privacy:Consent]] — the open compliance question: a technique with no refusal mechanism.
   * [[Design:Website classification]] — where fingerprinting sits in the wider classification taxonomy.   * [[Design:Website classification]] — where fingerprinting sits in the wider classification taxonomy.
   * [[Programming:Crawler:OpenWPM]] and [[Programming:Crawler:Tracker radar collector]] — the two instrumented crawlers this page depends on.   * [[Programming:Crawler:OpenWPM]] and [[Programming:Crawler:Tracker radar collector]] — the two instrumented crawlers this page depends on.
-  * [[Programming:Stateful stateless]] — only 39.0% of these papers state it, and for fingerprinting it changes what you see.+  * [[Programming:Stateful stateless]] — only 36.8% of these papers state it, and for fingerprinting it changes what you see.
   * [[Design:Crawling location]] — the other axis a fingerprinting crawl is judged on.   * [[Design:Crawling location]] — the other axis a fingerprinting crawl is judged on.
   * [[Statistics:Biases]] — why a uniqueness percentage is a property of your sample.   * [[Statistics:Biases]] — why a uniqueness percentage is a property of your sample.
privacy/fingerprinting.1785952913.txt.gz · Last modified: by karel.kubicek.claude

Except where otherwise noted, content on this wiki is licensed under the following license: CC BY-NC-SA 4.0
CC BY-NC-SA 4.0 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki