User Tools

Site Tools


provenance:privacy:server_side_tracking

This is an old revision of the document!


Provenance: privacy:server_side_tracking

Working notes behind server_side_tracking — every query with its population and denominator, the scripts and their unedited output, the folds and their residue, the quotes checked against the source papers, the external sources and how each was verified, what could not be established, and the judgement calls. Corpus-level caveats that apply to every page on this site are on corpus and are not restated here.

1. What this page is backing

Item Value
Content page server_side_trackingnew page, created 2026-08-21
Corpus report script scripts/report_server_side_tracking.mjs — two passes: structured extraction, then full-text probe
Artefact audit scripts scripts/sst_guard_templates.mjs (recovers and exercises the shipped detection regexes), scripts/sst_guard_replay.mjs (replays the shipped extractor over the authors' published rows), scripts/sst_guard_datacheck.mjs (cross-checks the preprint's headline figures against its own released data files)
Quote verification scripts/sst_quotecheck.mjs — 25 quotes and literal figures against three renderings of each source paper
External-fact re-check scripts/sst_external_checks.sh
Stale-number guard scripts/sst_number_guard.mjs — page-specific, because the shared check_page_numbers.mjs has a site-wide ALLOW map and adding this page's external figures to it would weaken every other page's check
Bibliography additions scripts/bib_additions_sst.bib — 8 entries; a 9th ([1Bekos, Paschalis; Papadopoulos, Panagiotis; Kourtellis, Nicolas; Polychronakis, Michalis (2025): "PIIxel Leaks: Passive Identification of Personally Identifiable Information Leakage through Meta Pixel", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)]) was added during review. DOI-scanned before each append, so no duplicate key and no second entry for a paper already in the file
Data data/extract/run1/extractions.jsonl — 5,859 papers with a structured record; data/fulltext/*/*/*/paper.cols.txt — 5,869 papers with readable full text; 7 venues, 2010–2026
External artefacts github.com/jazlan01/sst-guard at commit 9e013d4 (2026-04-30 UTC, the only commit), cloned 2026-08-21; arxiv.org/html/2604.27497 v1
Written 2026-08-21, against the corpus as extended on 2026-08-11 (commit 8a6b843)

Creating, not extending. sitemap.mjs reported 72 existing pages and no page in any namespace about server-side tracking. A sibling sweep of the eleven most plausible neighbours (privacy:cookies, privacy:requests, privacy:fingerprinting, privacy:javascript, privacy:consent, privacy:darkpatterns, design:website_selection, programming:crawler, practices:legal_enforcement, literature:corpus, literature:bibliography) found the topic mentioned in passing on three of them and covered on none:

Page What it already says Decision
privacy:requests CNAME cloaking and first-party proxying named twice as things that defeat hostname matching; AdGuard's CNAME list reviewed in its list table Left alone. The new page links to it and does not restate the filter-list material
privacy:javascript one clause: script URLs are “first-party-proxied or CNAME-cloaked” Left alone
privacy:cookies one clause: first-party cookies can be “set by” a third-party service Left alone
privacy:consent Google consent mode, which is adjacent (the gcd parameter appears in SST payloads) but a different subject Left alone

So this is a new page, not a broadening of a neighbour. The judgement is recorded in §9.

2. Populations and denominators

The extraction schema has no field for server-side tracking. That is the central methodological fact about this page and it forces two separate populations.

Tag Definition N
A-all papers with a structured extraction record 5,859
A-title title matches /server-side tracking/i 2
A-sweep ≥1 detection[] tuple whose phenomenon, technique, metric or prevalence matches /cname|server-?side/i 63
A-sweep ∧ tracking of those, ≥1 matching tuple also matches /track|cookie|advertis|adblock|filter list|tag manager|analytics|pixel|fingerprint/i 7
A-sweep ∖ tracking the residue, printed in full in §5 56
A-legal legal[] non-empty — the denominator for the compliance figure 402
A-crawled crawlConfig !== null OR studyTypes contains automated-web-crawl 1,120
B-scanned papers with a readable paper.cols.txt — the denominator for every full-text probe 5,869

B-scanned (5,869) is larger than A-all (5,859) by ten papers. These are papers whose PDF was fetched and rendered but which have no extraction record. The page uses 5,869 for probe figures and 5,859 for extraction figures and never mixes them; this note exists because the two look like a typo for one another.

The corpus populations were printed rather than assumed, and match OVERVIEW.md for the 2010–2026 corpus: crawled 1,120, measuredFrom 3,908, legal 402, empirical 5,118.

2.1 Probe widths, all of them

Memory of earlier runs on this site: a narrow full-text probe returns a confident wrong number. So the probe was layered from narrow to wide and every width is published, on the page as well as here. The page's claim that the topic is quiet does not rest on the narrow probe alone: all eleven narrow hits were opened and read individually, and the two that actually detect SST are named.

Probe Regex Papers Share of 5,869
sst_term /server[- ]?side (?:tracking|tagging)/i 11 0.2%
sgtm /\bsGTM\b|server[- ]?side (?:google )?tag manager|server[- ]?side google analytics|\bsGA\b/i 2 0.0%
capi /conversions? api|\bCAPI\b|events api/i 16 0.3%
capi_product /Conversions? API/ — case-sensitive, because the product is a proper noun 4 0.1%
moved_server the widest phrasing probe — see the script 18 0.3%
cname_cloak /CNAME[- ]?(?:cloak\w*|based|tracking|redirection|redirect\w*|delegation)/i 46 0.8%
cname_any /\bCNAME\b/i 151 2.6%
first_party_proxy /reverse[- ]?prox\w+|first[- ]?party (?:prox\w+|cloak\w*)/i 64 1.1%
measurement_protocol /measurement protocol/i 7 0.1%
tag_manager_any /\b(?:google )?tag manager\b|\bGTM\b|gtag\.js/i 48 0.8%

2.2 The ''capi'' probe, and why it is published at two widths

The wide API probe is this page's own worked example of the rule that probe width decides the claim. It was written wide first, and widening it from the product name to the abbreviation and to “Events API” multiplies the count by four while adding nothing:

Width Regex Papers
narrow /Conversions? API/ 4
wide /conversions? api|\bCAPI\b|events api/i 16

All twelve wide-only papers are noise, and all twelve are printed in §4.1 under – wide-only hits –:

Year Venue Why it matched
2012 TheWebConf capi- from “social capi-talists” at a column break
2016 USENIX Sec CAPI = Microsoft CryptoAPI
2019 NDSS GitHub's Events API
2021 NDSS an Android Events API
2021 USENIX Sec an Android Events API
2022 USENIX Sec GitHub's Events API
2023 USENIX Sec C++ “type conversion APIs”
2023 USENIX Sec deep-learning framework APIs
2023 USENIX Sec a browser resource-pool Events API
2024 USENIX Sec iOS supply-chain APIs
2025 PETS a voice-assistant device-management API
2025 USENIX Sec prompt-service APIs

The narrow probe had to be made case-sensitive to reach 4. Written as /conversions? api/i it returned 5, the extra being the C++ native-extension paper's “type conversion APIs”. The product is a proper noun, so the case-sensitive form is the correct one; the correction is recorded here rather than silently applied. The content page publishes both widths and states that nothing on it rests on the wide one.

2.3 Probe false positives, named

The probes were not trusted blind. Every pre-2019 hit was opened, because a 2010 paper cannot be about an architecture Google shipped in 2020, and all three are false positives:

Year Venue Paper Why it matched
2010 USENIX Sec An Analysis of Private Browsing Modes in Modern Browsers Genuinely contains “server-side tracking” — “Bugnosis [2] is a Firefox extension that warns users about server-side tracking using web bugs”. The phrase, not the architecture
2012 TheWebConf Understanding and Combating Link Farming in the Twitter Social Network \bCAPI\b matched the fragment capi- of “social capi-talists”, where the trailing hyphen sits at a column boundary and therefore counts as a word boundary
2016 USENIX Sec The Million-Key Question CAPI meaning Microsoft's CryptoAPI

The second of these is a cost of the column repair itself: a hyphen left at a column break creates a word boundary that \b honours. It is the reason the page names its three pre-2019 hits instead of tabulating them as if they were signal.

Whitespace is collapsed and end-of-line hyphenation joined before matching. Without that, server-\nside tracking — which is how it appears in a two-column PDF a large fraction of the time — silently fails, and the narrow probe under-reports. Files are read as latin1 so a stray byte cannot throw; every pattern is ASCII.

3. Running it

cd /workspace/artifacts/wiki

# corpus: two passes, both denominators printed
node scripts/report_server_side_tracking.mjs

# quotes: 25 checks against paper.cols.txt / paper.txt / paper.norm.txt
node scripts/sst_quotecheck.mjs

# external facts, re-fetched
sh scripts/sst_external_checks.sh

# the SST-Guard artefact audit needs the released archives unpacked first
git clone --depth 1 https://github.com/jazlan01/sst-guard.git sst/repo   # commit 9e013d4
unzip -oq sst/repo/dist_chrome.zip          -d /tmp/ext
unzip -oq sst/repo/adblock-filtered.csv.zip -d /tmp/af
node scripts/sst_guard_templates.mjs
node scripts/sst_guard_replay.mjs
node scripts/sst_guard_datacheck.mjs

scripts/lib.mjs resolves the dataset root, enforces that every query names its own population, and defines the sentinel set. All counts in every script are of papers, never tuples.

4. Unedited output

4.1 Corpus report

report_server_side_tracking-output.txt
=== PASS A — corpus shape (denominator for everything in pass A) ===
papers with a structured extraction record: 5859
  population all            5859
  population crawled        1120
  population measuredFrom   3908
  population webCrawled     857
  population legal          402
  population empirical      5118
 
=== PASS A — corpus papers whose TITLE names server-side tracking ===
  2024 PETS  The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web
  2024 PETS  Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy
 
=== PASS A — detection tuples of those papers (phenomenon | technique | metric | prevalence) ===
-- PETS 2024: The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web
   IP cloaking | Compared A/AAAA/CNAME organizations with visited-site organization. | share of visited websites | 996 cloaked subdomains on 767 websites (10.41%)
   identifier-cookie tracking | Compared cookie values across two user-specific crawls. | share of cloaked domains | 474 of 996 cloaked domains (47.59%)
   server-side tracking | Matched emerging cloaked trackers and shifted parameters/cookies across 2020–2022 crawls. | websites with SST | 28 of 7,367 visited websites
   Same-Origin Policy bypass | Identified cloaked trackers receiving IDs set by distinct third-party domains. | cloaked trackers receiving cross-origin IDs | 119 cloaked trackers and 91 distinct third-party cookie-setting domains
   browser-feature sharing | Searched SST request URLs, POST data, and script calls for fingerprinting features. | share of SST domains | 6 of 32 SST domains (18.75%)
   tracker blocking evasion | Checked shifted trackers against combined dated Disconnect lists. | shifted trackers listed by Disconnect | 40 of 69 trackers (57.97%)
   cookie-purpose distribution | Looked up cookie names in Cookiepedia. | classified SST cookies categorized as targeting/advertising | 35%
   crawlConfig: {"statefulness":"stateless","browsers":["Firefox"],"headless":"not-stated","consentAction":"no-interaction","interactionDepth":"landing-page-only","subpagesPerSite":null,"authentication":"none","languages":[],"repeatVisits":null,"evidence":{"quote":"we visit the home page of the website X and keep the page open until all content is loaded to capture all cookies stored","section":"results"}}
   population : [{"sourceList":"Alexa top 10,000","listVersion":"2021","n":10000,"unit":"websites","samplingMethod":"top-n","evidence":{"quote":"We used the OpenWPM platform [75] with the Firefox browser to perform three passive web measurement crawls of the Alexa top 10,000 websites [13]","section":"evaluation"}}]
   legal      : [{"law":"GDPR","jurisdiction":"EU","whatWasAssessed":"Lawfulness, consent, transparency, and personal-data processing","foundViolations":"yes","usedOrMentioned":"used","evidence":{"quote":"Together with a legal scholar, we also assessed the compliance of SST and noted that SST infringes both the GDPR and the ePD.","section":"conclusion"}},{"law":"ePrivacy Directive","jurisdiction":"EU","whatWasAssessed":"Consent for cookies and tracking technologies","foundViolations":"yes","usedOrMentioned":"used","evidence":{"quote":"websites including SST subdomains must ask user's consent for the deposit of cookies and other tracking technologies for advertising purposes.","section":"discussion"}}]
   artifacts  : {"links":[{"url":"https://github.com/mozilla/OpenWPM","kind":"source-code","what":"OpenWPM crawler platform","belongsToAuthors":false},{"url":"https://www.dropbox.com/scl/fo/s83a6mxo340ommat2asau/h?rlkey=svro2emp1fyv1d3pcrzwuqk75&dl=0","kind":"dataset","what":"Alexa top-10,000 websites","belongsToAuthors":false},{"url":"https://cookiepedia.co.uk/classify-cookies","kind":"other","what":"Cookie-purpose database","belongsToAuthors":false},{"url":"https://sitelookup.mcafee.com/","kind":"web-demo-or-service","what":"Website categorization service","belongsToAuthors":false},{"url":"https://disconnect.me/","kind":"other","what":"Disconnect tracker list","belongsToAuthors":false},{"url":"https://pypi.org/project/whois/","kind":"other","what":"WHOIS Python library","belongsToAuthors":false},{"url":"https://xlinux.nist.gov/dads/HTML/ratcliffObershelp.html","kind":"other","what":"Ratcliff-Obershelp algorithm","belongsToAuthors":false}],"codeUrl":null,"dataUrl":null,"availability":"none-mentioned","badge":null,"evidence":{"quote":"We used the OpenWPM platform [75] with the Firefox browser to perform three passive web measurement crawls","section":"evaluation"}}
-- PETS 2024: Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy
   Meta user-profile matching effectiveness | Measured Meta ad-campaign reach for tracker-specific remarketing audiences. | reach effectiveness | Conversions API matched 34%–51%; Meta Pixel matched 42%–61%
   User-matching accuracy | Compared overlap between recruiting and tracking Facebook ad campaigns. | campaign-audience overlap | Pixel accuracy was 100%; CAPI accuracy was 60%–65%
   Browser privacy restrictions | Compared Pixel and CAPI reach on Safari without third-party cookies. | reach effectiveness | Safari Pixel ranged from 0% to 51%; CAPI ranged from 0% to 19%
   Filter-list blocking | Monitored blocked network calls and cookies across endpoint configurations. | blocked requests and cookie transmission | Pixel calls were blocked; CAPI requests were unaffected
   VPN effects on server-side tracking | Replaced authentic participant IPs with known VPN-server IP addresses. | reach effectiveness | CAPI achieved 27% reach effectiveness with VPN-linked IP addresses
   User-agent spoofing | Compared CAPI events containing authentic versus randomly generated historical user agents. | reach effectiveness | Authentic and spoofed user agents each achieved 44%
   First-party cookie effects | Compared CAPI events with and without fbp or fbc values. | reach effectiveness and audience overlap | fbp did not improve effectiveness; fbc increased effectiveness from 20% to 23%
   Shared tracking endpoints | Compared isolated versus common Meta event endpoints. | matching accuracy | Pixel accuracy decreased from 100% to 81% with a common endpoint
   crawlConfig: null
   population : [{"sourceList":"Prolific","listVersion":null,"n":2400,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"We recruited 2400 users across four experiments performed between April and October 2023.","section":"evaluation"}},{"sourceList":"Prolific","listVersion":null,"n":725,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"We recruited 725 users across three experiments performed between April and October 2023.","section":"evaluation"}},{"sourceList":"Prolific","listVersion":null,"n":1350,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"We recruited 1350 users across four campaigns between March and October 2023.","section":"evaluation"}},{"sourceList":"Prolific","listVersion":null,"n":500,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"We recruited 500 users, and the experiment was performed in November 2023.","section":"evaluation"}},{"sourceList":"Prolific","listVersion":null,"n":250,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"We directed traffic from 250 users on Prolific.","section":"evaluation"}},{"sourceList":"Facebook advertising campaign","listVersion":null,"n":2791,"unit":"human-participants","samplingMethod":"convenience","evidence":{"quote":"A total of 2,791 users consented and took part in this experiment.","section":"methodology"}}]
   legal      : []
   artifacts  : {"links":[{"url":"https://developers.facebook.com/docs/business-sdk/getting-started/","kind":"other","what":"Meta Business SDK documentation","belongsToAuthors":false},{"url":"https://prolific.com/","kind":"other","what":"Participant crowdsourcing platform","belongsToAuthors":false},{"url":"https://ipinfo.io/","kind":"web-demo-or-service","what":"IP geolocation and VPN data service","belongsToAuthors":false},{"url":"https://vpnapi.io/","kind":"web-demo-or-service","what":"VPN and proxy detection service","belongsToAuthors":false},{"url":"https://easylist.to/","kind":"other","what":"EasyList filter lists","belongsToAuthors":false},{"url":"https://www.ip2location.io/","kind":"web-demo-or-service","what":"IP geolocation API","belongsToAuthors":false},{"url":"https://www.ipqualityscore.com","kind":"web-demo-or-service","what":"IP and VPN detection service","belongsToAuthors":false}],"codeUrl":null,"dataUrl":null,"availability":"none-mentioned","badge":null,"evidence":{"quote":"This method had the lowest incidence of false negatives among the approaches we tested.","section":"methodology"}}
 
=== PASS A — detection tuples anywhere in the corpus mentioning CNAME / server-side ===
papers matched by the wide sweep: 63 of 5859 with a structured extraction record
  of which web-tracking relevant: 7
  of which unrelated (the residue): 56
 
-- web-tracking relevant --
  2012 NDSS Ghost Domain Names: Revoked Yet Still Resolvable
     Resolver cache-lifetime behavior | Tracked TTL variations of the www.google.com CNAME record | distribution of resolver behavior types | over 65% stable; over 85% of failed resolvers were proxy or unstable
  2021 PETS The CNAME of the Game: Large-scale Analysis of DNS-based Tracking Evasion
     CNAME-based tracking prevalence | Filtered same-site non-origin requests using CNAME chains and signatures. | share of websites | 9.98% of the top 10,000 websites employed at least one CNAME-based tracker.
     CNAME-tracking growth | Applied an iterative IP-and-signature method across monthly HTTP Archive data. | relative increase in publishers | 21% growth over 22 months, compared with −3% and −8% for comparison tracker groups.
     Cookie leaks in HTTP headers | Excluded tracker-set, session, short, and non-identifying cookies; traced setters. | share of sites with leaks | 95% of sites with an identified CNAME tracker had one or more cookie leaks.
     Insecure CNAME tracking requests | Inspected HTTP Archive request protocols and active content. | number of websites | 19 websites requested active content over HTTP; 72 sent analytics over HTTP from HTTPS pages.
  2023 USENIX Cookie Crumbles: Breaking and Fixing Web Session Integrity
     server-side cookie-parser inconsistencies | Reflector programs plus fuzzed Cookie-header variations. | parser behaviors and vulnerabilities | -
  2024 PETS The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web
     IP cloaking | Compared A/AAAA/CNAME organizations with visited-site organization. | share of visited websites | 996 cloaked subdomains on 767 websites (10.41%)
     server-side tracking | Matched emerging cloaked trackers and shifted parameters/cookies across 2020–2022 crawls. | websites with SST | 28 of 7,367 visited websites
  2024 PETS Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy
     VPN effects on server-side tracking | Replaced authentic participant IPs with known VPN-server IP addresses. | reach effectiveness | CAPI achieved 27% reach effectiveness with VPN-linked IP addresses
  2024 PETS Opted Out, Yet Tracked: Are Regulations Enough to Protect Your Privacy?
     Server-side data sharing | Analyzed bids from advertisers not directly receiving leaked interests. | mean bid CPM relative to control | Advertisers not explicitly leaked user interests often still bid higher than control.
  2022 IEEE-SP Journey to the Center of the Cookie Ecosystem: Unraveling Actors' Roles and Relationships.
     CNAME cloaking | Detected aliases and matched them against a tracker blocklist | domains re-attributed | -
 
-- residue: matched "server-side"/"CNAME" but not about web tracking --
  2011 CCS WAPTEC: whitebox analysis of web applications for parameter tampering exploit construction.
     negative parameter tampering | Analyze server-side branches and data/control dependencies for hidden parameters | confirmed exploits | A privilege-escalation exploit in dcpportal
  2012 CCS Collaborative TCP sequence number inference attack: how to crack sequence number under a second.
     Windows Live Messenger command injection | Server-side TCP injection using inferred sequence and ACK numbers | demonstrated command effects | Injected commands added or removed friends, changed statuses, and sent messages
  2012 IMC Beyond friendship: modeling user activity graphs on social network-based gifting applications.
     Facebook gifting application activity | Server-side collection of anonymized sender, receiver, and timestamp records. | number of activities | iHeart 2.2 billion; iSmile 1.5 billion; Hugged 1.6 billion activities
  2012 IMC Content delivery and the natural evolution of DNS: remote dns trends, performance issues and alternative solutions.
     CDN use by popular websites | Downloaded index pages and linked objects; inspected redirects and CNAMEs | share of top sites and pageviews | Over 70% of the top 1,000 sites and 89% of their pageviews
  2014 CCS Security Analysis of the Estonian Internet Voting System.
     server-side vote alteration | Tainted installation ISO and counting-server malware | fraction of votes altered | 100% of votes in the demonstration
  2014 IEEE-SP When HTTPS Meets CDN: A Case of Authentication in Delegated Service.
     DNS-CDN deployment | Probed Alexa domains for CNAME or NS chains to surveyed CDN providers. | number of DNS-CDN-enabled sites | 14,199 DNS-CDN-enabled sites; 10,721 reachable with HTTPS
  2015 NDSS EKHUNTER: A Counter-Offensive Toolkit for Exploit Kit Infiltration
     Server-side exploit-kit vulnerabilities | Combined AC-VD, SQLI-VD, and MTS-VD static analyses | number of vulnerabilities and vulnerable kits | Over 180 vulnerabilities across 16 of 30 exploit kits
  2015 IMC From .academy to .zone: An Analysis of the New TLD Land Rush.
     Defensive redirects | Detected CNAME, browser-level, and single-large-frame redirects | share of domains | 236,380 off-domain redirects, or 6.5%
  2016 IMC Measuring the Adoption of DDoS Protection Services.
     DDoS protection service adoption | Counted domains referencing provider ASNs, CNAMEs, or NS records daily. | relative adoption growth | 1.24× over 1.5 years
     DNS traffic-diversion method | Compared DPS references in CNAME, NS, and IP-address ASN records. | share of DPS-using domains by method | CloudFlare authoritative name servers used by about 75% of CloudFlare-using domains
  2016 IMC Performance Characterization of a Commercial Video Streaming Service.
     Client download-stack buffering | Outlier detection using first-byte delay, instantaneous throughput, and server-side TCP estimates. | share of chunks and sessions | 0.32% of chunks and 3.1% of sessions had detected download-stack buffering.
  2016 WWW No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells.
     Server-side homephoning | Packet-trace analysis after instrumented honeypot execution. | share of dynamic-analysis shells | 4.8% initiated connections to 34 remote IP addresses.
  2018 IMC A Long Way to the Top: Significance, Structure, and Stability of Internet Top Lists.
     IPv6 adoption | Count routed IPv6 addresses in AAAA records and CNAME chains | share of domains IPv6-enabled | top lists had 11–13% IPv6 enablement versus 4% generally
     CDN prevalence | Resolve domains and match CNAMEs against CDN patterns | share of domains using CDNs | all Top 1M lists exceeded the general population by at least a factor of two
  2019 CCS MalMax: Multi-Aspect Execution for Automated Dynamic Web Server Malware Analysis.
     PHP server-side malware | MalMax dynamic multi-path execution with PhpMalScan heuristics | detected samples | 1,485 malware samples not detected by VirusTotal
  2019 IEEE-SP Does Certificate Transparency Break the Web? Measuring Adoption and Error Rate.
     Server-side SCT delivery | Compare SCT delivery sources in Chrome and website datasets. | share of SCTs or compliant websites using TLS extension | 47.97% of Chrome-observed SCTs came from TLS extensions; 50% of Alexa CT-compliant websites used them
  2019 IEEE-SP PhishFarm: A Scalable Framework for Measuring the Effectiveness of Evasion Techniques against Browser Phishing Blacklists.
     cloaking effectiveness | Applied six server-side or JavaScript HTTP request filters. | reduction in blacklisting likelihood | Geolocation, device-type, and JavaScript cloaking reduced blacklisting likelihood by over 55% on average.
  2019 IMC A First Look at the Crypto-Mining Malware Ecosystem: A Decade of Unrestricted Wealth.
     domain aliases | DNS and historical DNS resolution of extracted domains | number of CNAMEs | 215 different CNAMEs
  2019 IMC No More Chasing Waterfalls: A Measurement Study of the Header Bidding Ad-Ecosystem.
     HB implementation facets | Inspect response parameters and browser events | share of HB websites by facet | 48% server-side, 34.7% hybrid, 17.3% client-side
     Ad-slot bid prices | Extract transparent prices and infer server-side prices heuristically | CPM bid price | 300x250 median cost 0.031 CPM
  2019 NDSS understanding-open-ports-in-android-applications-discovery-diagnosis-and-security-assessment
     Android TCP/UDP open ports | On-device monitoring of /proc/net/tcp, tcp6, udp, and udp6; server-side clustering | share of monitored apps | 15.3% of 3,216 apps had TCP open ports
  2019 USENIX Less is More: Quantifying the Security Benefits of Debloating Web Applications
     server-side code execution | XDebug dynamic code-coverage profiling during stimulated requests | covered files, functions, and lines | -
  2020 IMC Analyzing Third Party Service Dependencies in Modern Web Services: Have We Learned from the Mirai-Dyn Incident?
     third-party CDN dependency | Rendered landing pages, extracted internal resources, queried CNAMEs, and matched CDN providers. | share of websites using CDNs | 97.6% of websites using CDNs use a third-party CDN
  2020 IEEE-SP TextExerciser: Feedback-driven Text Input Exercising for Android Applications.
     Client- versus server-side validation | Repeat app interaction with network connections enabled and disabled. | share of hints displayed offline | 86 of 649 hints were purely client-side; 563 required server support
  2020 NDSS Deceptive Previews: A Study of the Link Preview Trustworthiness in Social Platforms
     countermeasure bypass | Server-side and client-side redirections | successful bypasses | Twitter and LinkedIn defenses were bypassed
  2020 USENIX PhishTime: Continuous Longitudinal Measurement of the Effectiveness of Anti-phishing Blacklists
     Server-side cloaking | Compared cloud crawler requests with mobile-IP and anonymous-VPN requests. | share of evasive websites | at least 146 of 183 websites used server-side cloaking
  2020 USENIX The Ballot is Busted Before the Blockchain: A Security Analysis of Voatz, the First Internet Voting Application Used in U.S. Federal Elections
     vote alteration | Modified the client and analyzed server-side protocol capabilities. | - | Rooted-device and API-server attackers can alter votes.
  2020 WWW Apophanies or Epiphanies? How Crawlers Impact Our Understanding of the Web.
     server-side blocking | Matched HTTP errors, CAPTCHAs, browser errors, geo-blocking, and IP-abuse block pages. | successful page-load fraction and block-category rates | Over 16% variation in successful page loads; over 160 sites showed blocking
  2021 USENIX Blind In/On-Path Attacks and Applications to VPNs
     Server-side DNS hijacking | UDP port inference followed by transaction-ID brute forcing | successful injection rate | 75.3% with 15-second timeout; 48.1% with 10-second; 11.6% with 5-second
  2021 USENIX Injection Attacks Reloaded: Tunnelling Malicious Payloads over DNS
     DNS cache poisoning | Injected CNAME records and queried for poisoned cached records. | share and count of open resolvers | 8.0% (105,854) of open resolvers were vulnerable to cache poisoning via injection payloads.
  2021 USENIX Security Analysis of the Democracy Live Online Voting System
     Client-server data transmission | Reverse-engineered JavaScript and API calls using a compatible local server. | qualitative security and privacy analysis | Identity and ballot selections were sent to Democracy Live for server-side ballot generation.
  2020 IEEE-SP Dragonblood: Analyzing the Dragonfly Handshake of WPA3 and EAP-pwd.
     authentication bypasses | Black-box tests of invalid scalars, invalid elements, and reflection handling | implementations affected | All tested client and server-side EAP-pwd implementations were vulnerable to the invalid-curve attack
  2022 IMC ZDNS: a fast DNS toolkit for internet measurement.
     CAA record deployment | Querying CAA records for 93M base domains and following CNAMEs | share of NOERROR domains returning CAA records | 1.08M domains (1.69%) respond to CAA queries
  2022 PETS Setting the Bar Low: Are Websites Complying With the Minimum Requirements of the CCPA?
     DNSMPI geofencing | Compare rendered snapshots and server responses from Boston and California. | share among 12,222 DNSMPI websites | 2,101 (17%) exhibit dynamic link visibility; 62% client-side and 38% server-side
  2023 CCS Are we there yet? An Industrial Viewpoint on Provenance-based Endpoint Detection and Response Tools.
     server-side P-EDR memory consumption | Ran HOLMES, ProvDetector, and UNICORN on five datasets. | MB per host | None of the three systems met the <20MB/host requirement.
  2023 NDSS ReScan: A Middleware Framework for Realistic and Robust Black-box Web Application Scanning
     server-side code coverage | Measured unique server-side lines executed using XDebug. | unique executed lines of code | Coverage improvement ranged from 3% to 935%, averaging 168%.
  2023 PETS Heads in the Clouds? Measuring Universities’ Migration to Public Clouds: Implications for Privacy & Academic Freedom
     University cloud infrastructure adoption | Matched A, AAAA, and CNAME records to cloud-provider IPs and hostnames | share of institutions | U.S. institutions using all three major operators rose from 30.38% to 87.31%
     Cloud-hosted LMS | Matched CNAME targets against four LMS provider domains | share of institutions | 196 U.S. universities (75.38%) used cloud-hosted LMS in October 2022
  2023 IMC Stale TLS Certificates: Investigating Precarious Third-Party Access to Valid TLS Keys.
     managed-TLS departure | Compared consecutive daily Cloudflare NS and CNAME records. | stale certificates and effective second-level domains | 854K stale certificates representing 695K effective second-level domains over three months.
  2024 CCS Collapse Like A House of Cards: Hacking Building Automation System Through Fuzzing.
     BAS software and device vulnerabilities | BASE protocol-aware fuzzing with response and coverage monitoring | number of vulnerabilities discovered | 13 new vulnerabilities: 8 client-side and 5 server-side
     Server crashes and denial of service | Monitoring device responses and liveness after fuzzing | number of server-side vulnerabilities | 5 server-side vulnerabilities
  2024 NDSS dRR: A Decentralized, Scalable, and Auditable Architecture for RPKI Repository
     CDN hosting of publication points | Analyzed DNS, CNAMEs, HTTPS headers, IPs, and geographic latency | share of independent PPs | 8 of 61 PPs were hosted in CDNs
  2024 CCS Poster: Whether We Are Good Enough to Detect Server-Side Request Forgeries in PHP-native Applications?
     Server-side request forgery vulnerabilities | Static call-graph construction and SSRF-specific taint analysis | number of detected vulnerabilities | 24 SSRF vulnerabilities in 13 applications: 20 known and 4 new
  2024 NDSS Understanding the Implementation and Security Implications of Protective DNS Services
     Dangling cloud DNS resources | Matched IPs to cloud ASNs/PTRs, tested reachability and ports, and checked CNAME registration. | affected PDNS resolvers | 7 obsolete cloud IPs affected 21 PDNSes; one seizable CNAME affected 5
     DNS rewriting policy distribution | Categorized returned secure IPs, special-use IPs, CNAMEs, empty data, and error codes. | share of identified PDNSes | Secure IP rewriting used by 56.45% of PDNSes
  2024 PETS A Black-Box Privacy Analysis of Messaging Service Providers' Chat Message Processing
     server-side message analysis | Monitored requests to unique URLs embedded in chat messages. | share of messaging services | 34% of messaging services conducted server-side URL access
     client-side token leakage | Scanned intercepted HTTP(S), WebSocket, and WebRTC traffic for token encodings. | share of analyzed messengers with CNAME chains | CNAME redirect chains were recognized for 60% of analyzed messengers
  2024 USENIX A Mixed-Methods Study on User Experiences and Challenges of Recovery Codes for an End-to-End Encrypted Service
     Recovery-code dialog interactions | Opt-in server-side logging of dialog button interactions. | number of users and interactions | 32,784 opened the code popup; 7,546 copied and 1,873 printed it
  2024 USENIX Atropos: Effective Fuzzing of Web Applications for Server-Side Vulnerabilities
     server-side PHP vulnerabilities | Eight instrumented sink-specific bug oracles with fuzzing feedback | true positives, false positives, precision, and true positive rate | Seven previously unknown vulnerabilities in real-world applications; 49 of 52 benchmark vulnerabilities in the 40-core configuration
  2024 WWW Cold Start or Hot Start? Robust Slow Start in Congestion Control with A Priori Knowledge for Mobile Web Services.
     Application-limit state | Measured unsent server-side bytes during replayed application traffic. | share of time without application data | 14.46% of the time there was no application data waiting to be sent
  2025 NDSS EvoCrawl: Exploring Web Application Code and State using Evolutionary Search
     server-side code coverage | Coverage instrumentation for PHP and Rails applications | lines of code covered | 59% average increase over the next-best scanner
  2025 USENIX Big Help or Big Brother? Auditing Tracking, Profiling, and Personalization in Generative AI Assistants
     server-side response generation | Network traffic analysis identified response-generation architecture. | share of assistants | 8 out of 9 extensions operated server-side.
  2025 WWW Beyond Visual Confusion: Understanding How Inconsistencies in ENS Normalization Facilitate Homoglyph Attacks.
     Server-side normalization behavior | Uses four to thirteen library-probing requests and latency-based remote API identification. | minimum requests required | server-side libraries identified with as few as 4 and up to 13 requests
  2026 USENIX DaLens: Charting DNS Self-Amplification Threats at Large
     amplification primitive thresholds | Bounded binary search over controlled DNS resolution configurations | threshold for NS fetch, NS chain, CNAME chain, and DDLG | Most resolvers tolerated deep or wide configurations
  2026 PETS Waterfall: A Capsule-Based Framework for Evaluating Traffic Watermarking in Anonymity Systems
     watermark removal | Constant 20 ms server-side pacing of buffered RTP packets. | TPR, FPR1, FPR2 | Detection converged to near-chance performance under the pacing defense.
     mixed-background false positives | Detectors ran over concurrent browsing, downloads, and uploads routed through Tor. | FPR1 | Server-side proxy FPR1 reached 1.28% for 0.5 s intervals among viable flows.
  2026 NDSS NetRadar: Enabling Robust Carpet Bombing DDoS Detection
     carpet bombing DDoS | Gateway analysis of traffic and server-side features using NetRadar | packet-level Accuracy, Precision, and Recall | NetRadar achieves over 94% accuracy in all carpet bombing detection scenarios
     runtime feature mismatch | Randomly erasing server-side features during training and testing | F1-score and recall | F1-score over 0.9 across tested victim-server counts
  2025 CCS Exploiting the Shared Storage API.
     network timing covert channel | Delayed worklet execution and server-side request timing | bits leaked per page | 33-bit identifiers feasible with delays of 0.36–1.82 seconds
  2025 USENIX XSSky: Detecting XSS Vulnerabilities through Local Path-Persistent Fuzzing
     reflected server-side XSS | Static source-sink analysis followed by path-persistent fuzzing and browser-popup oracle | confirmed vulnerabilities | 60 previously unknown vulnerabilities across 20 PHP applications
  2017 IEEE-SP SoK: Exploiting Network Printers.
     PostScript website information disclosure | Malicious PostScript files listing server-side files | share of evaluated websites | 8 of 12 websites
  2025 NDSS Automatic Insecurity: Exploring Email Auto-configuration in the Wild
     Server-side security defects | Parsed configuration files and checked redirects, parameters, priorities, and consistency. | share of supported domains | 49,013 domains had security defects; 43,566 Type-I and 11,824 Type-II defects.
  2026 PETS Dead Domains, Living Data: A Privacy Risk Analysis of Domain Lifecycle in Android Apps
     dangling CNAMEs | Automated dangling-resource detection during DNS analysis | share of late-renewed domains with dangling CNAMEs | 218 of 861 late-renewed domains (25.3%)
  2024 IEEE-SP Where Are the Red Lines? Towards Ethical Server-Side Scans in Security and Privacy Research.
     Legal and ethical boundaries of server-side scanning | Semi-structured interviews using five scenario vignettes. | qualitative themes and assessments | -
     Operator comfort with server-side scans | Online survey using five-point Likert-scale scenario assessments. | percentage of 119 respondents | 57.9% were comfortable or somewhat comfortable with 3S generally
  2021 IEEE-SP Black Widow: Blackbox Data-driven Web Scanning.
     server-side code coverage | Xdebug records executed PHP lines for each request | number of unique executed lines | Black Widow had the highest coverage on 9 out of 10 applications
 
=== PASS B — full-text probe: pattern definitions ===
  sst_term               /server[- ]?side (?:tracking|tagging)/i
  sgtm                   /\bsGTM\b|server[- ]?side (?:google )?tag manager|server[- ]?side google analytics|\bsGA\b/i
  capi                   /conversions? api|\bCAPI\b|events api/i
  capi_product           /Conversions? API/
  moved_server           /(?:moved?|shift(?:ed|ing)?|relocat\w+|migrat\w+|rout\w+|forward\w+|proxy|proxied|proxying)[^.]{0,60}(?:to|on|onto|via|through) the server[- ]?side|server[- ]?to[- ]?server (?:tracking|reporting|communication|data shar)/i
  cname_cloak            /CNAME[- ]?(?:cloak\w*|based|tracking|redirection|redirect\w*|delegation)/i
  cname_any              /\bCNAME\b/i
  first_party_proxy      /reverse[- ]?prox\w+|first[- ]?party (?:prox\w+|cloak\w*)/i
  measurement_protocol   /measurement protocol/i
  tag_manager_any        /\b(?:google )?tag manager\b|\bGTM\b|gtag\.js/i
 
=== PASS B — hits per probe, denominator = papers with a readable paper.cols.txt ===
papers scanned: 5869
  sst_term                  11  0.2%
  sgtm                       2  0.0%
  capi                      16  0.3%
  capi_product               4  0.1%
  moved_server              18  0.3%
  cname_cloak               46  0.8%
  cname_any                151  2.6%
  first_party_proxy         64  1.1%
  measurement_protocol       7  0.1%
  tag_manager_any           48  0.8%
 
=== PASS B — sst_term OR sgtm OR capi, by year (2026 is provisional: see literature:corpus) ===
  2010    1 of  118 scanned  0.8%
  2011    0 of  116 scanned  0.0%
  2012    1 of  151 scanned  0.7%
  2013    0 of  125 scanned  0.0%
  2014    0 of  165 scanned  0.0%
  2015    0 of  190 scanned  0.0%
  2016    1 of  182 scanned  0.5%
  2017    0 of  232 scanned  0.0%
  2018    0 of  254 scanned  0.0%
  2019    1 of  402 scanned  0.2%
  2020    1 of  402 scanned  0.2%
  2021    2 of  380 scanned  0.5%
  2022    3 of  546 scanned  0.5%
  2023    4 of  720 scanned  0.6%
  2024    3 of  701 scanned  0.4%
  2025    4 of  770 scanned  0.5%
  2026    4 of  415 scanned  1.0%
 
=== PASS B — unions of the probes, because the page quotes them and they are not sums ===
sst_term alone                                  : 11
sst_term OR sgtm OR capi                        : 25
moved_server total / adds new to that union     : 18 / 16
sst_term OR sgtm OR capi OR moved_server        : 41
The probes overlap, so these are unions and never sums. Denominator: 5869
 
=== PASS B — the capi probe split by width, because the wide one is mostly noise ===
wide   /conversions? api|\bCAPI\b|events api/i : 16 papers
narrow /Conversions? API/ : 4 papers
-- narrow hits (the advertising product) --
   2024 PETS     client-side-and-server-side-tracking-on-meta-effectiveness-and-accuracy
   2026 PETS     a-year-under-the-dsa-ad-transparencys-uneven-landscape
   2026 PETS     clicking-into-exposure-uncovering-privacy-risks-of-google-click-identifier-in-yo
   2026 USENIX   bridges-to-self-silent-web-to-app-tracking-on-mobile-via-localhost
-- wide-only hits (the residue: GitHub/Android Events APIs, CryptoAPI, "social capi-talists") --
   2012 WWW      understanding-and-combating-link-farming-in-the-twitter-social-network
   2016 USENIX   the-million-key-question-investigating-the-origins-of-rsa-public-keys
   2019 NDSS     how-bad-can-it-git-characterizing-secret-leakage-in-public-github-repositories
   2021 NDSS     preventing-and-detecting-state-inference-attacks-on-android
   2021 USENIX   understanding-malicious-cross-library-data-harvesting-on-android
   2022 USENIX   characterizing-the-security-of-github-ci-workflows
   2023 USENIX   bilingual-problems-studying-the-security-risks-incurred-by-native-extensions-in
   2023 USENIX   differential-testing-of-cross-deep-learning-framework-apis-revealing-inconsisten
   2023 USENIX   pool-party-exploiting-browser-resource-pools-for-web-tracking
   2024 USENIX   ihunter-hunting-privacy-violations-at-scale-in-the-software-supply-chain-on-ios
   2025 PETS     why-am-i-seeing-double-an-investigation-of-device-management-flaws-in-voice-assi
   2025 USENIX   prsa-prompt-stealing-attacks-against-real-world-prompt-services
 
=== PASS B — the sst_term papers, listed in full (this is the whole population) ===
  2010 USENIX   an-analysis-of-private-browsing-modes-in-modern-browsers
  2020 PETS     inferring-tracker-advertiser-relationships-in-the-online-advertising-ecosystem-u
  2022 PETS     atom-ad-network-tomography
  2022 PETS     on-dark-patterns-and-manipulation-of-website-publishers-by-cmps
  2024 PETS     client-side-and-server-side-tracking-on-meta-effectiveness-and-accuracy
  2024 PETS     the-devil-is-in-the-details-detection-measurement-and-lawfulness-of-server-side
  2025 CCS      piixel-leaks-passive-identification-of-personally-identifiable-information-leaka
  2025 IMC      cookieguard-characterizing-and-isolating-the-first-party-cookie-jar
  2026 PETS     clicking-into-exposure-uncovering-privacy-risks-of-google-click-identifier-in-yo
  2026 USENIX   bridges-to-self-silent-web-to-app-tracking-on-mobile-via-localhost
  2026 WWW      tgnn-enhancing-pixel-tracking-detection-via-llm-driven-annotation-and-gat-powere
 
=== PASS B — the cname_cloak papers, listed in full (the neighbouring technique) ===
  2013 WWW      the-anatomy-of-ldns-clusters-findings-and-implications-for-web-content-delivery
  2014 IEEE-SP  when-https-meets-cdn-a-case-of-authentication-in-delegated-service
  2016 IMC      measuring-the-adoption-of-ddos-protection-services
  2017 CCS      poster-x-ray-your-dns
  2018 IMC      dissecting-apples-meta-cdn-during-an-ios-update
  2018 USENIX   end-users-get-maneuvered-empirical-analysis-of-redirection-hijacking-in-content
  2019 IMC      a-look-at-the-ecs-behavior-of-dns-resolvers
  2019 WWW      pythia-a-framework-for-the-automated-analysis-of-web-hosting-environments
  2020 CCS      dns-cache-poisoning-attack-reloaded-revolutions-with-side-channels
  2020 IMC      analyzing-third-party-service-dependencies-in-modern-web-services-have-we-learne
  2021 IMC      trackersift-untangling-mixed-tracking-and-functional-web-resources
  2021 NDSS     cv-inspector-towards-automating-detection-of-adblock-circumvention
  2021 PETS     privacy-preference-signals-past-present-and-future
  2021 PETS     the-cname-of-the-game-large-scale-analysis-of-dns-based-tracking-evasion
  2021 USENIX   injection-attacks-reloaded-tunnelling-malicious-payloads-over-dns
  2022 IEEE-SP  journey-to-the-center-of-the-cookie-ecosystem-unraveling-actors-roles-and-relati
  2022 IEEE-SP  towards-automated-auditing-for-account-and-session-management-flaws-in-single-si
  2022 IMC      measuring-uid-smuggling-in-the-wild
  2022 PETS     on-dark-patterns-and-manipulation-of-website-publishers-by-cmps
  2022 USENIX   khaleesi-breaker-of-advertising-and-tracking-request-chains
  2022 USENIX   leaky-forms-a-study-of-email-and-password-exfiltration-before-form-submission
  2022 USENIX   webgraph-capturing-advertising-and-tracking-information-flows-for-robust-blockin
  2022 WWW      investigating-advertisers-domain-changing-behaviors-and-their-impacts-on-ad-bloc
  2022 WWW      measuring-the-privacy-vs-compatibility-trade-off-in-preventing-third-party-state
  2023 CCS      cookiegraph-understanding-and-detecting-first-party-tracking-cookies
  2023 CCS      read-between-the-lines-detecting-tracking-javascript-with-bytecode-classificatio
  2023 IMC      stale-tls-certificates-investigating-precarious-third-party-access-to-valid-tls
  2023 NDSS     navigating-murky-waters-automated-browser-feature-testing-for-uncovering-tracking-vectors
  2023 USENIX   defining-broken-user-experiences-and-remediation-tactics-when-ad-blocking-or-tra
  2024 CCS      blocking-tracking-javascript-at-the-function-granularity
  2024 IMC      of-choices-and-control-a-comparative-analysis-of-government-hosting
  2024 PETS     a-black-box-privacy-analysis-of-messaging-service-providers-chat-message-process
  2024 PETS     opted-out-yet-tracked-are-regulations-enough-to-protect-your-privacy
  2024 PETS     the-devil-is-in-the-details-detection-measurement-and-lawfulness-of-server-side
  2024 USENIX   purl-safe-and-effective-sanitization-of-link-decoration
  2025 CCS      byte-by-byte-unmasking-browser-fingerprinting-at-the-function-level-using-v8-byt
  2025 CCS      piixel-leaks-passive-identification-of-personally-identifiable-information-leaka
  2025 IEEE-SP  only-as-strong-as-the-weakest-link-on-the-security-of-brokered-single-sign-on-on
  2025 IMC      canvassing-the-fingerprinters-characterizing-canvas-fingerprinting-use-across-th
  2025 IMC      cookieguard-characterizing-and-isolating-the-first-party-cookie-jar
  2025 PETS     beyond-the-request-harnessing-http-response-headers-for-cross-browser-web-tracke
  2025 PETS     tracking-without-borders-studying-the-role-of-webviews-in-bridging-mobile-and-we
  2026 NDSS     crack-in-the-armor-underlying-infrastructure-threats-to-rpki-publication-point-reachability
  2026 PETS     clicking-into-exposure-uncovering-privacy-risks-of-google-click-identifier-in-yo
  2026 PETS     cryptographically-secured-domain-validation
  2026 WWW      tracking-the-stray-sheep-understanding-dns-response-manipulation-in-the-wild
 
=== PASS B — cname_cloak by year ===
  2010    0 of 118
  2011    0 of 116
  2012    0 of 151
  2013    1 of 125
  2014    1 of 165
  2015    0 of 190
  2016    1 of 182
  2017    1 of 232
  2018    2 of 254
  2019    2 of 402
  2020    2 of 402
  2021    5 of 380
  2022    9 of 546
  2023    5 of 720
  2024    6 of 701
  2025    7 of 770
  2026    4 of 415
 
=== PASS B — residue: probe hits that are NOT about web tracking ===
cname_any minus cname_cloak is printed here so the part this page does not classify stays visible.
papers: 105
  2010 IMC      comparing-dns-resolvers-in-the-wild
  2010 IMC      improving-content-delivery-using-provider-aided-distance-information
  2010 IMC      netalyzr-illuminating-the-edge-network
  2010 IMC      youtube-traffic-dynamics-and-its-interplay-with-a-tier-1-isp-an-isp-perspective
  2011 IEEE-SP  click-trajectories-end-to-end-analysis-of-the-spam-value-chain
  2011 IMC      web-content-cartography
  2012 IMC      content-delivery-and-the-natural-evolution-of-dns-remote-dns-trends-performance
  2012 NDSS     ghost-domain-names-revoked-yet-still-resolvable
  2013 NDSS     the-core-of-the-matter-analyzing-malicious-traffic-in-cellular-carriers
  2013 USENIX   practical-comprehensive-bounds-on-surreptitious-communication-over-dns
  2014 CCS      poster-blind-separation-of-benign-and-malicious-events-to-enable-accurate-malwar
  2014 IMC      dnssec-and-its-potential-for-ddos-attacks-a-comprehensive-measurement-study
  2014 USENIX   brahmastra-driving-apps-to-test-the-security-of-third-party-components
  2014 USENIX   on-the-feasibility-of-large-scale-infections-of-ios-devices
  2014 USENIX   the-long-taile-of-typosquatting-domain-names
  2014 USENIX   understanding-the-dark-side-of-domain-parking
  2015 IMC      from-academy-to-zone-an-analysis-of-the-new-tld-land-rush
  2016 IMC      zone-poisoning-the-how-and-where-of-non-secure-dns-dynamic-updates
  2017 IMC      millions-of-targets-under-attack-a-macroscopic-characterization-of-the-dos-ecosy
  2017 USENIX   global-measurement-of-dns-manipulation
  2017 WWW      who-controls-the-internet-analyzing-global-threats-using-property-graph-traversa
  2018 CCS      domain-validation-for-mitm-resilient-pki
  2018 IMC      a-long-way-to-the-top-significance-structure-and-stability-of-internet-top-lists
  2018 IMC      is-the-web-ready-for-ocsp-must-staple
  2018 IMC      ldplayer-dns-experimentation-at-scale
  2018 IMC      the-rise-of-certificate-transparency-and-its-implications-on-the-internet-ecosys
  2018 USENIX   who-is-answering-my-queries-understanding-and-characterizing-interception-of-the
  2018 WWW      panning-for-gold-com-understanding-the-dynamics-of-domain-dropcatching
  2019 IEEE-SP  phishfarm-a-scalable-framework-for-measuring-the-effectiveness-of-evasion-techni
  2019 IMC      a-first-look-at-the-crypto-mining-malware-ecosystem-a-decade-of-unrestricted-wea
  2019 IMC      cache-me-if-you-can-effects-of-dns-time-to-live
  2019 IMC      dns-observatory-the-big-picture-of-the-dns
  2019 NDSS     cracking-the-wall-of-confinement-understanding-and-analyzing-malicious-domain-take-downs
  2019 NDSS     dns-cache-based-user-tracking
  2020 CCS      zombie-awakening-stealthy-hijacking-of-active-domains-through-dns-hosting-referr
  2020 IEEE-SP  iclab-a-global-longitudinal-internet-censorship-measurement-platform
  2020 IMC      a-haystack-full-of-needles-scalable-detection-of-iot-devices-in-the-wild
  2020 IMC      out-of-sight-not-out-of-mind-a-user-view-on-the-criticality-of-the-submarine-cab
  2020 NDSS     a-practical-approach-for-taking-down-avalanche-botnets-under-real-world-constraints
  2020 USENIX   nxnsattack-recursive-dns-inefficiencies-and-vulnerabilities
  2020 USENIX   poison-over-troubled-forwarders-a-cache-poisoning-attack-targeting-dns-forwardin
  2021 CCS      lets-downgrade-lets-encrypt
  2021 IEEE-SP  cross-layer-attacks-and-how-to-use-them-for-dns-cache-poisoning-device-tracking
  2021 NDSS     favocado-fuzzing-the-binding-code-of-javascript-engines-using-semantically-correct-test-cases
  2021 NDSS     understanding-worldwide-private-information-collection-on-android
  2021 USENIX   accurately-measuring-global-risk-of-amplification-attacks-using-ampmap
  2021 USENIX   can-i-take-your-subdomain-exploring-same-site-attacks-in-the-modern-web
  2021 USENIX   domain-shadowing-leveraging-content-delivery-networks-for-robust-blocking-resist
  2021 USENIX   how-great-is-the-great-firewall-measuring-chinas-dns-censorship
  2021 USENIX   the-hijackers-guide-to-the-galaxy-off-path-taking-over-internet-resources
  2021 WWW      demystifying-illegal-mobile-gambling-apps
  2022 CCS      exposing-the-rat-in-the-tunnel-using-traffic-analysis-for-tor-based-malware-dete
  2022 IEEE-SP  measuring-and-mitigating-the-risk-of-ip-reuse-on-public-clouds
  2022 IMC      zdns-a-fast-dns-toolkit-for-internet-measurement
  2022 NDSS     auto-draft-206
  2022 NDSS     auto-draft-209
  2022 USENIX   xdri-attacks-and-how-to-enhance-resilience-of-residential-routers
  2023 CCS      silence-is-not-golden-disrupting-the-load-balancing-of-authoritative-dns-servers
  2023 CCS      tsuking-coordinating-dns-resolvers-and-queries-into-potent-dos-amplifiers
  2023 CCS      under-the-dark-a-systematical-study-of-stealthy-mining-pools-ab-use-in-the-wild
  2023 IEEE-SP  fashion-faux-pas-implicit-stylistic-fingerprints-for-bypassing-browsers-anti-fin
  2023 IEEE-SP  webspec-towards-machine-checked-analysis-of-browser-security-mechanisms
  2023 IMC      ecn-with-quic-challenges-in-the-wild
  2023 IMC      the-cloud-strikes-back-investigating-the-decentralization-of-ipfs
  2023 PETS     heads-in-the-clouds-measuring-universities-migration-to-public-clouds-implicatio
  2023 USENIX   nrdelegationattack-complexity-ddos-attack-on-dns-recursive-resolvers
  2023 USENIX   temporal-cdn-convex-lens-a-cdn-assisted-practical-pulsing-ddos-attack
  2023 USENIX   the-maginot-line-attacking-the-boundary-of-dns-caching-protection
  2024 IEEE-SP  dnsbomb-a-new-practical-and-powerful-pulsing-dos-attack-exploiting-dns-queries-a
  2024 IEEE-SP  practical-attacks-against-dns-reputation-systems
  2024 IEEE-SP  tudoor-attack-systematically-exploring-and-exploiting-logic-vulnerabilities-in-d
  2024 IMC      exploring-the-ecosystem-of-dns-https-resource-records-an-end-to-end-perspective
  2024 IMC      the-wisdom-of-the-measurement-crowd-building-the-internet-yellow-pages-a-knowled
  2024 NDSS     drr-a-decentralized-scalable-and-auditable-architecture-for-rpki-repository
  2024 NDSS     reqsminer-automated-discovery-of-cdn-forwarding-request-inconsistencies-and-dos-attacks-with-grammar-based-fuzzing
  2024 NDSS     understanding-the-implementation-and-security-implications-of-protective-dns-services
  2024 USENIX   camp-compositional-amplification-attacks-against-dns
  2024 USENIX   fledging-will-continue-until-privacy-improves-empirical-analysis-of-googles-priv
  2024 USENIX   loopy-hell-ow-infinite-traffic-loops-at-the-application-layer
  2024 USENIX   resolverfuzz-automated-discovery-of-dns-resolver-vulnerabilities-with-query-resp
  2024 USENIX   spf-beyond-the-standard-management-and-operational-challenges-in-practice-and-pr
  2024 USENIX   web-platform-threats-automated-detection-of-web-security-issues-with-wpt
  2024 WWW      discovering-and-measuring-cdns-prone-to-domain-fronting
  2024 WWW      investigations-of-top-level-domain-name-collisions-in-blockchain-naming-services
  2024 WWW      unfiltered-measuring-cloud-based-email-filtering-bypasses
  2025 CCS      rebirthday-attack-reviving-dns-cache-poisoning-with-the-birthday-paradox
  2025 IEEE-SP  predator-directed-web-application-fuzzing-for-efficient-vulnerability-validation
  2025 IEEE-SP  resolution-without-dissent-in-path-per-query-sanitization-to-defeat-surreptitiou
  2025 IMC      decoding-dnssec-errors-at-scale-an-automated-dnssec-error-resolution-framework-u
  2025 IMC      dive-into-the-cloud-unveiling-the-ab-usage-of-serverless-cloud-function-in-the-w
  2025 IMC      how-i-learned-to-stop-worrying-and-love-ipv6-measuring-the-internets-readiness-f
  2025 IMC      sibling-prefixes-identifying-similarities-in-ipv4-and-ipv6-prefixes
  2025 IMC      towards-a-non-binary-view-of-ipv6-adoption
  2025 IMC      unraveling-the-complexities-of-mta-sts-deployment-and-management-in-securing-ema
  2025 NDSS     cross-origin-web-attacks-via-http-2-server-push-and-signed-http-exchange
  2025 NDSS     misdirection-of-trust-demystifying-the-abuse-of-dedicated-url-shortening-service
  2025 USENIX   dns-flare-a-flush-reload-attack-on-dns-forwarders
  2025 USENIX   double-edged-shield-on-the-fingerprintability-of-customized-ad-blockers
  2025 USENIX   lost-in-the-mists-of-time-expirations-in-dns-footprints-of-mobile-apps
  2025 USENIX   your-shield-is-my-sword-a-persistent-denial-of-service-attack-via-the-reuse-of-u
  2026 NDSS     coordmail-exploiting-smtp-timeout-and-command-interaction-to-coordinate-email-middleware-for-convergence-amplification-attack
  2026 NDSS     loki-proactively-discovering-online-scams-by-mining-toxic-search-queries
  2026 NDSS     should-i-trust-you-rethinking-the-principle-of-zone-based-isolation-dns-bailiwick-checking
  2026 PETS     dead-domains-living-data-a-privacy-risk-analysis-of-domain-lifecycle-in-android
  2026 USENIX   dalens-charting-dns-self-amplification-threats-at-large
 
(per-paper probe matrix written to /tmp/sst_probe.json)

4.2 The shipped SST-Guard detection templates, recovered and exercised

The preprint says its Value Templates are “shown in Table 2”. The templates that actually decide a detection are the ones compiled into the released extension, and there is no source in the repository — only dist_chrome.zip. They were therefore extracted from the minified service worker (assets/index.ts-oObg4PXQ.js, arrays Pa = cookies, zd = window, ti = network) by evaluating the declaration, which is the only faithful way to recover RegExp objects, and then exercised.

sst_guard_templates-output.txt
==== recovered template counts
cookies 5   window 10   network 23
README.md claims: 5 cookie, 10 window, 23 network
 
==== network templates, verbatim (feature vector index = order)
  [ 0] cid            /(?:GA\d+\.\d+\.)?\d{8,10}\.17\d{8,11}/
  [ 1] tid            /G-[A-Z0-9]{10}/
  [ 2] dl             /https:\/\/[\^\s&#]+/
  [ 3] gtm            /45[A-Za-z]{1,2}[0-9]{1,2}[a-z0-9A-Z]{1,13}(v8|v9)[A-Za-z0-9]+/
  [ 4] ul             /([A-Za-z]{2}[-_][A-Za-z]{2})|([A-Za-z]{2})|([Ee]nglish)/
  [ 5] tag_exp        /[0-9]{9}(~[0-9]{9}){8,}/
  [ 6] gcd            /13([a-zA-Z_]{1}\d{1}){5}/
  [ 7] sid            /\d{10}/
  [ 8] _p             /\d{13}/
  [ 9] pscdl          /(noapi|denied)/
  [10] tfd            /\d{3,4}/
  [11] uaa            /x86/
  [12] uab            /64/
  [13] uafvl          /^(?:\[\{"brand":"Not\)A;Brand","version":"\d(?:\.\d){3}"\},\{"brand":"Chromium","version":"\d{3}\.(?:\d\.\d{3}){2}"\},\{"brand":"Go{2}gle Chrome","version":"\d{3}\.(?:\d\.\d{3}){2}"\}\]|Not\)A%\dB{2}rand(?:%\dB\d(?:\.\d){3}%\dC{2}hromium%\dB\d{3}\.(?:\d\.\d{3}){2}%\dCGo{2}gle%\d{2}Chrome%\dB|;\d(?:\.\d){3}\|Chromium;\d{3}\.(?:\d\.\d{3}){2}\|Go{2}gle%\d{2}Chrome;)\d{3}\.(?:\d\.\d{3}){2})$/
  [14] uap            /Linux/
  [15] uapv           /5\.15\.0/
  [16] en             /(page_view|scroll|ad_impression|user_engagement|view_item_list|view_item|scroll_depth|view_promotion|scroll_75|time_engaged|mp_pageview|ddm_standard_event|click|Scroll Depth|page_load_time|scroll_25|ads_impression|scroll_50|scroll_tracking|proctor|Newsfeed_show|Playbook Fired|scroll_90|page_scroll)/
  [17] _gid           /\d{8,10}\.\d{9,10}/
  [18] _u             /([A-Za-z]{17}|[A-Za-z]{14}|[A-Za-z]{9}|[A-Za-z]{16})~/
  [19] _eu            /([A-Za-z]{2,3}[A-Z]{4})|([A-Z]{2,4})|([A-Za-z]{2,3})/
  [20] gcs            /G[0-3-]{3}/
  [21] tcfd           /[0-6]{2}[0-9a-zA-Z]{2,3}[a-z]?$/
  [22] ep.user_agent  /^([Mm]ozilla\/\d+\.\d+\s+\([^)]+\)\s+.+)$/
 
==== cookie templates, verbatim
  [0] pattern_1_standard_ga    /^GA1\.[123](-2)?\.[0-9]{6,10}\.17[0-9]{8,13}$/
  [1] pattern_2_double_prefix  /^GA1\.1\.GA1\.2\.[0-9]{9,10}\.17[0-9]{11}$/
  [2] pattern_3_alphanumeric   /^GA1\.2\.[a-z]{3}\.[A-Za-z0-9]{11}$/
  [3] pattern_4_uuid           /^GA1\.1\.[a-z0-9]{8}-([0-9a-z]{4}-){3}[0-9a-z]{12}$/
  [4] pattern_5_ga4            /^GS2\.1\.s17[0-9]{8}(\$[a-z][0-9]+)+$/
 
==== window templates, verbatim
  [ 0] dataLayer                          /"event":\s*"gtm\.(dom|load|js|scrollDepth)"|"event":\s*"coreWebVitals"/
  [ 1] gaGlobal[hid]                      /"hid":\s*\d+/
  [ 2] gaGlobal[vid]                      /"vid":\s*"\d+\.17[0-9]{8}"/
  [ 3] gaGlobal[fromCookie]               /"from_cookie":\s*(?:true|false)/
  [ 4] google_tag_data[chrome_version]    /"144\.0\.7559\.97"/
  [ 5] google_tag_data[brand_strings]     /"(Chromium|Google Chrome|Not_A Brand)"/
  [ 6] google_tag_data[architecture]      /"arm"/
  [ 7] google_tag_data[bitness]           /"64"/
  [ 8] google_tag_data[platform_version]  /"26\.2\.0"/
  [ 9] google_tag_data[container_id]      /"G-[A-Z0-9]{5,10}"/
 
==== CLAIM 1 — the `dl` template matches no ordinary URL (character-class bug)
  regex: /https:\/\/[\^\s&#]+/
  the class is [\^\s&#] — an escaped literal caret, NOT a negation, so it matches
  "https://" followed only by ^, whitespace, & or #.
  no      "https://example.com/"
  no      "https://www.bbc.co.uk/news/article?x=1"
  no      "https://a"
  MATCH   "https://^"
  MATCH   "https:// "
  MATCH   "https://&"
 
==== CLAIM 2 — templates that pin the crawling machine, not Google Analytics
  network uap                                /Linux/
  network uapv                               /5\.15\.0/
  network uaa                                /x86/
  network uab                                /64/
  window  google_tag_data[chrome_version]    /"144\.0\.7559\.97"/
  window  google_tag_data[platform_version]  /"26\.2\.0"/
  window  google_tag_data[architecture]      /"arm"/
  window  google_tag_data[bitness]           /"64"/
  A crawl from Windows, macOS-x86, or a Chrome other than 144.0.7559.97 fails these.
  The preprint says the crawl ran Chrome v138 on Linux 5.15.0 / Ubuntu 22.04, so
  `uapv` = /5\.15\.0/ is that kernel and `uap` = /Linux/ is that OS.
  uapv MATCH 5.15.0
  uapv no    6.8.0
  uapv no    10.0.0
  uapv no    15.3.1
  chrome_version MATCH "144.0.7559.97"
  chrome_version no    "138.0.7204.100"
  chrome_version no    "151.0.1.2"
 
==== CLAIM 3 — the hard-coded "17" epoch prefix expires
  cookie  pattern_1_standard_ga    /^GA1\.[123](-2)?\.[0-9]{6,10}\.17[0-9]{8,13}$/
  cookie  pattern_2_double_prefix  /^GA1\.1\.GA1\.2\.[0-9]{9,10}\.17[0-9]{11}$/
  cookie  pattern_5_ga4            /^GS2\.1\.s17[0-9]{8}(\$[a-z][0-9]+)+$/
  window  gaGlobal[vid]            /"vid":\s*"\d+\.17[0-9]{8}"/
  network cid                      /(?:GA\d+\.\d+\.)?\d{8,10}\.17\d{8,11}/
  a 10-digit unix time starting "17" spans 1700000000 .. 1799999999
  = 2023-11-14 .. 2027-01-15
  t=1700000000 (2023-11-14)  cid MATCH  _ga MATCH
  t=1770000000 (2026-02-02)  cid MATCH  _ga MATCH
  t=1799999999 (2027-01-15)  cid MATCH  _ga MATCH
  t=1800000000 (2027-01-15)  cid no     _ga no   
  t=1900000000 (2030-03-17)  cid no     _ga no   
 
==== CLAIM 4 — network templates that match values with nothing to do with GA
  value                   sid   _p    uab   tfd   _eu   gcs   tcfd  ul    _gid  
  "1700000000"            HIT   .     .     HIT   .     .     HIT   .     .     
  "1234567890"            HIT   .     .     HIT   .     .     .     .     .     
  "1700000000000"         HIT   HIT   .     HIT   .     .     HIT   .     .     
  "9999999999999"         HIT   HIT   .     HIT   .     .     .     .     .     
  "64"                    .     .     HIT   .     .     .     .     .     .     
  "x86_64"                .     .     HIT   .     .     .     .     .     .     
  "404"                   .     .     .     HIT   .     .     .     .     .     
  "en-US"                 .     .     .     .     HIT   .     .     HIT   .     
  "de"                    .     .     .     .     HIT   .     .     HIT   .     
  "AB"                    .     .     .     .     HIT   .     .     HIT   .     
  "G---"                  .     .     .     .     .     HIT   .     .     .     
  "1234567890.1234567890" HIT   .     .     HIT   .     .     .     .     HIT   
  Every HIT above sets a 1 in the feature vector for a value no tracker produced.
  This is consistent with the preprint reporting 73.36% precision for the
  request-level classifier on its own training labels (Table 1, validation).
 
==== CLAIM 5 — the two container-id templates disagree on length
  network tid              /G-[A-Z0-9]{10}/
  window  container_id     /"G-[A-Z0-9]{5,10}"/
  G-ABCDE        tid no      container_id MATCH
  G-ABCDE12345   tid MATCH   container_id MATCH
  G-BD66HNTQLT   tid MATCH   container_id MATCH
 
==== CLAIM 6 — hostnames the extension hard-excludes as client-side GA
  t.includes("google-analytics")||t.includes("doubleclick")||t.includes("googleads")||t==="analytics.google.com"||t.endsWith(".analytics.google.com"))

4.3 Replaying the shipped extractor over the authors' published rows

sst_guard_replay-output.txt
rows parsed from /tmp/af/adblock-filtered.csv: 40198   (skipped as malformed: 0)
denominator for every percentage below: 40198 published sGA requests
 
feature           CSV=1  shipped=1    agree  agree(anyparam)
cid               98.6%      91.4%    92.8%           100.0%
tid               89.4%      87.7%    98.3%           100.0%
dl                98.4%       0.0%     1.6%             1.6%
gtm               97.2%      86.9%    89.0%            91.5%
ul               100.0%      92.4%    92.4%           100.0%
tag_exp           17.8%      17.3%    99.5%           100.0%
gcd               88.7%      86.2%    97.5%           100.0%
sid               99.7%      91.4%    91.8%           100.0%
_p                97.5%      91.3%    93.9%           100.0%
pscdl             95.9%      93.3%    97.5%           100.0%
tfd               99.7%      92.7%    93.0%           100.0%
uaa               96.1%      93.3%    97.1%           100.0%
uab               98.1%      93.3%    95.1%           100.0%
uafvl             99.5%       0.0%     0.5%             0.5%
uap               96.2%      93.3%    97.1%           100.0%
uapv              95.8%      93.3%    97.5%           100.0%
en                63.7%      59.3%    95.6%           100.0%
_gid              99.6%       0.7%     1.1%            98.9%
_u                 2.9%       0.7%    97.8%           100.0%
_eu               99.8%      81.5%    81.8%            99.8%
gcs                0.0%      73.3%    26.7%            24.5%
tcfd               0.0%      11.0%    89.0%             1.4%
ep.user_agent      0.0%       2.9%    97.1%            93.7%
 
any-parameter agreement exactly 100%: 14 of 23 features (cid, tid, ul, tag_exp, gcd, sid, _p, pscdl, tfd, uaa, uab, uap, en, _u)
rounds to 100.0% but is not: 1 — uapv 99.9975%
 
per-cell agreement, shipped extractor vs published columns: 79.3%
per-cell agreement, any-parameter variant:                  83.1%
 
first disagreeing row per feature:
  dl              CSV=1 shipped=0  https://www.cloudflare.com/go9u/ga/g/c?v=2&tid=G-SQCRB0TXZW&gtm=45g92e6320h2v895724479z8890325950za20kzb890325950zd890325950&_p=1772546969316&gcs=G111&gcd=13r3r
  uafvl           CSV=1 shipped=0  https://www.cloudflare.com/go9u/ga/g/c?v=2&tid=G-SQCRB0TXZW&gtm=45g92e6320h2v895724479z8890325950za20kzb890325950zd890325950&_p=1772546969316&gcs=G111&gcd=13r3r
  _gid            CSV=1 shipped=0  https://www.cloudflare.com/go9u/ga/g/c?v=2&tid=G-SQCRB0TXZW&gtm=45g92e6320h2v895724479z8890325950za20kzb890325950zd890325950&_p=1772546969316&gcs=G111&gcd=13r3r
  _eu             CSV=1 shipped=0  https://www.cloudflare.com/go9u/ga/g/c?v=2&tid=G-SQCRB0TXZW&gtm=45g92e6320h2v895724479z8890325950za20kzb890325950zd890325950&_p=1772546969316&gcs=G111&gcd=13r3r
  gcs             CSV=0 shipped=1  https://www.cloudflare.com/go9u/ga/g/c?v=2&tid=G-SQCRB0TXZW&gtm=45g92e6320h2v895724479z8890325950za20kzb890325950zd890325950&_p=1772546969316&gcs=G111&gcd=13r3r
  cid             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  gtm             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  ul              CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  tag_exp         CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  gcd             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  sid             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  _p              CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  pscdl           CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  tfd             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  uaa             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  uab             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  uap             CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  uapv            CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  en              CSV=1 shipped=0  https://bttrack.com/engagement/event?input=%7B%22globalId%22%3A%22355d64c7-ddde-4e9b-af01-f935bbcfd123%22%2C%22creativeId%22%3A%22%22%2C%22placementId%22%3A%22%
  tcfd            CSV=0 shipped=1  https://data2.statista.com/g/collect?v=2&tid=G-2T9EQH2NQC&gtm=45he6320v881129043za20kzb72042057zd72042057&_p=1772571702731&gcs=G111&gcu=1&gcd=13r3v3r3r5l1&npa=0
  ep.user_agent   CSV=0 shipped=1  https://mailchimp.com/metrics/ga/g/c?v=2&tid=G-N5HD1RTH6E&gtm=45g92e6330h2v881708235z872249685za20kzb72249685zd72249685&_p=1772583880303&gcs=G100&gcd=13p3p3p3p5
  tid             CSV=1 shipped=0  https://sgtm.ixbt.com/al/gtag/js?id=G-ZEN51QVN2K&l=analytics&cx=c&gtm=4e6321&sign=abfe41c26055067c28bbb13edc0cd53258745df26671f9b7e539ac4135897414_20260304
  _u              CSV=1 shipped=0  https://en.zalando.de/api/t/gtm/g/collect?v=2&tid=G-MDW1S9PQPW&gtm=45he6321v9173628720za204zd9173628720&_p=1772625512418&gcs=G100&gcd=13q3q3q2q5l1&npa=1&dma_cps

4.4 The preprint's headline figures against its own released data

sst_guard_datacheck-output.txt
=== sst-domains.txt — paper claims sGA detected on 6,314 domains ===
lines: 6314   distinct: 6314
paper: "we detect sGA on 4.21% (6,314) of Tranco top-150K websites"; also "we first run the
classifier on 128,222 domains". 6314/150000 = 4.21% ; 6314/128222 = 4.92%
 
=== ground-truth.csv — paper claims 403 ground-truth sGA domains from Tranco top-10k ===
rows: 1286   distinct tranco_domain: 404
columns: chr, tranco_domain, event_name, container_id
403/10000 = 4.03%  (paper: "4.02% (403) sGA domains")
 
=== sst-guard-output.csv — per-modality output on the ground-truth domains ===
rows: 403   columns: domain | Network Request (Per-Request) | Network Request (Domain-Level) | Cookies | Window Variables | Meta-Classifier | Combined Classifier
  Network Request (Per-Request)      True on  393 of 403  97.5%
  Network Request (Domain-Level)     True on  387 of 403  96.0%
  Cookies                            True on  390 of 403  96.8%
  Window Variables                   True on  401 of 403  99.5%
  Meta-Classifier                    True on  398 of 403  98.8%
  Combined Classifier                True on  396 of 403  98.3%
distinct domains in output: 403
ground-truth domains absent from output: 1
output domains absent from ground truth: 0
  e.g. 
README.md names this file "ground-truth-labels.csv"; the repository ships it as "sst-guard-output.csv". No file called ground-truth-labels.csv exists.
 
=== adblock-filtered.csv — paper claims 40,199 sGA requests on 6,314 domains ===
data rows: 40198
distinct 'domain': 6314   distinct 'landing_domain': 4856
rows with predicted_label=1: 40198  on 6314 distinct 'domain'
rows with predicted_probability < 0.7 (the paper's chosen threshold): 0 (0.0%)
requests whose path is exactly /g/collect: 28014 (69.7% of requests)
requests whose path ends in /collect:      32269 (80.3%)
paper reports these two as shares of DOMAINS (71.94% and 79.97% of sGA endpoints), not requests.
distinct request paths: 1420
   28014  /g/collect
     557  /api/t/gtm/g/collect
     556  /metrics/ag/g/c
     470  /metrics/g/collect
     375  /measurement4/g/collect
     274  /sgtm/g/collect
     230  /metrics/ga/g/c
     210  /googletaggatewayall/ga/g/c
     195  /st
     151  /t/gtm/g/collect
 
=== adblock-filtered.csv — the same two path figures computed per DOMAIN ===
domains with >=1 request on path /g/collect : 4591 of 6314 (72.71%)   paper: 4,542 / 71.94%
domains with >=1 request whose path ends /collect: 5192 of 6314 (82.23%)   paper: 5,049 / 79.97%
 
=== adblock-filtered.csv — subdomain vs path-based routing (paper: 81.59% / 18.4%) ===
requests whose request host is a strict subdomain of 'domain': 22051 (54.9% of requests)
distinct 'domain' with >=1 such request: 3389 of 6314 (53.67%)
distinct 'domain' where EVERY request host equals the apex or www (path-based): 2925 (46.33%)
 
The paper does not state which rule it used. Three defensible rules:
  A  host is a strict subdomain, www stripped : 3389 (53.67%)
  B  host is anything other than the apex     : 6056 (95.91%)
  C  host differs from the crawled landing    : 5425 (85.92%)
  paper: 81.59% subdomain-based / 18.4% path-based (5,152 subdomains analysed further)

4.5 Stale-number guard

Every figure on the page outside a <file> block, a <code> block or a footnote is either produced by one of the scripts above or declared in the guard's EXTERNAL table with the sentence in the source it came from. The counts are in the block below rather than in this sentence, because an earlier version of this sentence said 142 while the block said 146 — see §10.4 finding 8.

What this proves and does not prove. It proves a number appears in a script output, or is declared with a source. It does not prove the number is the right one for the sentence it sits in — that has to be re-read by hand, and was. Two false positives of the digit extractor are declared rather than special-cased, so the extractor stays simple: 733 from the commit hash 0ad9e733, and the version string 202608210608.

sst_number_guard-output.txt
figures on the page (outside <file>/<code>/footnotes): 152
declared external, with a source:                     64
unaccounted:                                          0
 
OK — every figure is either produced by a script in this repo or declared with its source.

4.6 External facts, re-fetched

sst_external_checks-output.txt
run date: 2026-08-21T06:55Z
 
=== EasyPrivacy: does the list carry server-side-specific rules? ===
! Version: 202608210644
! Last modified: 21 Aug 2026 06:44 UTC
! Commit: 94b83d3bdde6b86dbceabfad0996066f0f9df66d
total lines: 56674
-- the three rule families SST-Guard names --
29:&sst.gcsub=
2996:?v=2&tid=G-$~third-party
3097:&sst.sw_exp=
-- per-site rules whose host starts with a server-side tagging prefix --
  ||sgtm[.-]  3 rules
  ||sst[.-]  9 rules
  ||gtm[.-]  5 rules
  ||tagging[.-]  3 rules
  ||metrics[.-]  1368 rules
  ||analytics[.-]  628 rules
-- SST-Guard's named example rule --
16159:||mstm.motorsport.com^
 
=== AdGuard CNAME-cloaked tracker list: still maintained? ===
  {"full_name": "AdguardTeam/cname-trackers", "description": "This repository contains a list of popular CNAME trackers", "pushed_at": "2026-08-17T15:56:27Z", "archived": false, "stargazers_count": 426}
 
=== arXiv 2604.27497 (SST-Guard): how many versions, any journal ref? ===
    <title>arXiv Query: search_query=&amp;id_list=2604.27497&amp;start=0&amp;max_results=10</title>
    <updated>2026-08-21T06:18:28Z</updated>
      <title>SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild</title>
      <updated>2026-04-30T06:50:14Z</updated>
      <published>2026-04-30T06:50:14Z</published>
  (an <arxiv:journal_ref> line would appear above if it had been published at a venue)
 
=== Has SST-Guard appeared at a venue? PETS 2026 posters ===
  SST-Guard: Detecting and Characterizing Server-side Google Analytics in the Wild 
  -- and what PETS says posters are:
  Proposals will be lightly reviewed for relevance to PETS and adherence to formatting guidelines. Please see the Call for Papers for a non-exhaustive list of topics of interest.
  Posters will not be peer-reviewed
 
=== Has Mertens et al. appeared at a venue? CCS 2026 accepted papers ===
  Detecting and Measuring Client- and Server-Side Google Tag Manager and its Tags in 80K Websites
 
 
  Gilles Mertens (Inria Centre at University Grenoble-Alpes)
  Nataliia Bielova (Inria Centre at University Côte d’Azur)
  Vincent Roca (Inria Centre at University Grenoble-Alpes)
  Ahmed Bouhoula (ETH Zurich)
  (CCS is one of this corpus's seven venues; CCS 2026 has not been held, which is
   why this paper is absent from every corpus figure on the page)
 
=== HAL hal-05466083 (Mertens et al.): venue, type, date ===
{
  "response":{
    "numFound":1,
    "start":0,
    "maxScore":5.5644565,
    "numFoundExact":true,
    "docs":[{
      "title_s":["An Analysis of Client-and Server-Side Google Tag Manager and its Tags on the Web"],
      "authFullName_s":["Gilles Mertens","Nataliia Bielova","Vincent Roca","Ahmed Bouhoula","Marouanne Akassab"],
      "uri_s":"https://hal.science/hal-05466083v2",
      "docType_s":"UNDEFINED",
      "submittedDate_s":"2026-02-06 09:38:02"
    }]
  }
}
=== Google: current server-side tagging recommendation ===
  200  https://developers.google.com/tag-platform/tag-manager/server-side/intro
  200  https://developers.google.com/tag-platform/tag-manager/server-side/custom-domain
  200  https://privacysandbox.google.com/blog/privacy-sandbox-next-steps

5. Folds, and their residue

Nothing on this page aggregates a free-text name, so no name fold was written. What this page has instead are two classification steps, and both print their residue in full.

5.1 The A-sweep split, and its 56-paper residue

The wide detection[] sweep on /cname|server-?side/i matches 63 papers. “Server-side” is an extremely common phrase in security work that has nothing to do with tracking — server-side request forgery, server-side malware, server-side vote alteration, server-side cloaking in phishing, CNAME chains in CDN and TLS measurement. Splitting on a tracking predicate leaves 7 relevant and 56 residue. The residue is not dropped: it is printed in full in §4.1 under – residue: matched “server-side”/“CNAME” but not about web tracking –, and it is the evidence for the page's claim that the extraction schema cannot answer this page's question.

The 7 relevant papers, in full, so the reader can disagree with the split:

Year Venue Paper Why kept
2012 NDSS Ghost Domain Names: Revoked Yet Still Resolvable Borderline. Tracks TTL of a www.google.com CNAME record; it is DNS work, not tracking work. Kept by the predicate, and it is a false positive of the predicate
2021 PETS The CNAME of the Game [2Dimova, Yana; Acar, Gunes; Olejnik, Lukasz; Joosen, Wouter; Van Goethem, Tom (2021): "The CNAME of the game: Large-scale analysis of DNS-based tracking evasion", Proceedings on Privacy Enhancing Technologies 2021:394–412. (DOI) (Link)] The canonical CNAME-cloaking measurement
2022 IEEE S&P Journey to the Center of the Cookie Ecosystem Cookie-ecosystem roles; CNAME appears as an actor relationship
2023 USENIX Sec Cookie Crumbles: Breaking and Fixing Web Session Integrity Borderline; server-side cookie-parser inconsistencies. Also a false positive of the predicate
2024 PETS The Devil is in the Details [3Fouad, Imane; Santos, Cristiana; Laperdrix, Pierre (2024): "The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web", Proceedings on Privacy Enhancing Technologies 2024(4):450-465. (DOI)] The subject
2024 PETS Client-side and Server-side Tracking on Meta [4El fraihi, Asmaa; Amieur, Nardjes; Rudametkin, Walter; Goga, Oana (2024): "Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy", Proceedings on Privacy Enhancing Technologies 2024(3):431-445. (DOI)] The subject
2024 PETS Opted Out, Yet Tracked Tracking after opt-out; CNAME appears among evasion techniques

So the honest reading is 7 by the predicate, 5 on inspection, 2 that actually study SST. The page states the “two papers” figure, which is the one that was checked by hand, and reports 63 and 56 as the sweep and its residue.

5.2 The cname_any residue

cname_any (151 papers) minus cname_cloak (46) leaves 105 papers that say “CNAME” without saying anything about cloaking or tracking. They are printed in full in §4.1 under PASS B — residue. Spot-reading them: DNS resolver behaviour, CDN mapping, RPKI publication points, certificate issuance, DNS manipulation. None belongs on this page. This residue is why the page quotes 46 and not 151 and says which is which.

5.3 No fold was needed, and why that is a limitation

The absence of a name fold is itself a finding: there is no field to fold. Had the extraction carried, say, detection.phenomenon == “server-side tracking” as a recognised value, this page could have been built the way crawling_location or requests were. It could not. Every corpus figure here is a probe result, and probe results are weaker evidence than folded enum counts. The page says so.

6. Quotes and figures checked against the source papers

scripts/sst_quotecheck.mjs checks 25 quotes and literal figures. 25 located, 0 not located. Each is checked against three renderings — paper.cols.txt, paper.txt, paper.norm.txt — with whitespace collapsed, end-of-line hyphenation joined, and curly quotes, apostrophes and dashes normalised.

sst_quotecheck-output.txt
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  10.41% of the visited websites
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  we found that 996
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  first-party subdomains belong to a different organization compared to
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  We detect that cloaked domains appear on 767 websites
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  we detected that 474 (47.59%) domains are either receiving or setting an identifier on the user’s browser
OK   [devil] via paper.cols.txt  We detect 32 SST domains sharing URL parameters names and cookies with trackers no longer appearing on the website
OK   [devil] via paper.cols.txt  389, out of 7,367 visited websites, track users behind a cloaked domain
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  we used stateless crawling instances
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  we did not interact with cookie banners on the visited
OK   [devil] via paper.cols.txt  We found that 119 cloaked trackers receive at least one ID cookie set by a different third-party domain
OK   [devil] via paper.cols.txt  we detect that 18.75% of the SST domains are receiving at least one of the user’s browser and machine features
OK   [devil] via paper.cols.txt  out of the detected 69 trackers shifted to the server side, 40 (57.97%) are included in the Disconnect filter list
OK   [devil] via paper.cols.txt  We found that 35% of the cookies set/sent to the SST domains and classified by Cookiepedia are categorized as Targeting/Advertising
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  we eliminate subvalues with a length smaller than 8
OK   [devil] via paper.cols.txt  we eliminate subvalues that have more than 66% similarity across the two crawls according to the Ratcliff-Obershelp algorithm
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  We do not impose any restrictions on the cookie lifetime
OK   [devil] via paper.cols.txt  Amazon and Google alone are responsible for 81.25% of SST domains
OK   [devil] via paper.cols.txt  The main limitation is that we only detect a subset of the servers partaking in SST
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  cookies planned for 2025 is having severe ramifications
OK   [devil] via paper.cols.txt  17.86% of websites including SST are categorized as Online Shopping
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  these trackers appear on 397 websites (5.28% of the visited
OK   [devil] via paper.cols.txt,paper.txt,paper.norm.txt  Cloaked trackers 474 389
OK   [meta] via paper.cols.txt  Meta’s server-side technology can match between 34% and 51% of website visitors to user profiles
OK   [meta] via paper.cols.txt,paper.txt,paper.norm.txt  links between 42% and 61% of user profiles
OK   [meta] via paper.cols.txt  while the Pixel-based tracking achieves 100% accuracy, less than 65% of the profiles matched by server-side tracking are accurate
 
25 located, 0 not located, of 25 checked
 
located but NOT in paper.cols.txt (column interleaving, not a quoting error): 0

Six of the 25 had to be shortened to fragments, and the reason is a property of the corpus rather than of the papers. The .cols repair interleaves the two columns of a PETS PDF mid-sentence in places. For example the raw text around the 996-subdomain figure reads:

... 6,273 (83.39%) of the first-party subdomains. we found that 996
Starting without any cookies or cached resources forces the browser
first-party subdomains belong to a different organization compared
to contact all trackers again and recreate all cookies, thus allowi...

So “we found that 996 first-party subdomains belong to a different organization” — verbatim in the PDF — cannot be located as a contiguous string in any rendering. The two halves were checked separately. No quote failed for a reason other than this, and none of the three renderings located a quote that paper.cols.txt missed, so .cols was sufficient here once fragments were used.

6.1 An internal inconsistency in the peer-reviewed paper

Fouad et al. [3Fouad, Imane; Santos, Cristiana; Laperdrix, Pierre (2024): "The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web", Proceedings on Privacy Enhancing Technologies 2024(4):450-465. (DOI)] report the number of websites carrying a cloaked tracker twice and differently. Both are located verbatim:

Location Text
Abstract “389, out of 7,367 visited websites, track users behind a cloaked domain”
Table 1 Cloaked trackers | 474 | 389
§5.3 prose “these trackers appear on 397 websites (5.28% of the visited websites)”

5.28% of 7,367 is 389.0, not 397. Two of the three statements say 389, and the percentage attached to the third says 389. The page uses 389 and says why. A second, softer ambiguity was noticed and deliberately not published: §5.4 says “we detected 32 cross-site trackers shifted to the server side” in a paragraph whose other figures are 32 SST domains and 69 shifted tracker subdomains, so “32 cross-site trackers” may be a repetition of the SST-domain count rather than a separate quantity. It is ambiguous rather than wrong, and no figure on the page depends on it.

7. External sources, and how each was verified

Claim on the page Primary source How verified
Google shipped server-side tagging in August 2020 Google's own launch material, as cited by [3Fouad, Imane; Santos, Cristiana; Laperdrix, Pierre (2024): "The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web", Proceedings on Privacy Enhancing Technologies 2024(4):450-465. (DOI)] §4.4 and [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] §2.1 Taken from two independent peer-reviewed/preprint statements rather than from the Google blog post, whose per-post URL has moved
Google now recommends same-origin serving first, ahead of a subdomain developers.google.com/tag-platform/tag-manager/server-side/custom-domain (“Last updated 2025-06-27”) and …/manual-setup-guide (“Last updated 2026-05-08”) Read from the rendered page 2026-08-21. Two sentences quoted verbatim in the page's footnote. curl returns a JavaScript shell for these URLs, so the provenance script checks only that they return HTTP 200; the quotes were read by a fetch-and-render tool. This is the weakest verification on the page and is flagged as such in the footnote itself
Chrome will keep third-party cookies; no standalone prompt privacysandbox.google.com/blog/privacy-sandbox-next-steps, Anthony Chavez, 2025-04-22 Fetched 2026-08-21; sentence quoted verbatim. Note the older privacysandbox.com/news/privacy-sandbox-next-steps/ URL 301-redirects here
EasyPrivacy carries server-side-specific rules easylist.to/easylist/easyprivacy.txt Downloaded 2026-08-21. Version: 202608210608, Commit: 0ad9e733cadaffac3c0b445bf27f33d3da5546da, 56,674 lines. Rules located by line number: &sst.gcsub= (29), ?v=2&tid=G-$~third-party (2996), &sst.sw_exp= (3097), ||mstm.motorsport.com^ (16159). The list changes several times a day; re-run the script rather than citing this sentence
AdGuard's CNAME-cloaked tracker list is actively maintained GitHub REST API on AdguardTeam/cname-trackers Fetched 2026-08-21: archived: false, pushed_at: 2026-08-17T15:56:27Z
SST-Guard is not peer-reviewed: arXiv v1 only, plus a PETS 2026 poster export.arxiv.org/api/query?id_list=2604.27497; petsymposium.org/2026/accepted-posters.php; petsymposium.org/2026/cfposters.php Fetched 2026-08-21. arXiv: a single entry, published and updated both 2026-04-30T06:50:14Z — so v1 only — and no <arxiv:journal_ref> element, which is what arXiv emits once a paper has a venue. The first version of this table said “preprint with no venue”, which the currency reviewer refuted: the paper is on the PETS 2026 accepted-posters list. The qualification that saves the framing is PETS's own: “Proposals will be lightly reviewed for relevance to PETS and adherence to formatting guidelines” and “Posters will not be peer-reviewed”. All three checks are now in sst_external_checks.sh
Mertens et al. 2026 is accepted at ACM CCS 2026 sigsac.org/ccs/CCS2026/program/accepted-papers.html; HAL API on halId_s:hal-05466083 Fetched 2026-08-21. The CCS accepted-papers page carries “Detecting and Measuring Client- and Server-Side Google Tag Manager and its Tags in 80K Websites” with all five HAL authors. The first version of this table concluded the opposite from HAL and DBLP alone: HAL still says docType_s: UNDEFINED, submittedDate_s: 2026-02-06, no conferenceTitle_s and no journalTitle_s, and DBLP lists the authors' EuroS&P 2025 paper and no 2026 one. Neither repository knows about an acceptance until publication, which is the lesson: for a 2026 paper, check the venue's own accepted-papers page, not the preprint servers. Now in sst_external_checks.sh
The SST-Guard artefacts are as described github.com/jazlan01/sst-guard Cloned 2026-08-21. Single commit 9e013d4 of 2026-04-30 UTC (git log shows 2026-04-29 21:20 -0700; the page and this table use UTC so they agree with the GitHub API). 37 MB: four data files plus dist_chrome.zip
Moti et al. found SST on 19 of 50 pharmacy sites, with a 36-parameter heuristic the paper's own PDF at gunesacar.net/assets/bitter-pill-pharmacy-privacy-dpm-25.pdf Fetched and text-extracted 2026-08-21. “we found that 19 of the 50 sites used SST”; “This yielded a list of 36 parameters, which we searched for in all requests”
The 2025–2026 corpus papers cite SST as the reason their own defences fail the papers' own paper.cols.txt Read directly. CookieGuard's sentence is quoted verbatim on the page

7.1 Sources rejected, and why

Source Why rejected
Vendor marketing pages for Meta CAPI, Microsoft CAPI, TikTok Events API, Snapchat CAPI, Reddit CAPI, Netflix Conversion API The page needs the fact that these products exist and are sold on ad-blocker resilience, and [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] §2.1 already quotes each vendor's own wording with a citation. Citing the marketing pages directly would add six links that rot and would import the vendors' framing. The page says “Meta, Microsoft, TikTok, Snapchat, Reddit and Netflix all sell an equivalent” and leaves the sourcing to the preprint
Stape.io product pages Named in the preprint as the source of the base64 obfuscation template and as the second-largest CNAME host. That is a measurement result, not a vendor claim, so it is cited to the preprint. No independent verification of Stape's own product descriptions was attempted and none is claimed
Agency and consultancy blog posts on “server-side tagging” (several appeared at the top of search results) Exactly the SEO-listicle failure mode this site has been caught by before. None was used and none should be re-added: they contain no measurement and their claims about detectability are marketing
Simo Ahava's blog, cited by the preprint as its reference for sGTM A well-regarded practitioner source, but it is a blog and the page makes no claim that needs it
hal.science PDF of Mertens et al. Behind an Anubis bot wall that defeats curl, WebFetch and a headless Playwright Chromium. The paper itself was therefore never read — only its HAL metadata and abstract via the HAL API, plus [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] §7.3's description of it. The page's sentences about it are limited to what the abstract supports, and §8 records this as the largest hole in the page

8. What could not be established

  • The Mertens et al. 2026 paper was not read, and this is the largest hole in the page. HAL's Anubis bot wall blocked curl, WebFetch and a headless Playwright Chromium (all three return “Making sure you're not a bot!” or “Oh noes!”); only the HAL API metadata and abstract were obtained. Everything the page says about its method therefore comes from [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] §7.3, which is a competitor's characterisation of it, and everything it says about its results comes from the HAL abstract. It matters more than when this note was first written, because the paper turned out to be accepted at CCS 2026 — peer-reviewed, at one of this corpus's own seven venues. Read it from the CCS proceedings when they appear and correct the row.
  • No crawl was run. The SST-Guard audit is a source audit of released code and data. Nothing here tests whether SST-Guard's classifier is accurate in the field; the finding is narrower and stated narrowly on the page: its released artefacts do not reproduce its released numbers.
  • The 81.59% / 18.4% routing split could not be reproduced because the preprint does not state the rule. Three defensible readings of the released columns give 53.67%, 85.92% and 95.91%. The closest is “request host differs from the crawled landing domain” at 85.92%. The page reports the spread rather than picking one.
  • Whether the window-modality templates were re-derived on a different machine from the crawl is an inference, not an established fact. The evidence is that the network templates pin Linux 5.15.0 / x86 (matching the paper's stated crawl host) while the window templates pin Chrome 144.0.7559.97, platform 26.2.0 and arm. The page says the two “pin a different machine” and does not speculate about which machine or why.
  • The interaction-depth effect is unmeasured by anyone, including here. The page's claim that interaction depth drives the 0.38%–38% spread is an ordering argument across four studies that differ in several ways at once. It is stated as the page's own reading and put in Open Questions as the experiment that would settle it. This is the most load-bearing unverified inference on the page.
  • No longitudinal SST figure exists, so the page makes no growth claim beyond “adoption grew” sourced to the succession of studies, and flags the absence.
  • Meta CAPI, TikTok Events API and Measurement-Protocol deployments have no published detection method at all, so the page cannot say how much SST it is failing to see. “Lower bound” is used deliberately.
  • ground-truth.csv has 404 distinct tranco_domain values, one of which is the empty string. Whether that is a parsing artefact of the release or a dropped row in the authors' pipeline is unknown; it does not change the 403 figure.
  • A TODO the page carries openly: nobody has checked whether the 17-prefix expiry in SST-Guard's templates (2027-01-15) is known to its authors. Filing it upstream would be a service and was not done.

9. Judgement calls

  • A new page rather than broadening privacy:requests. privacy:requests is about deciding whether a request is tracking; SST is about the request not existing. Folding SST into it would have buried the point that the instrument, not the classifier, is what fails. The two pages cross-link. A reasonable person could have made this a long section of privacy:requests instead.
  • Leading with the disagreement between the four estimates rather than with a definition. The single most useful thing for a reader is that the field's numbers span two orders of magnitude for definitional reasons. Leading with “what SST is” would have been the textbook ordering and would have buried that.
  • Dating Fouad et al.'s method as historical and not reproducible. This is the harshest call on the page and it is about the method, not the paper: step one requires a crawl predating August 2020. The paper remains the definitional reference and the page says so twice.
  • Publishing the SST-Guard artefact audit at all. It is a critical audit of an unrefereed preprint by named researchers, published on a public wiki. It was kept because the item asked specifically for which of its signals are reproducible from a crawl a reader can run, and that question is unanswerable without it — but every claim is derived from a script whose code and unedited output are on this page, the framing is explicitly “a source audit, not a reproduction attempt”, and the page states that none of it is evidence against the paper's conclusions. A reasonable person could have limited the page to “the released extension differs from the released data; treat its accuracy figures as the authors' own”.
  • Calling “filter lists cannot see SST” superseded. The 2024 paper says there are “no existent solutions to block Server-side tracking specifically”. EasyPrivacy in 2026 demonstrably has some, and blocks 93.50% of SST-Guard's requests. The nuance — it is the customised tail lists miss, not SST as such — is on the page because the flat claim is now wrong and gets repeated.
  • Not writing a name fold. There is nothing to fold. Recorded as a limitation in §5.3 rather than passed over.
  • Cutting the year table at 2019 in the “Use in Publications” section, and naming the three pre-2019 hits individually as false positives instead. Nine more mostly-zero rows would have been honest but unreadable; naming them is more informative than tabulating them, because the interesting fact is why each matched.
  • Treating the CCS 2026 acceptance as strengthening the corpus caveat rather than as an embarrassment. The review found a load-bearing status claim wrong. The tempting response is a quiet one-word fix. The response taken instead was to make it a feature of the page: a peer-reviewed paper at one of the corpus's own seven venues, invisible to every corpus figure because that venue-year has not happened, is a better argument for reading the 2026 numbers as a floor than any caveat sentence.
  • No ~~DISCUSSION~~ on this page. Comments belong on the content page; this follows the convention set by the earlier provenance pages on this site.
  • Reporting 40,198 rather than the preprint's 40,199. It is an off-by-one against a header line, it changes nothing, and a reader who re-runs the script will see 40,198 and needs to know why.

10. Review pass, 2026-08-21

Four reviewers, told explicitly that the author's context might not be exhaustive, and each handed the page text, the scripts, and their unedited output. The three focused passes ran in parallel first; the generic pass ran after their findings were acted on. Findings accepted and rejected are recorded below — the rejections matter as much as the fixes, because they are the only record of whether a reviewer is worth its slot.

10.1 Figures versus the scripts (Sonnet)

Five of the six scripts reproduced their committed output byte-for-byte when the reviewer re-ran them from fresh archives; the sixth (sst_external_checks.sh) differed only in run timestamp, EasyPrivacy version and commit, and a HAL relevance score — all expected drift from live sources. Three real errors on the page, all accepted and all fixed.

# Finding Action
1 The page said the any-parameter replay “reaches 100% for 12 of the 23 features”. Recounting the committed output gives 15 displayed at 100.0%, of which 14 are exactly 1.0 and the fifteenth (uapv) is 99.9975% and only rounds Accepted and fixed, and the script was changed rather than only the page: sst_guard_replay.mjs now prints the exact-1.0 count and names the feature that merely rounds, so the distinction cannot be lost again. The page states 15, 14 exactly, and names uapv. This was a straight authoring error — the figure was eyeballed off a rounded column instead of computed
2 The page attributed the preprint's 21.05% CNAME figure to its abstract. It appears in §1 and §7.3, never in the abstract Accepted and fixed. The arithmetic in that table row (1,329/6,314 rather than 1,329/5,152) was confirmed correct; only the location was wrong. On a page whose whole point is other people's fidelity, mislabelling where a claim sits is not a small error
3 The page claimed four 2025–2026 papers “cite [4El fraihi, Asmaa; Amieur, Nardjes; Rudametkin, Walter; Goga, Oana (2024): "Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy", Proceedings on Privacy Enhancing Technologies 2024(3):431-445. (DOI)] … and move on”. Two do. Tracking Without Borders [6Weerasekara, Nipuna; Moreno, José Miguel; Matic, Srdjan; Reardon, Joel; Tapiador, Juan; Vallina-Rodríguez, Narseo (2025): "Tracking Without Borders: Studying the Role of WebViews in Bridging Mobile and Web Tracking", Proceedings on Privacy Enhancing Technologies 2025(4). (DOI)] does not mention server-side tracking at all — it measures CNAME tracking inside mobile WebViews — and PIIxel Leaks cites [3Fouad, Imane; Santos, Cristiana; Laperdrix, Pierre (2024): "The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web", Proceedings on Privacy Enhancing Technologies 2024(4):450-465. (DOI)] and [7Dao, Ha; Mazel, Johan; Fukuda, Kensuke (2021): "CNAME Cloaking-Based Tracking on the Web: Characterization, Detection, and Protection", IEEE Transactions on Network and Service Management 18(3):3873-3888. (DOI)], not the Meta paper Accepted and fixed, by re-reading all four papers rather than trusting the reviewer: confirmed by grepping three renderings of each for “Fraihi”, “Amieur”, “Conversions API” and “CAPI”. The sentence now names only the two that do cite it, says what the other two actually do, and gained a bibliography entry for PIIxel ([1Bekos, Paschalis; Papadopoulos, Panagiotis; Kourtellis, Nicolas; Polychronakis, Michalis (2025): "PIIxel Leaks: Passive Identification of Personally Identifiable Information Leakage through Meta Pixel", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)]). This was the worst error on the page: the four-paper list was assembled from the full-text probe hits and then given a shared attribution none of them had been checked for. It is precisely the failure the “read the evidence behind any figure” rule exists to prevent, applied to citations instead of figures
4 Everything else confirmed exactly: all Pass A and Pass B denominators, the 63/7/56 sweep split, the year table, the eleven sst_term papers, every sst_guard_* figure, all 25 quotes, and the externally-sourced figures — including an independent re-derivation of the 91-distinct-domain and 119-cloaked-tracker counts from Fouad's full text No action
5 No bug in any script this page publishes; the SST-Guard extension bugs the page describes were independently re-verified No action

10.2 Citations and quotes (Sonnet)

Verdict: no citation-resolution defect, no DOI collision, no misattributed claim. All 13 citekeys resolve to exactly one entry each and render as numbered references 1–13; DOIs were compared, not just key strings. The 25-quote script was re-run by the reviewer and reproduced. Two findings, both accepted.

# Finding Action
1 The CookieGuard quote silently elides a section cross-reference and three citation markers: the source reads “…including our own CookieGuard (§6), by proxying exfiltration through seemingly first-party endpoints [4, 28, 71].” Accepted and fixed. The page now shows both elisions with […] and says what was elided. Small, but “verbatim” has to mean verbatim on a page that criticises other people's artefacts for fidelity
2 The shared bibliography contains an unrelated duplicate: fouad2022my and fouad2022_cookie are the same paper (Fouad et al., “My Cookie is a phoenix”, PETS 2022, DOI 10.56553/popets-2022-0063) under two keys Accepted as real, deliberately not fixed here. Both keys are in live use on other pages — fouad2022my on privacy:fingerprinting (2×) and programming:stateful_stateless (3×), fouad2022_cookie on practices:legal_enforcement and statistics:hypothesis_testing — so deleting either breaks a page. Consolidating it means editing four pages outside this item, so it was filed as a separate work item instead of half-done. This page adds no duplicate of its own

Two claims the reviewer explicitly could not verify and correctly declined to bless: the SST-Guard artefact-audit figures (they need the 306 MB released CSV, which it did not fetch) and the corpus counts (they need the dataset mount). Both are covered by the figures reviewer in §10.1 instead.

10.3 External currency (Sonnet)

One load-bearing claim was wrong, and it was the one this pass exists to catch.

# Finding Action
1 Mertens et al. [8Mertens, Gilles; Bielova, Nataliia; Roca, Vincent; Bouhoula, Ahmed; Akassab, Marouane (2026): "Detecting and Measuring Client- and Server-Side Google Tag Manager and its Tags in 80K Websites", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. Accepted at CCS 2026 (verified on the SIGSAC accepted-papers list, 21 August 2026); to appear. Preprint at HAL hal-05466083v2, submitted 6 February 2026, under the title "An Analysis of Client- and Server-Side Google Tag Manager and its Tags on the Web" (Link)] is not venue-less. It is accepted at ACM CCS 2026, under the title “Detecting and Measuring Client- and Server-Side Google Tag Manager and its Tags in 80K Websites”, same five authors as the HAL record Accepted and fixed everywhere. Independently re-verified against sigsac.org/ccs/CCS2026/program/accepted-papers.html before acting, and the check was added to sst_external_checks.sh so it re-runs. Three tables, the opening box, two Open Questions bullets and the venue-coverage limitation were rewritten. The correction is not a small one: CCS is one of this corpus's own seven venues, so this paper is missing from every corpus figure on the page only because CCS 2026 has not been held — which is a far better illustration of the provisional-2026 caveat than anything the page had before. The bibliography entry was changed from @misc to @inproceedings
2 SST-Guard [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] was shown as a poster at PETS 2026 (22 July 2026), so “no venue” was too flat Accepted and fixed, with the qualification that matters: PETS's own call for posters says proposals are “lightly reviewed for relevance to PETS and adherence to formatting guidelines” and “Posters will not be peer-reviewed”. Both sentences were fetched and are now in the external-checks output. arXiv still shows v1 only and no journal_ref, so the preprint framing stands
3 Everything else CONFIRMED: the sst-guard repo's single commit; the AdGuard CNAME list's push date; EasyPrivacy's version, commit and all four cited rules — the reviewer independently enumerated the nine sst.-prefixed hosts and got nine; all three Google/Privacy-Sandbox quotes and their “Last updated” dates; that nothing has superseded Google's 2025-04-22 third-party-cookie decision; Safari's CNAME mitigation; Consent-O-Matic; Fouad et al.'s DOI and pagination No action
4 Noted that EasyPrivacy had already moved to 202608210616 minutes after the page's cited 202608210608 No action, and this is the point. The page tells the reader to re-run the script rather than cite its sentence, and the reviewer confirming the version moves within minutes is evidence the warning is warranted
5 Observed that Google reversed Tag Assistant's deprecation in late 2024 Rejected as not affecting the page. The page's only statement about it is that SST-Guard kept Tag Assistant out of training “so the system survives its deprecation”, which is a design rationale and remains valid whether or not the deprecation happened. Adding the reversal would be a fact about Google, not about measurement
6 Could not independently confirm Microsoft's and Netflix's server-side product names Rejected as a change. The page's sentence names six vendors and sources the list to [5Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)] §2.1, which quotes each vendor's own wording. The page makes no claim of its own about those products

10.4 Generic pass (Fable)

The most valuable of the four passes, and the only one that questioned the page's judgement rather than its facts. Twelve findings; eleven accepted, one rejected, one deferred to a human.

# Finding Action
1 Open Questions said in bold “no peer-reviewed SST detector exists that can be run”, one clause before conceding that Moti et al. is peer-reviewed and runnable. The methods table had the same defect (“the only peer-reviewed runnable method”) Accepted and fixed. The claim is now “no SST detector published at a main security or measurement venue can be run today”, and the page says outright that an earlier draft got this wrong. The reviewer is right that these are the sentences a student copies into a related-work section
2 “adding product names and API names returns 26; the widest phrasing probe adds 18 more” — the union is 25, and moved_server adds 16 new (18 total, two overlapping). Neither number was in any script output; the number guard had blessed them because 26 and 18 appear elsewhere Accepted and fixed, in the script first. report_server_side_tracking.mjs now prints the unions explicitly and says they are unions and never sums. This is the corpus-level lesson exactly: the guard proves a number appears somewhere, not that it is the right number for its sentence
3 The page asserted in bold “while SST adoption grew anyway” and then said, in Open Questions, that there is no time series so “SST is growing” is an assertion. And the succession of studies cannot support it, because the page's own thesis is that they are not comparable Accepted and fixed. The claim is now “later studies, under broader definitions, find far more of it than the 2024 one did”, with a pointer to the Open Question. A clean self-contradiction, and the sharpest finding of the pass
4 The 18.4% path-based figure was used three times as a planning fact, while the page's own audit says the split is not reproducible and gives 53.67% / 85.92% / 95.91% for three readings — i.e. path-based is somewhere between 4% and 46% Accepted and fixed at all three sites. First use now carries the range; “roughly a fifth” is now “by the only published count, which is itself not reproducible”; the Open Question gives the range
5 “most of all — whether the crawler did anything on the page” and “the ordering of the results is the ordering of the interaction depth” are stated more confidently than §8 grants, and the confound is real: Moti et al.'s 38% is also the loosest definition, the latest year, and the single most tracking-heavy vertical Accepted and fixed. “Plausibly most of all, though nobody has isolated it”, and the takeaway now names the confounds. This was already flagged in §8 as the most load-bearing unverified inference; the reviewer's contribution was noticing the page did not hedge it where a reader meets it
6 The year table's pre-2019 rows were vetted but its 2019–2026 rows were not, and the false-positive modes (CryptoAPI, GitHub Events API) do not expire in 2019 Accepted and fixed by saying so: the page now states plainly that the 2019–2026 API-probe hits were not individually read, which is why the table is labelled an upper bound. The independent capi_product work in §2.2 came from the same concern
7 The methods table summarised the audit as “its released artefacts do not reproduce its own figures”, which is stronger than the audit shows — 6,314 and 403 reproduce exactly Accepted and fixed to the supported claim: the released extension does not reproduce the released feature data, and two headline splits cannot be re-derived at all
8 This provenance page said “142 figures” while the guard output four lines below said 146 Accepted and fixed, and it is the site's own recurring defect reproduced in miniature: prose written before a fix, output regenerated after it. The figure is regenerated from the script output on every build now
9 “All widths are printed above” was false — first_party_proxy (64) and tag_manager_any (48) appear only here Accepted and fixed: the page now says the most relevant widths are in its table and all nine are here, and names the two it omits
10 “only 7 concern web tracking at all” overstates §5.1's own honest reading of 7 by the predicate, 5 on inspection, 2 that study SST Accepted and fixed to exactly that
11 Two papers were described but not cited — “the gclid study at PETS 2026” and “the localhost web-to-app study at USENIX Security 2026” — on a page whose purpose includes telling the reader what to read Accepted and fixed. Now [9Dao, Ha; Shinde, Abhishek; Athar, Sana; Gosain, Devashish (2026): "Clicking into Exposure: Uncovering Privacy Risks of Google Click Identifier in YouTube Ads", Proceedings on Privacy Enhancing Technologies 2026(2):92-107. (DOI)] and [10Vlummens, Tim; Girish, Aniketh; Weerasekara, Nipuna; Zuiderveen Borgesius, Frederik; Acar, Gunes; Vallina-Rodriguez, Narseo (2026): "Bridges to Self: Silent Web-to-App Tracking on Mobile via Localhost", in: Proceedings of the USENIX Security Symposium. (Link)]. The second key already existed in the bibliography, which is why the DOI-and-key scan runs before every append
12 Smaller: 40,199 cited after the audit corrects it to 40,198; “the residue is exactly the rows above” when _eu (99.8%) and _gid (98.9%) are also below 100%; “sixteen years” for 2010–2026; the committed EasyPrivacy output disagreeing with the version cited on the page; the 28-versus-389 distinction never spelled out All accepted and fixed. The EasyPrivacy one was fixed by re-running the script and citing the version that run produced — which had already moved three times in half an hour, so the page now says so
Rejected: move “What SST Does to the Rest of Your Measurement” above the SST-Guard audit A fair suggestion and a close call. Kept as is because the audit is what licenses the page to use SST-Guard's figures at all, and the reader who arrived from request classification meets the “your instrument is wrong” framing in the second paragraph of the page, not in that section. Recorded as a reasonable-person disagreement
Deferred to a human: “the authors were never told” about the 17-prefix expiry and the dead dl regex. The reviewer called publishing a public audit without notifying them the one thing it would not be comfortable with Agreed, and not done here. Filing an issue on a third party's repository or emailing named researchers is an outward-facing action under someone else's identity, and no unsupervised run should take it. It is filed as a work item with the exact findings and the two contact routes, and this row exists so the omission is visible rather than quiet. Until it is done, that is a real deficiency of this page and not a technicality

10.5 Re-verification pass against the frozen text (Sonnet)

All three focused reviewers found something and all three were acted on, so a narrow fifth pass re-checked each applied fix against the frozen page text and the re-run scripts, and then swept the whole page for any figure or status claim the fixes had made stale. That last part is the point: on this site the recurring defect is not the fix, it is the sentence three sections away that the fix contradicted.

All eight applied fixes verified CORRECT, each re-checked against the frozen page text and against a fresh re-run of the scripts, plus independent re-fetches of the CCS 2026 accepted-papers page, the PETS 2026 posters and call-for-posters pages, the arXiv HTML (by byte offset, to establish that “21.05%” falls inside §1 and not the abstract), the GitHub commit API, and the four cited papers' full texts. sst_number_guard.mjs passes and sst_quotecheck.mjs still reports 25 of 25.

No fix was found to have made another claim stale — which was the specific thing this pass existed to catch, and the reason it was run at all.

10.6 A rejected finding, and a correction to the shared tooling

The re-verification pass also ran scripts/check_tables.mjs and reported the content page's “Which signals a reader can actually reproduce” table as width-inconsistent (3/4/5). Running the same checker over both pages reports six inconsistent tables. All six are false positives, and the rendered DOM is the evidence: the content page renders 6 tables and this page renders 17, and every one of the 23 has a single cell count per row.

The checker counts every | and ^ character in a row after stripping wikilinks. Its own header comment says a literal pipe in a cell breaks the table. Measured on 2026-08-21, that is not true of a pipe or a caret inside inline monospace:

Source Renders as
| Table 1 | ''''Cloaked trackers | 474 | 389'''' | two cells, the second being <code>Cloaked trackers | 474 | 389</code>
a cell containing /^GA1\.[123]...$/ one cell, caret intact

So the delimiters are resolved before inline markup is parsed, and content inside ''''''''''''''''-monospace is safe. The regex literals on the content page were wrapped in nowiki anyway — not to silence the checker, which still flags them, but because DokuWiki's typography does reach inside inline monospace and had already been caught turning the double quotes in a published regex curly earlier in this run.

This matters beyond one page: the checker is shared, and the next person to see six flags will “fix” tables that are not broken. Its condition should be narrowed to pipes and carets outside ''''''''''''''-monospace and ''<code> spans, or it should print the rendered cell count alongside its own.

11. Run log

When What
2026-08-21 Read data/extract/OVERVIEW.md and README.md; ran sitemap.mjs; exported and read eleven neighbouring pages to decide create-versus-extend
2026-08-21 Read both PETS 2024 papers in full from paper.cols.txt
2026-08-21 Fetched and read the SST-Guard preprint; cloned the repository; unpacked and audited the shipped extension and the 306 MB released CSV
2026-08-21 Wrote and ran the six scripts in §3; iterated the corpus report three times (the first version counted 63 sweep hits without splitting off the 56-paper residue, and would have let the page imply the extraction schema covers SST)
2026-08-21 Appended 8 bibliography entries; DOI-scanned first, so no duplicate key and no second entry for a paper already present. Two further bibliography edits during review: mertens2026_gtm corrected from @misc to @inproceedings (CCS 2026), and bekos2025_piixel added
2026-08-21 Published privacy:server_side_tracking (rev 1787293685); linked it from start (rev 1787293733)
2026-08-21 The rendered page initially showed only 5 of 13 references. bibtex4dw caches the bibliography, so newly added keys render as inline markers with no entry. Fixed by requesting ?purge=true on literature:bibliography and then on the page; re-verified 13 of 13
2026-08-21 Four-reviewer pass (§10); fixes applied; this provenance page published
Housekeeping Value
Accidental exposure None. All credentials stayed in .env. The GitHub, arXiv, HAL, Crossref, DBLP, SIGSAC and PETS endpoints were all called unauthenticated; no authenticated request was made to any third party, and nothing from this workspace was sent anywhere
Third-party load One shallow git clone (37 MB) and one EasyPrivacy download (1.5 MB), plus a handful of metadata API calls. No crawl of anyone's website was run
Process mistake worth repeating out loud Fixes were applied to the live page while the third focused reviewer was still running, which risks the reviewer reporting a fix as an error. The right order is freeze, review, then apply — the same mistake the privacy:requests run recorded, made again here

Models. The run was driven by Claude Opus 4.5. Review: three focused passes on Sonnet, one generic pass on Fable, per this site's convention.

Mistakes caught in review of my own work, before the reviewers saw it. (1) The page first said the wide detection[] sweep returned 45 papers “of which all but three are unrelated”; the script says 63 and 56, and the sentence was written from memory of an earlier run rather than from the output. It is exactly the failure mode the “never carry a number over” rule exists for. (2) The first sst_quotecheck.mjs run reported 9 of 23 quotes as unlocatable; all nine were column-interleaving artefacts or curly-apostrophe mismatches, not quoting errors, and treating that first result as real would have produced a page that under-quoted its own sources. (3) The first sst_guard_datacheck.mjs run reported the Combined Classifier as firing on 0 of 403 ground-truth domains — a CRLF artefact in the released CSV's last column, not a defect in the release. It is 396 of 403. Had that shipped it would have been a false accusation against another group's artefact, which is the worst kind of error this page could make.

References

[1]
Bekos, Paschalis; Papadopoulos, Panagiotis; Kourtellis, Nicolas; Polychronakis, Michalis (2025): "PIIxel Leaks: Passive Identification of Personally Identifiable Information Leakage through Meta Pixel", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)
[2]
Dimova, Yana; Acar, Gunes; Olejnik, Lukasz; Joosen, Wouter; Van Goethem, Tom (2021): "The CNAME of the game: Large-scale analysis of DNS-based tracking evasion", Proceedings on Privacy Enhancing Technologies 2021:394–412. (DOI) (Link)
[3]
Fouad, Imane; Santos, Cristiana; Laperdrix, Pierre (2024): "The Devil is in the Details: Detection, Measurement and Lawfulness of Server-Side Tracking on the Web", Proceedings on Privacy Enhancing Technologies 2024(4):450-465. (DOI)
[4]
El fraihi, Asmaa; Amieur, Nardjes; Rudametkin, Walter; Goga, Oana (2024): "Client-side and Server-side Tracking on Meta: Effectiveness and Accuracy", Proceedings on Privacy Enhancing Technologies 2024(3):431-445. (DOI)
[5]
Jazlan, Muhammad; Gamero-Garrido, Alexander; Shafiq, Zubair; Vekaria, Yash (2026): "SST-Guard: Detecting and Characterizing Server-Side Google Analytics in the Wild". Preprint, arXiv v1 of 30 April 2026; also presented as a poster at PETS 2026, which states that posters "will not be peer-reviewed". Not peer-reviewed as of 21 August 2026 (DOI)
[6]
Weerasekara, Nipuna; Moreno, José Miguel; Matic, Srdjan; Reardon, Joel; Tapiador, Juan; Vallina-Rodríguez, Narseo (2025): "Tracking Without Borders: Studying the Role of WebViews in Bridging Mobile and Web Tracking", Proceedings on Privacy Enhancing Technologies 2025(4). (DOI)
[7]
Dao, Ha; Mazel, Johan; Fukuda, Kensuke (2021): "CNAME Cloaking-Based Tracking on the Web: Characterization, Detection, and Protection", IEEE Transactions on Network and Service Management 18(3):3873-3888. (DOI)
[8]
Mertens, Gilles; Bielova, Nataliia; Roca, Vincent; Bouhoula, Ahmed; Akassab, Marouane (2026): "Detecting and Measuring Client- and Server-Side Google Tag Manager and its Tags in 80K Websites", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. Accepted at CCS 2026 (verified on the SIGSAC accepted-papers list, 21 August 2026); to appear. Preprint at HAL hal-05466083v2, submitted 6 February 2026, under the title "An Analysis of Client- and Server-Side Google Tag Manager and its Tags on the Web" (Link)
[9]
Dao, Ha; Shinde, Abhishek; Athar, Sana; Gosain, Devashish (2026): "Clicking into Exposure: Uncovering Privacy Risks of Google Click Identifier in YouTube Ads", Proceedings on Privacy Enhancing Technologies 2026(2):92-107. (DOI)
[10]
Vlummens, Tim; Girish, Aniketh; Weerasekara, Nipuna; Zuiderveen Borgesius, Frederik; Acar, Gunes; Vallina-Rodriguez, Narseo (2026): "Bridges to Self: Silent Web-to-App Tracking on Mobile via Localhost", in: Proceedings of the USENIX Security Symposium. (Link)
provenance/privacy/server_side_tracking.1787295570.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