User Tools

Site Tools


provenance:privacy:advertising

Provenance: privacy:advertising

Working log behind Measuring Ad Targeting and Bidding. Corpus-wide caveats (venue coverage, the selection funnel, provisional venue-years) are on corpus and are not restated here. Citations use the shared bibliography; the 18 entries this run added are listed under Bibliography below and belong to the content page, not to this log. No ~~DISCUSSION~~ block: comments belong on the content page.

Voice here is a working log. It is read by somebody checking a number.

The run

Item Value
Date 2026-09-23 (single sitting, unsupervised drain run)
Item privacy:advertising (new) — measuring ad targeting and bidding, chosen by Karel in the 2026-09-22 gap pass; not on the roadmap's Queued table
Corpus data/extract/run1/extractions.jsonl, 5,859 papers, 5,855 with paper.cols.txt; 7 venues, 2010–2026; bibliographic index data/corpus2/.meta, 16,864 records; screening labels data/labels/run1
Page status New page. privacy:advertising did not exist (dw.mjs info: 121 The requested page (revision) does not exist). sitemap.mjs on 2026-09-23 listed 189 pages and no red link to it. The neighbours were exported and read before writing — privacy:ads_txt, design:algorithm_audits, design:platforms:ad_archives, privacy:cookie_syncing, privacy:privacy_sandbox, design:platforms, privacy:cookies, privacy:tcf_consent_strings, privacy:browser_protection — and the page points to them for header bidding, the paired-profile design, ad archives, ID syncing and the Privacy Sandbox. It is a creation. It deliberately overlaps with privacy:ads_txt on 12 of that page's 16 measuring papers (the seven papers tagged bids here plus ATOM, which privacy:ads_txt lists under header bidding and this page tags persona/creatives; the two RTB-price papers; the two misinformation-funding papers); the other four — the ads.txt adoption and pooling studies, the piracy-site study, the MV3 study — are OUT here
Models Page, scripts, verdicts and this log: Claude (Opus 5.5). External-facts pass: one sonnet sub-agent, instructed to fetch rather than recall and to log rejected sources; every load-bearing fact it returned was re-fetched by external_checks_advertising.sh before it reached the page. Review layer: see Review
Scripts added scripts/adv_fold.mjs (probes, inclusion rule, 291 hand verdicts), scripts/report_advertising.mjs (+ -output.txt, run with --list), scripts/verify_advertising_figures.mjs (+ -output.txt), scripts/external_checks_advertising.sh (+ -output.txt), scripts/bib_additions_advertising.bib, scripts/build_provenance_advertising.py, scripts/provenance_advertising_prose.txt; notes in notes/advertising_external.md
Guards run before publication check_wrap.mjs (OK), check_tables.mjs (OK), check_page_numbers.mjs whole-page against the concatenation of the three outputs (OK after the fixes under Mistakes caught), bib_dedup_scan.py on a fresh export plus the additions (0 definite duplicates; the one candidate pair touching a new key, bashir2016_recommended / bashir2016tracing, is two different papers), citekey resolution (every marker resolves)
Write path node scripts/dw.mjs put (JSON-RPC) with --if-rev on every save
Accidental exposure None. Credentials stayed in .env; GH_TOKEN was used by the external-check script and tested for presence only with ${GH_TOKEN:+x}

Scope and judgement calls

Decision Why What a reasonable person might have done instead
An ad's visible behaviour is CONTENT; what its code collects is tracking (written into the rule after the generic review) The rule as first written did not separate MadDroid and the mini-games paper (IN: deceptive and aggressive ad behaviour) from Sneaky Piggy (OUT: ads' sensor access and leakage). The boundary keeps the three verdicts as they were and says why Move Sneaky Piggy IN (71 → 72, creatives 29 → 30). Reasonable; declined because its question is a data flow, the subject of privacy:requests and privacy:javascript
A new page, not a section on privacy:ads_txt or design:algorithm_audits ads_txt is about who may sell inventory and how to read the auction; algorithm_audits is about arms and nulls. Neither owns the question was this ad targeted, why, and at what price, nor the explanation, donation, advertiser-side and crawl-collection observables, which have no home anywhere on the site Extend algorithm_audits with an “ads” section. Rejected: 49 of this page's 71 papers are not audits (the 22 that are were checked against algorithm_audits_set.mjs), and the explanation-reliability and dedup material is not a design question
Population = “observes ads or auction outcomes and asks a targeting, price, delivery or content question”, written before counting The item asked for observables and their denominators; a rule keyed on the observable is the one that makes the denominator section possible Restrict to targeting and price only (45 papers). Rejected: the crawl-collection and dedup material, which the item names, would then rest on papers outside the population. The page reports the 45 separately
Ad-content papers (malvertising, political, children's ads) are IN They are where the collection, detection and dedup methods are reported; 20 of the 29 crawl-collecting papers ask only a content question Send them to a malvertising page that does not exist. Rejected; flagged on the page as the content-only subset
Ad-archive papers are IN, observable archive, and pointed to design:platforms:ad_archives An archive is one of the ways the literature observes ads; excluding it would make the observable table silently incomplete. None of their figures is restated here Exclude them because another page owns them. Rejected: ownership is about prose, not about the count
User-perception studies are CONTEXT, not population, and mixed-method studies that also measure ads are IN The item asked for a decision. A perception study measures the person; this page's denominators are ads, bids, explanations and campaigns. The four top-30 hits that recruited participants and measured ads (a data export, two extension panels, real users' proxied traffic) are IN on the strength of the measurement Count every paper about ad targeting. Rejected: the page would then publish attitude percentages beside ad counts
Ad fraud, ad blocking and ad injection are OUT with codes They observe ads only as the object of a fraud, a blocker or an extension; privacy:browser_extensions and programming:filter_lists own two of them Include ad fraud as a content question. Rejected; recorded as 13 fraud verdicts
Privacy Sandbox measurements are OUT (sandbox) Owned by privacy:privacy_sandbox; the FLEDGE deployment crawl is cited there Include the FLEDGE crawl as a targeting observable. Reasonable; declined to avoid a second account of the same paper
Verdicts from title, summary and the extracted detection[] records, with the full text read where those did not decide it (a handful: When and Why, the logged-in/out crawl, CanaryTrap, the Meta CAPI study, the Ukraine/Russia and accessibility dedup rules) 291 candidates in one sitting. The IN papers whose figures the page publishes are then re-read through the needle list, which checks the full text; the others rest on the summary and the detection records Read every paper. Not done; a second reader would move a few fraud/tracking papers that observe ads incidentally
Andreou et al., NDSS 2018 cited although outside the extraction Its venue-year has no screening labels at all, so its absence is a funnel artefact. It is the first bought-campaign test of an explanation interface ([1Medjkoune, Tinhinane; Goga, Oana; Senechal, Juliette (2023): "Marketing to Children Through Online Targeted Advertising: Targeting Mechanisms and Legal Aspects", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)] is the other); the page would otherwise send a student to self-report studies for the reliability question. Its three quoted figures are checked against the NDSS PDF Leave it out because the corpus did. Rejected
Two surveys outside the seven venues cited — [2Boerman, Sophie C.; Kruikemeier, Sanne; Zuiderveen Borgesius, Frederik J. (2017): "Online Behavioral Advertising: A Literature Review and Research Agenda", Journal of Advertising 46(3):363-376. (DOI)] (Journal of Advertising) and [3Angus, Daniel; Obeid, Abdul Karim; Burgess, Jean; Parker, Christine; Andrejevic, Mark; Carah, Nicholas; Tan, Xue Ying (2024): "Enabling Online Advertising Transparency through Data Donation Methods", Computational Communication Research 6(2). (DOI)] (Computational Communication Research) The spec asks for the canonical survey outside the venues. Both Crossref-verified. Neither is used for a figure None; could be dropped without loss to any number
The “What to Report” template sentence carries invented numbers It is a template, labelled as illustrative on the page, in the same form as design:algorithm_audits. Its literals are listed in verify_advertising_figures.mjs so the number guard does not bless them as data Write it with placeholders. Reasonable
The explanation table mixes controlled checks and self-report checks, and says which is which Both are what the literature has; the direction of each check changes what it proves Publish only the controlled ones. Rejected: the self-report ones are the only evidence on inferred-interest accuracy
The Privacy Sandbox removal status is pointed to, not restated As of 2026-09-23 Chrome stable is M154 while the Deprecate and Remove Protected Audience entry is still Proposed with desktop milestone 153 (external checks). Resolving it belongs on privacy:privacy_sandbox State the M153 target. Rejected: it has lapsed

Probes and the candidate set

Written into adv_fold.mjs before the first count. All three run over paper.cols.txt, whitespace-collapsed, case-insensitive, paper-counted.

Probe Regex (summary) Threshold Papers
GAP the 2026-09-22 gap pass's ad_targeting_rtb family, verbatim ≥ 5 hits 127 (118 when run the way the gap pass ran it: paper.norm.txt, no whitespace collapse)
FAM six observable families (targeting, auction, explanation, donation, advertiser side, content), summed ≥ 5 hits 236
ADW ads / advertisement(s) / advertiser(s) ≥ 40 hits 157
union 291

The full regexes are in the adv_fold.mjs block at the foot of this page. ADW is the widest net and is where the homographs are: Bluetooth Low Energy “advertisements” (9 papers), ADS-B and ACARS, BGP route advertisements. The 118 → 127 difference is rendering plus whitespace: the gap pass read paper.norm.txt uncollapsed, and a PDF line break inside a phrase undercounts.

Recall checks. (1) Against design:algorithm_audits: 22 of its 34 audits are IN here; the other 12 — search, news, ride prices, retail, email filtering, feeds, generative assistants, a data-export audit — are 9 non-candidates and 3 candidates coded OUT (two recommendation, one dsr). Printed by PASS B of the report. This is a consistency check, not an independent recall test: whether an audit is “about ads” was decided by the same reader. (2) Before the candidate rule was fixed, a first, discarded probe set was checked with a plain ads-word sweep (≥ 25 hits) over the papers it missed; that list surfaced Guha et al. 2010 and a dozen ad-content papers, which is why ADW is in the union. (3) PASS F below: a title probe over the index for ad measurements outside the extraction.

Queries, with their denominators

Each row is a figure or table on the content page and the report section that prints it.

# Page figure Population / denominator Report section
Q1 291 candidates; 71 IN (24.4%), 9 CONTEXT, 211 OUT; OUT codes the union of the three probes PASS B
Q2 GAP 127 hits, 42 IN (33.1%), recall 42 of 71 (59.2%); FAM 67 of 71; ADW 64 of 71 each probe's hits; the 71 PASS B precision/recall table
Q3 29 IN papers GAP misses; 22 content-only; the other seven named IN papers not in GAP PASS B, PASS C
Q4 top 30 GAP hits: 10 recruited participants, 4 of them IN; 23 of 127 pure perception (8 CONTEXT, 15 OUT:perception) GAP hits ranked by hit count PASS B
Q5 bucket table (3 / 10 / 22 / 23 / 13; per year; per 1,000) IN papers; corpus papers per bucket PASS C
Q6 venue shares (PoPETs 14 of 510 …) that venue's papers in the extraction PASS C
Q7 platform, question tags, 45 core papers the 71 (multi-valued) PASS C
Q8 observable table: papers, first–latest, per bucket the 71 (multi-valued) PASS C
Q9 crawl-config reporting (statefulness 29 of 41 …) and baselines IN papers with a crawlConfig object (41) vs all 1,080 with one PASS D
Q10 consent action not stated 16, no-interaction 15; accounts 6 of 41 the 41 PASS D
Q11 vantage stated 37 of 67; not stated 30 of 67 (44.8%); headless not stated 32 of 41 (78.0%) IN papers with a vantage tuple; the 41 PASS D
Q12 artifacts, statistics, ethics rows the 71 empirical vs 5,118 empirical PASS D
Q13 7 papers name an LLM, all 2024–2026 the 71, tools[] used/produced PASS D
Q14 dedup: 9 state a rule, 6 counts only, 1 probe hit something else, 13 no hit the 29 papers with the crawlads observable PASS E / E2
Q15 EasyList named by 14 of 29 the 29 PASS E
Q17 18 of the 36 IN papers on a platform service have no crawl configuration IN papers with platforms including other-online-service PASS D
Q16 18 ad measurements outside the extraction, by reason (7 / 6 / 3 / 2) title-probe hits in the index that are not extracted, hand-coded PASS F

Hand classifications, and their residue

This page has no name fold. What it has are three hand maps, each checked against the probe that produced its candidates in both directions — the report throws if a candidate has no verdict or a verdict matches no candidate:

  • VERDICTS in adv_fold.mjs — 291 entries, keyed by venue/year/slug-prefix; each prefix must match exactly one candidate. IN entries carry observable and question tags and a note; OUT entries a code from OUT_CODES. Residue: 0 (no candidate without a verdict). Every verdict is printed in the report's --list section below.
  • DEDUP_VERDICT in report_advertising.mjs — one hand verdict per crawlads paper that matches the dedup vocabulary (16), with the deciding phrase. Residue: 0; a stale verdict (a paper that no longer matches) also throws.
  • OUTSIDE in report_advertising.mjs — a code for each of the 124 not-extracted title-probe hits, read from the title only, plus one forced paper the title probe cannot see (Olejnik et al., NDSS 2014: no “ad” token in its title). One code is U (cannot be decided from the title) and is not counted as a measurement. Residue: 0.

Observable and question tags are hand-coded, one reader, and the least stable part of the audit. A second reader would most likely move explanation vs donation on papers that use an extension to collect both, and targeting vs content on the children's-ads papers.

Quotes and figures checked against the papers

Every per-paper figure and quoted sentence on the content page is a needle in verify_advertising_figures.mjs: 96 needles, looked up whitespace-collapsed and ligature/dash/tilde/×-folded in paper.cols.txt, then paper.norm.txt, paper.txt and a pypdf re-extraction of paper.pdf. 96 located, 0 not located: 88 in .cols, 5 only in the PDF (Venkatadri 2019's noise sentence, Sunlight's impression count, the second half of a spliced Vadrevu 2019 sentence, Cook 2020's lean towards intentional underbidding, Datta 2015's credit to an earlier study), 3 in the NDSS 2018 PDF of the one non-corpus paper. Three mutation controls — the same needles with one figure changed (1.7× → 1.9×, 98.9% → 98.1%, 169,751 → 196,751) — are correctly not located. Spliced sentences are checked as two verbatim halves and labelled (1/2), (2/2). Needles were not taken from evidence.quote: the extraction's prevalence strings are model summaries. One of them omitted what the figure needs: detection[].prevalence for [4Chen, Baiyu; Tag, Benjamin; Xue, Hao; Angus, Daniel; Salim, Flora (2026): "When Ads Become Profiles: Uncovering the Invisible Risk of Web Advertising at Scale with LLMs", in: Proceedings of the ACM Web Conference. (DOI)] says gender accuracy 59.13% with no baseline, and the paper's own table has a random-control row at 58.80% on the same metric. The page publishes both.

The full list, with the rendering each needle was found in, is the verify output below.

External sources

Found by a sonnet sub-agent told to fetch every claim and log rejected sources (notes/advertising_external.md), then re-fetched by external_checks_advertising.sh — its output, below, is the verification. Every row passed on 2026-09-23.

Claim on the page Primary source Verified how
DSA Art. 26(1)(d), 26(3), 28(2) wording EUR-Lex, Regulation (EU) 2022/2065, eur-lex.europa.eu/eli/reg/2022/2065/oj/eng phrase match; EUR-Lex answers some clients with a 202 bot page, so the script asks for HTML and retries
DSA dates (VLOPs August 2023, everyone 17 February 2024) European Commission, DSA enforcement page phrase match on the general date; the VLOP date is the page's “four months following notification” after the 25 April 2023 designation
TCF v2.2 (2023-05-16), consent the only basis for purposes 3–6; TCF v2.3 (2025-06-19), transition ended 2026-02-28 IAB Europe's two announcement pages phrase match. The sub-agent's note called the v2.3 transition “still open as of today”; 2026-02-28 is before 2026-09-23 — rejected, the page says it ended
Google My Ad Center, 2022-10-20; Ad Settings kept for signed-out users blog.google phrase match. Not found: any Google wording that My Ad Center replaces Ad Settings or “Why this ad” — the page therefore does not say “replaced”
Meta removed sensitive detailed-targeting options from 2022-01-19 Meta Business Help Center article 458835214668072, via a 2023-09-19 Wayback capture (the live page refuses non-browser clients) phrase match. The widely reported announcement date (November 2021) is not on any fetched Meta page and is not on the content page
Meta EU subscription (November 2023) and “less personalized ads” (2024-11-12) with its data points about.fb.com phrase match
Meta ended political, electoral and social-issue ads in the EU, 2025-10-06 about.fb.com phrase match; not on the content page (design:platforms:ad_archives owns it) — kept as a check because the ad-archive row points there
Meta disabled NYU Ad Observatory accounts, 2021-08-04; Ad Observer still distributed; Australian Ad Observatory “Active”; Who Targets Me extension offered about.fb.com; adobserver.org; admscentre.org.au; whotargets.me phrase matches
Google Authorized Buyers: the winning price macro returns an encrypted price developers.google.com phrase match
Chrome keeps third-party cookies (2025-04-22); Privacy Sandbox retirement (2025-10-17) privacysandbox.google.com phrase match
Safari full third-party cookie blocking (2020-03-24); Firefox Total Cookie Protection by default (2022-06-14) webkit.org; blog.mozilla.org via a 2022-10-20 Wayback capture phrase match. The live Mozilla post has been retitled “…to more users worldwide” with an Updated Aug. 28, 2024 note; the page says “partitioned them by default since 2022” and does not repeat “all users”
TCF Specifications v2.4 published 2026-07-23; CMP web deadline 2026-10-23, apps/CTV 2027-02-23 IAB Europe notice PDF of 2026-07-16 text match in a pypdf extraction. Added after the external-currency reviewer found it; the v2.3 page the first pass checked does not mention v2.4
Meta's EU ad choice relaunched in January 2026 after a DMA non-compliance finding European Commission, DMA site, 2025-12-08 phrase match. Added after review. The €200m figure the reviewer cited from the April 2025 decision is not on the page: it was not fetched from a primary source in this run
Tool and dataset liveness GitHub API (-L, so renames resolve), HTTP status after redirects tadatitam/info-flow-experiments → dattaamit/…; Breezelled/when-ads-become-profiles → cruiseresearchgroup/…; seemoolab is seemoo-lab; targeted-andtroublesome is targeted-and-troublesome. Dead: Camq543/YoutubeAds (404, no successor found), HBDetector and HARPO (as on privacy:ads_txt). Down: fdvt.org (no connection), adanalyst.mpi-sws.org (301 to a host that does not answer)
Five DOIs for the added NDSS/PoPETs entries; two survey DOIs api.crossref.org title and author families printed

Rejected sources (from the sub-agent's log; used, if at all, only to find a primary URL): smartframe.io, searchengineland.com, hookagency.com, foreplay.co (My Ad Center); socialmediatoday.com, jonloomer.com, reshiftmedia.com, medium.com/trapica, adsuploader.com, falcondigital.co.uk, leadsync.me, cadeproject.org, fedma.org, seekingalpha.com, tradingview.com, aljazeera.com, euronews.com (Meta); techpolicy.press, algoodbody.com, twobirds.com, lexology.com, pwc.nl, eu-digital-services-act.com (DSA); secureprivacy.ai, usercentrics.com (TCF); natlawreview.com, kevel.com, cookie-script.com, jentis.com, didomi.io, onetrust.com, segwise.ai, martech.org, adexchanger.com, ghacks.net, computeruser.com, leapbuzz.com, grokipedia.com, en.wikipedia.org (Privacy Sandbox); nyunews.com, Bloomberg, Inside Higher Ed, Engadget, the Cybersecurity for Democracy Medium blog, an NYU press release (Ad Observatory). Reason in every case: secondary, vendor or aggregator.

What could not be established

  • Whether any perceptual-hash dedup rule is accurate on display or video ads. The only measured identity-rule error is Guha et al.'s 2010 text-ad table. Stated as an open question.
  • The size of the IP-class effect on a targeting outcome. One paper observed datacentre and Tor addresses being served differently; none measured it.
  • Whether the 9-of-29 dedup figure is a floor. A paper that describes its dedup without the probe's words is not seen; the 13 no-hit papers were not read end to end.
  • The screening loss beyond the title probe. 18 is from titles only; an ad measurement whose title says nothing about ads is invisible to PASS F, as Olejnik et al. 2014 was until a population paper's references named it.
  • What the 2026 LLM-based YouTube detector found (TheWebConf 2026, no abstract in the index, no full text here). Named by title on the provenance side only.
  • A dedicated Chrome Platform Status removal entry for Topics — the sub-agent found none; the page points to privacy:privacy_sandbox for removal status.
  • DSA Article 40 researcher data access. The external-currency reviewer reported the delegated act as in force since 2025-10-29, from secondary sources only; not re-fetched from the Commission and not on the page. It is the obvious next route to platform ad-delivery data and belongs in the next revision once verified.
  • The current wording of Meta's EU ad options after the January 2026 relaunch: Meta's help pages refuse non-browser clients.
  • Whether header-bidding auctions other than Google Ad Manager's are first-price. The page states the Google change (2019, primary source) and that the rendered winning bid is a price where the final auction is first-price; it does not generalise.

Mistakes caught during the run

What How it was caught Fix
The report script held every collapsed full text in memory and died with a V8 heap OOM first run texts read one at a time; only candidates' texts kept
Six first-pass verdicts named papers that were not candidates (they had passed an earlier, discarded probe) resolveVerdicts threw: prefix … matches 0 candidates removed; the guard is what the report now runs
One outside-extraction hit had no code (Retargeted-Architecture Binary Code Analysis, a homograph) the report threw coded H
The page's bucket header used two-digit labels (22–24), and the number guard matched 17, 18, 21, 25, 26 to unrelated numbers in the output and flagged only 24 check_page_numbers.mjs four-digit labels; a reminder that the guard proves a digit string appears, not that it means the same thing
“45%” and “78%” on the page against 44.8%/78.0% in the output; the 45 passed the guard by matching an unrelated 45 reading the guard output against the report page now prints the report's own figures, and the report prints the complements
The first draft said the GAP probe's 29 misses were all content or advertiser-side papers re-counting in the report 22 content-only; the other seven include Guha 2010 and AdFisher — now named
The first draft said two YouTube child-ad studies and a political-ad detection study were screened out PASS F's list one child-ad study plus one data-cost study; two political-ad studies
The first draft said the explanation checks found interfaces incomplete in every study below; the self-report checks measure relevance, not completeness rereading the table “found wanting in every check below”, and the table's two kinds of check are named
The first draft said most studies read landing pages without clicking — no measurement behind it rereading replaced by the one paper that says so
The first draft said [5Agarwal, Pushkal; Joglekar, Sagar; Papadopoulos, Panagiotis; Sastry, Nishanth; Kourtellis, Nicolas (2020): "Stop tracking me Bro! Differential Tracking of User Demographics on Hyper-Partisan Websites", in: Proceedings of the ACM Web Conference. (DOI)] priced personas; the paper's WL / WR are left- and right-leaning websites, and its prices are for ads its personas were shown there reading the paper for the needle sentence rewritten
Two needles failed on the first verify run for folding reasons (× vs x; a line-break hyphen inside impressions) verify_advertising_figures.mjs fold extended; mutation controls added so a too-loose fold cannot pass
The external-check script counted a final HTTP 301 after -L as OK — it means the redirect target never answered reading AdAnalyst's row only a final 2xx is OK now; AdAnalyst is reported down
The sub-agent's “TCF v2.3 transition still open” date arithmetic rejected, see External sources
The Cost of Annoying Ads was CONTEXT although its object is ad formats, not targeting — the CONTEXT rule as written excludes it generic review re-coded OUT perception; CONTEXT 9 → 8, OUT 211 → 212, perception 26 → 27, on the page and here
EUR-Lex answered the external-check script with a 202 on one run of three the script's own FAILED lines the regulation is fetched once, from two renderings with retries, and all three articles are checked in that copy

Other pages touched in this sitting

  • privacy — row added to the namespace table, count 18 → 19 in the box and in Methodology.
  • roadmap — a row in Assessed, and not written for this page, and the Sock-puppet and personalization audits row settled (see below).
  • privacy — a dated note of the count change.
  • bibliography — 18 entries appended before </bibtex> on a fresh export, saved with --if-rev.

The sock-puppet row. The roadmap still carried “Sock-puppet and personalization audits — 20 papers … likely a section on Programming:Stateful Stateless”. That topic was written on 2026-09-11 as algorithm_audits (34 audit papers; re-run of report_algorithm_audits.mjs on 2026-09-23 reproduces 34), and the ad-specific half is now this page (22 of the 34 audits are in this page's population). The row was rewritten to say it is settled on those two pages. The 20 was not re-derived; it was a title probe from an earlier gap pass and is superseded by both pages' own populations.

Post-publication checks, 2026-09-23

Check Result
literature:bibliography 18 entries appended on a fresh export (rev 1789634327 → 1790126248), 1,057 → 1,075 entries, bib_dedup_scan.py 0 definite duplicates; cache purged
Rendered content page (after ?purge=true) 22 source headings + the table of contents rendered, 11 tables, 56 references in bibtex_references for 56 distinct keys, 0 “could not be found”, 0 red links (wikilink2)
Rendered provenance page 18 source headings + table of contents, 5 <file> blocks, 9 references, 0 red links
Published code round trip /_export/code/…?codeblock=3 (adv_fold.mjs) and codeblock=0 (report output) identical to the files apart from DokuWiki's trimmed leading/trailing newline
report_namespace_overviews.mjs exit 0; privacy: 19 pages, 19 table rows, equal as sets
Red links on the four other pages edited 0 on privacy, roadmap, provenance:roadmap, provenance:privacy
sitemap.mjs exits 1 on the 21 pre-existing namespace-relative bare links in provenance:* namespace pages (none on pages touched here); its page listing is cached and still shows 189 pages

Review

Four reviewers, each told that the author's context might not be exhaustive and each handed the page, this log's draft, the report script with its unedited output, the verifier with its output, and the external-check script with its output. The three focused passes ran in parallel on the first complete draft (not yet published); every accepted fix was applied, all three scripts were re-run, and the guards re-passed, before the generic pass. Findings files: notes/advertising_review_figures.md, notes/advertising_review_citations.md, notes/advertising_review_external.md, notes/advertising_review_generic.md.

Reviewer Finding Action
figures-vs-script (sonnet) Re-ran the report (--list) and the verifier: both byte-identical to the committed outputs. Every aggregate table cell on the page matched —
figures-vs-script (sonnet) Imprecision. The longitudinal 76.38% for [4Chen, Baiyu; Tag, Benjamin; Xue, Hao; Angus, Daniel; Salim, Flora (2026): "When Ads Become Profiles: Uncovering the Invisible Risk of Web Advertising at Scale with LLMs", in: Proceedings of the ACM Web Conference. (DOI)] is a variant given extra cultural context; the plain model is 74.88% Accepted. Both figures now on the page, with the random control
figures-vs-script (sonnet) Imprecision. The identity-rule table showed 8 of the 9 papers the report marks states; [6Zeng, Eric; Wei, Miranda; Gregersen, Theo; Kohno, Tadayoshi; Roesner, Franziska (2021): "Polls, Clickbait, and Commemorative \$2 Bills: Problematic Political Advertising on News and Media Websites Around the 2020 U.S. Elections", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] (MinHash-LSH over ad text) was missing Accepted. Row added; the report's hand-verdict note for it rewritten to name the method
figures-vs-script (sonnet) Nit ×2. “150 publishers” and “blank frame in 7.5%” had no needle Accepted. Needles added
figures-vs-script (sonnet) Nit. The advertiser-side observable had no worked example in the prose Accepted. New subsection Buying the ad, every figure an existing needle
figures-vs-script (sonnet) Latent: inferential() does not call isSentinel; no sentinel occurs in statistics[].kind in this corpus Noted, not changed (the same definition as report_algorithm_audits.mjs, deliberately)
citations-and-quotes (sonnet) All markers resolve; no collisions; no duplicate papers under other keys; the 18 entries' metadata verified against Crossref / landing pages —
citations-and-quotes (sonnet) Defect. “14 match no dedup vocabulary at all” folded in the one paper whose probe hit was a prior tool it declined to use Accepted. Now 9 / 6 / 1 / 13, the report's own four buckets
citations-and-quotes (sonnet) Imprecision. González Cabañas's compound surname split wrongly in both new entries, inconsistent with the existing caravaca2024_overprofiling Accepted. González-Cabañas, José in both
citations-and-quotes (sonnet) Imprecision. Guha 2010's 13–68% / 0–7% came from one of Table 2's two datasets; across both it is 10–69% / 0–12% Accepted. Page gives both datasets' range; the first-row cells are now a needle
citations-and-quotes (sonnet) Imprecision. “An address given for login alerts” read as a postal address; the paper tested an email address and a phone number Accepted
citations-and-quotes (sonnet) Imprecision. “first measured proof” for [7Datta, Amit; Tschantz, Michael Carl; Datta, Anupam (2015): "Automated Experiments on Ad Privacy Settings", in: Proceedings on Privacy Enhancing Technologies. (DOI)]; the paper credits an earlier manual study Accepted. “first statistically rigorous evidence”, with the credit; the paper's sentence is a needle
citations-and-quotes (sonnet) Imprecision. Two phrases about [8Moti, Zahra; Senol, Asuman; Bostani, Hamid; Zuiderveen Borgesius, Frederik J.; Moonsamy, Veelasha; Mathur, Arunesh; Acar, Gunes (2024): "Targeted and Troublesome: Tracking and Advertising on Children's Websites", in: Proceedings of the IEEE Symposium on Security and Privacy. (DOI)] were in quotation marks but were paraphrases Accepted. Quotation marks removed, figures kept
citations-and-quotes (sonnet) Nit. [9Cook, John; Nithyanand, Rishab; Shafiq, Zubair (2020): "Inferring Tracker-Advertiser Relationships in the Online Advertising Ecosystem using Header Bidding", in: Proceedings on Privacy Enhancing Technologies. (DOI)] leans towards intentional underbidding after first calling the question undecidable; “slot” is not a calendar effect Accepted. Both rewritten, each confound attributed to its own paper
citations-and-quotes (sonnet) Nit. The browser-policy dates in the currency table were the one row without a primary-source footnote Accepted. Footnote added, with the Mozilla retitling
citations-and-quotes (sonnet) Nit. [1Medjkoune, Tinhinane; Goga, Oana; Senechal, Juliette (2023): "Marketing to Children Through Online Targeted Advertising: Targeting Mechanisms and Legal Aspects", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)] reports both 3,321 and 3,221 ads; the page's 3,221 is the analysis-section figure behind its percentages Noted; no change
citations-and-quotes (sonnet, sub-checks it fanned out) Defect. The explanation table said the 98.9% came from “profiles with known histories, plus the repositories”; it is a granularity analysis of real users' notices collected by Who Targets Me Accepted. Row rewritten and reclassified: the lead-in now says three rows are controlled, one measures granularity, three are self-report
citations-and-quotes (sonnet, sub-checks) Defect. The Medjkoune row attributed the 76% / 25% to the seven own campaigns; they come from the six profiles' 3,221 organic ads, the campaigns establishing what a placement explanation means Accepted. Row rewritten
citations-and-quotes (sonnet, sub-checks) Defect. BlueKai was listed among the platforms behind the 27%; the paper collected BlueKai profiles but did not have them rated Accepted. Row names three platforms; the exclusion sentence is a needle
external-currency (sonnet) Stale. TCF Specifications v2.4 were published 2026-07-23 with a CMP web deadline of 2026-10-23; the page presented v2.3 as the latest Accepted and re-verified from IAB Europe's PDF notice by the external-check script
external-currency (sonnet) Stale. Meta relaunched the EU ad choice in January 2026 after a DMA non-compliance finding; the page cited only the 2024 option Accepted and re-verified from the Commission's DMA page. The reviewer's €200m fine figure was not added: not fetched from a primary source here
external-currency (sonnet) Nit, lead only. DSA Article 40 researcher data access (delegated act reported in force 2025-10-29) is not mentioned Deferred. The reviewer had only secondary sources; recorded under What could not be established
external-currency (sonnet) Protected Audience / Topics removal has slipped (M154 stable, removal entry still Proposed at M153); the page's “being withdrawn” is accurate No change here; the slippage belongs on privacy:privacy_sandbox
generic (fable) Defect (F1). “The only field measurement … is self-report” contradicted the page's own 12%-retargeting figure from a donated panel two sections later Accepted. Both measurements named, by kind
generic (fable) F2: the opening box said 98.9% “still” cite only the main form — the under-reporting reading the body rules out — and stated the 9-of-29 dedup count without its probe scope Accepted — “coarse before you ask whether they are true”; “only 9 are found … a probe-scoped floor”
generic (fable) F3: “Seventy-one papers … observe ads” omitted clause (B) of the rule Accepted
generic (fable) F4: “flat … a steady literature, not a growing one” is a trend claim on 10–23 papers a bucket Accepted — now “not a trend in either direction”
generic (fable) F5: “historical elsewhere” for retargeting outside Chromium rests on no measurement and ignores the hashed-email and server-side routes the page itself names Accepted — “current; browser-dependent, and unmeasured outside Chromium”
generic (fable) F6: seven negative universals without “in this corpus” Accepted — qualified in place, and the Open Questions box opens with the seven-venue caveat
generic (fable) F7: the LLM row generalised over seven papers Accepted — two validate against humans, one extracts, one is the finding against a random control
generic (fable) F8: “every study here that checked one against a known truth” headed a table in which four of seven rows are not such checks Accepted
generic (fable) F9: the page said bids cannot show what was paid while citing a paper for the price ads “cleared at”; first-price auctions and the archives' spend ranges were never mentioned Accepted. Bids vs rendered winning bid separated; Google Ad Manager's 2019 move to first-price auctions added from Google's own post (re-fetched by the external-check script); archives' spend ranges pointed to. Not generalised beyond Google — recorded under What could not be established
generic (fable) F10: “two orders of magnitude” stated as a property of crawlers; privacy:ads_txt hedges it as a cross-paper comparison Accepted
generic (fable) F11: this log described the four IN participant papers wrongly Accepted
generic (fable) F12: “disproportionately outside the extraction” had no base rate Accepted — “at least a fifth”
generic (fable) F13: the Sneaky Piggy / MadDroid / mini-games boundary was not in the written rule Accepted as a rule clause, verdicts unchanged; recorded under Scope and judgement calls with the alternative
generic (fable) F14: The Cost of Annoying Ads fails the CONTEXT rule Accepted — re-coded OUT, three counts updated
generic (fable) F15: the algorithm-audits recall check was prose only, and circular as phrased Accepted — now in PASS B; rephrased as a consistency check
generic (fable) F16: “its eight header-bidding papers” adopted the classification of ATOM used on privacy:ads_txt Accepted in this log
generic (fable) F17: donation called “least reliable” without a measurement Accepted — “both rest on the platform's own account”
generic (fable) F18: “mostly do not run a crawler” unmeasured Accepted — computed in PASS D: 18 of 36
generic (fable) F19: “all three live” for donation panels overstated an HTTP-200 check Accepted

After the generic pass's fixes the three scripts were re-run (outputs below are from that run), and check_page_numbers.mjs, check_wrap.mjs and check_tables.mjs re-passed on the content page. The focused reviewers were not re-run on the post-generic revision; the changes they did not see are the rows above, each re-checked against the scripts' outputs by the author.

Report output, unedited

node scripts/report_advertising.mjs --list > scripts/report_advertising-output.txt — deterministic, ~25 s.

report_advertising-output.txt
=== PASS A — candidate probes (full text, paper-counted) ===
papers in extraction: 5859; with paper.cols.txt: 5855; missing: 4
probe                                  rendering                             threshold  papers
-------------------------------------  ------------------------------------  ---------  ------
GAP (2026-09-22 gap pass, as run)      paper.norm.txt, raw                   >= 5       118
GAP (same regex)                       paper.cols.txt, whitespace-collapsed  >= 5       127
FAM (six observable families, summed)  paper.cols.txt, collapsed             >= 5       236
ADW (ads|advertisement|advertiser)     paper.cols.txt, collapsed             >= 40      157
UNION = candidate set                                                                   291
(paper.norm.txt present for 5859 papers)
GAP only: 7; FAM only: 67; ADW only: 48; in all three: 60
 
Per-family reach (papers with >=1 / >=5 hits, of the full-text papers):
family       >=1  >=5
-----------  ---  ---
targeting    536  136
auction      159  43
explanation  130  28
donation     39   12
advside      65   17
content      209  56
 
=== PASS B — hand verdicts over the candidate set ===
A candidate is IN if both hold:
 (A) the paper's own data includes ads or ad-auction outcomes delivered to a
     measuring identity or to real people: served creatives or impressions,
     landing pages, bids or clearing prices, the platform's ad explanations /
     ad-preference inferences / advertiser lists, or delivery and reach
     statistics for ads the researchers bought (an ad archive counts, and is
     pointed to design:platforms:ad_archives);
 (B) it uses that data to answer a question about TARGETING (whether and why
     an ad reached this identity, or what the platform inferred), PRICE (what
     an advertiser bid or paid), DELIVERY (how the platform distributed an ad
     the researchers bought), or CONTENT (what the served ads were, and where).
     An ad's visible behaviour towards the user (aggressive, deceptive,
     redirecting) is CONTENT; what the ad's code collects and sends is
     tracking, and OUT (boundary written down after review, 2026-09-23).
A candidate is CONTEXT if it is a user study whose object is ad targeting,
explanations or ad settings but whose data answers a perception question only.
Everything else is OUT, with a code saying where it belongs.
 
candidates: 291; IN 71 (24.4%); CONTEXT 8 (2.7%); OUT 212 (72.9%)
 
OUT, by code (papers):
code            papers  meaning
--------------  ------  -------------------------------------------------------------------------------------------
tracking        53      tracking, syncing, consent or SDK data flows with no ad observed
homograph       41      "advertisement"/"bid"/"target" in another sense (BLE, ADS-B, auctions, Android intents, ML)
perception      27      user study with no ad observation (and not about ad targeting)
mention         20      advertising mentioned in passing; the paper is about something else
blocking        16      ad blocking, filter lists, anti-adblock: ads counted only as blocking efficacy
fraud           13      ad or click fraud measured from logs, apps or botnets — not targeting, price or content
mechanism       9       auction / allocation / CTR / campaign-optimisation design on platform-internal logs
scam            8       the ad is only the discovery channel for a scam / cloaking / SEO study
dsr             8       data-export (right-of-access) audit — privacy:data_subject_rights
sandbox         6       Privacy Sandbox API analysis or simulation — privacy:privacy_sandbox
defence         3       privacy-preserving ad system, detector or obfuscator evaluated without served-ad outcomes
supplychain     2       ads.txt / sellers.json supply chain only — privacy:ads_txt
recommendation  2       personalisation audit of search/news/recommendations, not ads — design:algorithm_audits
injection       2       ads injected by extensions or malware — privacy:browser_extensions
sponsorship     2       influencer sponsorship inside content, not an ad system
 
Precision and recall of each probe against the hand audit:
probe            hits  IN  precision  CONTEXT  recall of the IN set
---------------  ----  --  ---------  -------  --------------------
GAP >= 5 (cols)  127   42  33.1%      8        42 of 71 (59.2%)
FAM >= 5         236   67  28.4%      8        67 of 71 (94.4%)
ADW >= 40        157   64  40.8%      6        64 of 71 (90.1%)
UNION            291   71  24.4%      8        71 of 71 (100.0%)
IN papers found by one probe only: GAP 0, FAM 2, ADW 4
IN papers the GAP probe misses (found by FAM or ADW only):
  IMC/2010/challenges-in-measuring-online-advertising-systems
  WWW/2010/analyzing-content-level-properties-of-the-web-adversphere
  CCS/2012/knowing-your-enemy-understanding-and-detecting-malicious-web-advertising
  IMC/2014/the-dark-alleys-of-madison-avenue-understanding-malicious-advertisements
  USENIX/2014/brahmastra-driving-apps-to-test-the-security-of-third-party-components
  PETS/2015/automated-experiments-on-ad-privacy-settings
  IEEE-SP/2018/privacy-risks-with-facebooks-pii-based-targeting-auditing-a-data-brokers-adverti
  USENIX/2018/unveiling-and-quantifying-facebook-exploitation-of-sensitive-personal-data-for-a
  WWW/2018/exposing-search-and-advertisement-abuse-tactics-and-infrastructure-of-technical
  IMC/2019/what-you-see-is-not-what-you-get-discovering-and-tracking-social-engineering-att
  WWW/2019/revisiting-mobile-advertising-threats-with-madlife
  IEEE-SP/2020/a-security-analysis-of-the-facebook-ad-library
  IMC/2020/when-push-comes-to-ads-measuring-the-rise-of-malicious-push-advertising
  WWW/2020/maddroid-characterizing-and-detecting-devious-ad-contents-for-android-apps
  IMC/2021/polls-clickbait-and-commemorative-2-bills-problematic-political-advertising-on-n
  USENIX/2022/an-audit-of-facebooks-political-ad-policy-enforcement
  WWW/2023/online-advertising-in-ukraine-and-russia-during-the-2022-russian-invasion
  WWW/2023/propaganda-politica-pagada-exploring-u-s-political-facebook-ads-en-espanol
  WWW/2023/the-thin-ideology-of-populist-advertising-on-facebook-during-the-2019-eu-electio
  WWW/2023/are-mobile-advertisements-in-compliance-with-apps-age-group
  WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines
  IMC/2024/analyzing-the-in-accessibility-of-online-advertisements
  IMC/2024/beyond-the-guidelines-assessing-metas-political-ad-moderation-in-the-eu
  PETS/2024/client-side-and-server-side-tracking-on-meta-effectiveness-and-accuracy
  NDSS/2025/careful-about-what-app-promotion-ads-recommend-detecting-and-explaining-malware-promotion-via-app-promotion-graph
  WWW/2025/assessing-compliance-in-digital-advertising-a-deep-dive-into-acceptable-ads-stan
  WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation
  USENIX/2026/when-fun-turns-toxic-a-first-look-at-aggressive-advertising-in-mini-games
  WWW/2026/when-ads-become-profiles-uncovering-the-invisible-risk-of-web-advertising-at-sca
GAP top 30: IN 20, CONTEXT 3, OUT:perception 2, user-perception total 5 (16.7%)
GAP top 60: IN 34, CONTEXT 7, OUT:perception 6, user-perception total 13 (21.7%)
GAP top 127: IN 42, CONTEXT 8, OUT:perception 15, user-perception total 23 (18.1%)
GAP >= 5 hits that recruited human participants (any role): 51 of 127 (40.2%); of those, IN 12, CONTEXT 8, OUT 31
GAP top 30 that recruited participants: 10 of 30; IN 4
 
CONTEXT papers (reading list, not population):
  USENIX/2017/exploring-user-perceptions-of-discrimination-in-online-targeted-advertising — scenario survey on discriminatory targeting
  CCS/2019/oh-the-places-youve-been-user-reactions-to-longitudinal-transparency-about-third — reactions to tracking inferences; interests inferred by the authors, not by a platform
  IEEE-SP/2023/when-and-why-do-people-want-ad-targeting-explanations-evidence-from-a-four-week — 4,251 ads logged, but the question is when people want an explanation
  PETS/2023/surprised-shocked-worried-user-reactions-to-facebook-data-collection-from-third — reactions to Off-Facebook Activity
  PETS/2024/what-does-it-mean-to-be-creepy-responses-to-visualizations-of-personal-browsing — design probe; interests inferred by the authors
  IEEE-SP/2025/characterizing-the-usability-and-usefulness-of-u-s-ad-transparency-systems — usability of 22 ad-transparency systems
  PETS/2025/misalignments-and-demographic-differences-in-expected-and-actual-privacy-setting — Facebook settings incl. ad profile, as a perception study
  PETS/2025/privacy-perceptions-and-behaviors-towards-targeted-advertising-on-social-media-a — cross-country survey on targeted ads
 
design:algorithm_audits audit set: 34; IN here 22; the rest:
  not a candidate  IMC/2015/location-location-location-the-impact-of-geolocation-on-web-search-personalizati
  not a candidate  IMC/2015/peeking-beneath-the-hood-of-uber
  not a candidate  WWW/2018/auditing-the-personalization-and-composition-of-politically-related-search-engin
  OUT:recommendation  WWW/2019/measuring-political-personalization-of-google-news-search
  not a candidate  WWW/2022/left-or-right-a-peek-into-the-political-biases-in-email-spam-filtering-algorithm
  OUT:recommendation  PETS/2023/a-utility-preserving-obfuscation-approach-for-youtube-recommendations
  not a candidate  WWW/2023/a-method-to-assess-and-explain-disparate-impact-in-online-retailing
  not a candidate  IMC/2024/poster-identifying-filter-bubble-based-on-feed-level-embedding-similarity-analys
  not a candidate  WWW/2024/tiktok-and-the-art-of-personalization-investigating-exploration-and-exploitation
  not a candidate  USENIX/2025/big-help-or-big-brother-auditing-tracking-profiling-and-personalization-in-gener
  OUT:dsr  IEEE-SP/2026/setting-the-course-but-forgetting-to-steer-analyzing-compliance-with-gdprs-right
  not a candidate  WWW/2026/does-this-button-work-investigating-youtubes-ineffective-user-controls
 
=== PASS C — the IN population ===
Per year (IN papers / corpus papers that year):
2010: 2/119  2011: 0/116  2012: 1/151  2013: 0/125  2014: 5/166  2015: 2/190  2016: 2/182  2017: 1/231  2018: 5/254  2019: 7/402  2020: 8/404  2021: 2/379  2022: 7/546  2023: 9/719  2024: 7/690  2025*: 9/770  2026*: 4/415
 
Buckets (both ends bounded; last bucket provisional):
bucket      years  IN  corpus  IN per year  IN per 1,000 corpus papers
----------  -----  --  ------  -----------  --------------------------
2010–2013   4      3   511     0.75         5.9
2014–2017   4      10  769     2.50         13.0
2018–2021   4      22  1439    5.50         15.3
2022–2024   3      23  1955    7.67         11.8
2025–2026*  2      13  1185    6.50         11.0
 
By venue (share of that venue's own papers in the extraction):
venue    venue papers  IN  share
-------  ------------  --  -----
PETS     510           14  2.7%
WWW      843           20  2.4%
IMC      638           15  2.4%
IEEE-SP  767           5   0.7%
NDSS     701           4   0.6%
USENIX   1410          8   0.6%
CCS      990           5   0.5%
 
Platform measured (multi-valued; of the IN papers):
web 53 (74.6%); other-online-service 36 (50.7%); mobile 11 (15.5%); iot 3 (4.2%)
 
Observable families (multi-valued; paper-counted), first / most recent year, and per bucket:
observable   papers  first  latest  2010–2013  2014–2017  2018–2021  2022–2024  2025–2026*
-----------  ------  -----  ------  ---------  ---------  ---------  ---------  ----------
retarget     3       2016   2022    0          1          1          1          0
persona      19      2010   2026    1          6          2          5          5
bids         7       2019   2025    0          0          2          4          1
rtbprice     3       2017   2020    0          1          2          0          0
explanation  14      2015   2026    0          1          6          3          4
donation     11      2018   2026    0          0          5          4          2
advertiser   10      2017   2024    0          1          5          4          0
crawlads     29      2010   2026    3          6          6          7          7
archive      7       2020   2026    0          0          2          4          1
  retarget: 2016 USENIX tracing-information-flows-between-ad-exc | 2018 WWW adbudgetkiller-online-advertising-budget | 2022 CCS cart-ology-intercepting-targeted-adverti
  persona: 2010 IMC challenges-in-measuring-online-advertisi | 2014 CCS your-online-interests-pwned-a-pollution- | 2014 USENIX xray-enhancing-the-web-s-transparency-wi | 2014 WWW adscape-harvesting-and-analyzing-online- | 2015 CCS sunlight-fine-grained-targeting-detectio | 2015 PETS automated-experiments-on-ad-privacy-sett | 2016 USENIX tracing-information-flows-between-ad-exc | 2020 PETS inferring-tracker-advertiser-relationshi | 2020 WWW stop-tracking-me-bro-differential-tracki | 2022 NDSS auto-draft-209 | 2022 PETS atom-ad-network-tomography | 2023 CCS marketing-to-children-through-online-tar | 2023 IMC tracking-profiling-and-ad-targeting-in-t | 2024 PETS opted-out-yet-tracked-are-regulations-en | 2025 IMC from-voice-to-ads-auditing-commercial-sm | 2025 PETS echoes-of-privacy-uncovering-the-profili | 2025 PETS more-and-scammier-ads-the-perils-of-yout | 2025 WWW the-first-early-evidence-of-the-use-of-b | 2026 PETS ad-personalization-and-transparency-in-m
  bids: 2019 IMC no-more-chasing-waterfalls-a-measurement | 2020 PETS inferring-tracker-advertiser-relationshi | 2022 IMC what-factors-affect-targeting-and-bids-i | 2022 NDSS auto-draft-209 | 2023 IMC tracking-profiling-and-ad-targeting-in-t | 2024 PETS opted-out-yet-tracked-are-regulations-en | 2025 WWW the-first-early-evidence-of-the-use-of-b
  rtbprice: 2017 IMC if-you-are-not-paying-for-it-you-are-the | 2018 WWW the-cost-of-digital-advertisement-compar | 2020 WWW stop-tracking-me-bro-differential-tracki
  explanation: 2015 PETS automated-experiments-on-ad-privacy-sett | 2018 USENIX unveiling-and-quantifying-facebook-explo | 2019 NDSS measuring-the-facebook-advertising-ecosy | 2019 NDSS quantity-vs-quality-evaluating-user-inte | 2019 WWW auditing-offline-data-brokers-via-facebo | 2020 PETS canarytrap-detecting-data-misuse-by-thir | 2020 USENIX what-twitter-knows-characterizing-ad-tar | 2023 CCS marketing-to-children-through-online-tar | 2024 PETS how-does-connecting-online-activities-to | 2024 PETS overprofiling-analysis-on-major-internet | 2025 PETS echoes-of-privacy-uncovering-the-profili | 2025 PETS more-and-scammier-ads-the-perils-of-yout | 2026 PETS a-year-under-the-dsa-ad-transparencys-un | 2026 PETS ad-personalization-and-transparency-in-m
  donation: 2018 USENIX unveiling-and-quantifying-facebook-explo | 2019 NDSS measuring-the-facebook-advertising-ecosy | 2020 USENIX what-twitter-knows-characterizing-ad-tar | 2020 WWW facebook-ads-monitor-an-independent-audi | 2021 IMC unique-on-facebook-formulation-and-evide | 2022 IMC what-factors-affect-targeting-and-bids-i | 2023 IEEE-SP collaborative-ad-transparency-promises-a | 2023 USENIX problematic-advertising-and-its-disparat | 2024 PETS overprofiling-analysis-on-major-internet | 2026 PETS a-year-under-the-dsa-ad-transparencys-un | 2026 WWW when-ads-become-profiles-uncovering-the-
  advertiser: 2017 IMC if-you-are-not-paying-for-it-you-are-the | 2018 IEEE-SP privacy-risks-with-facebooks-pii-based-t | 2018 USENIX unveiling-and-quantifying-facebook-explo | 2019 PETS investigating-sources-of-pii-used-in-fac | 2019 WWW auditing-offline-data-brokers-via-facebo | 2021 IMC unique-on-facebook-formulation-and-evide | 2022 IMC measurement-and-analysis-of-implied-iden | 2023 CCS marketing-to-children-through-online-tar | 2023 IEEE-SP collaborative-ad-transparency-promises-a | 2024 PETS client-side-and-server-side-tracking-on-
  crawlads: 2010 IMC challenges-in-measuring-online-advertisi | 2010 WWW analyzing-content-level-properties-of-th | 2012 CCS knowing-your-enemy-understanding-and-det | 2014 IMC the-dark-alleys-of-madison-avenue-unders | 2014 USENIX brahmastra-driving-apps-to-test-the-secu | 2014 WWW adscape-harvesting-and-analyzing-online- | 2015 CCS sunlight-fine-grained-targeting-detectio | 2016 IMC recommended-for-you-a-first-look-at-cont | 2016 USENIX tracing-information-flows-between-ad-exc | 2018 WWW exposing-search-and-advertisement-abuse- | 2019 IMC what-you-see-is-not-what-you-get-discove | 2019 WWW revisiting-mobile-advertising-threats-wi | 2020 IMC when-push-comes-to-ads-measuring-the-ris | 2020 WWW maddroid-characterizing-and-detecting-de | 2021 IMC polls-clickbait-and-commemorative-2-bill | 2022 PETS atom-ad-network-tomography | 2022 WWW conspiracy-brokers-understanding-the-mon | 2023 WWW online-advertising-in-ukraine-and-russia | 2023 WWW are-mobile-advertisements-in-compliance- | 2023 WWW who-funds-misinformation-a-systematic-an | 2024 IEEE-SP targeted-and-troublesome-tracking-and-ad | 2024 IMC analyzing-the-in-accessibility-of-online | 2025 IEEE-SP analyzing-ad-prevalence-characteristics- | 2025 NDSS careful-about-what-app-promotion-ads-rec | 2025 PETS more-and-scammier-ads-the-perils-of-yout | 2025 PETS sheeps-clothing-wolfish-intent-automated | 2025 WWW assessing-compliance-in-digital-advertis | 2025 WWW before-after-the-effect-of-eus-2022-code | 2026 USENIX when-fun-turns-toxic-a-first-look-at-agg
  archive: 2020 IEEE-SP a-security-analysis-of-the-facebook-ad-l | 2020 WWW facebook-ads-monitor-an-independent-audi | 2022 USENIX an-audit-of-facebooks-political-ad-polic | 2023 WWW propaganda-politica-pagada-exploring-u-s | 2023 WWW the-thin-ideology-of-populist-advertisin | 2024 IMC beyond-the-guidelines-assessing-metas-po | 2026 PETS a-year-under-the-dsa-ad-transparencys-un
 
Question tags (multi-valued; paper-counted):
question   papers  2010–2013  2014–2017  2018–2021  2022–2024  2025–2026*
---------  ------  ---------  ---------  ---------  ---------  ----------
targeting  41      2          7          12         13         7
price      11      0          2          4          4          1
delivery   3       0          0          1          2          0
content    31      1          3          8          11         8
crawlads papers whose only question is content: 20 of 29
IN papers the GAP probe misses: 29; of which content-only question: 22; the rest: IMC 2010 challenges-in-measuring-online [persona,crawlads|targeting]; WWW 2010 analyzing-content-level-proper [crawlads|targeting]; PETS 2015 automated-experiments-on-ad-pr [persona,explanation|targeting]; IEEE-SP 2018 privacy-risks-with-facebooks-p [advertiser|targeting]; USENIX 2018 unveiling-and-quantifying-face [explanation,donation,advertiser|targeting]; PETS 2024 client-side-and-server-side-tr [advertiser|targeting]; WWW 2026 when-ads-become-profiles-uncov [donation|targeting]
observables per IN paper: 1 → 44, 2 → 22, 3+ → 5
IN papers whose only observable is crawlads and only question is content: 20
IN papers asking a targeting, price or delivery question (the page's core): 45
  of which by bucket: 2010–2013 2, 2014–2017 8, 2018–2021 14, 2022–2024 14, 2025–2026* 7
 
=== PASS D — extraction fields on the IN papers, against the comparable baseline ===
IN papers with a crawlConfig object: 41 of 71; corpus baseline: 1080 papers with one
crawlConfig field  IN (of papers with a config)  baseline (of 1,080 with a config)
-----------------  ----------------------------  ---------------------------------
statefulness       29 of 41 (70.7%)              219 of 1080 (20.3%)
consentAction      21 of 41 (51.2%)              349 of 1080 (32.3%)
headless           9 of 41 (22.0%)               140 of 1080 (13.0%)
interactionDepth   37 of 41 (90.2%)              841 of 1080 (77.9%)
authentication     31 of 41 (75.6%)              779 of 1080 (72.1%)
  IN statefulness: stateful 13, not-stated 12, stateless 10, both 6
  IN consentAction: not-stated 16, no-interaction 15, not-applicable 4, accept-all 3, dismiss-or-remove 1, accept-and-reject 1, cmp-specific-choices 1
  IN headless: not-stated 32, headless 6, headful 3
  IN authentication: none 25, not-stated 10, account-registration 5, manual-login 1
vantage location stated: IN 37 of 67 with a vantage tuple (55.2%); baseline measuredFrom 1228 of 3908 (31.4%)
  complements: vantage NOT stated 30 of 67 (44.8%); headless NOT stated 32 of 41 (78.0%); account-registration or manual-login 6 of 41
ethics review outcome stated: IN 29 of 71 empirical (40.8%); baseline 1728 of 5118 (33.8%)
artifact availability stated: IN 51 of 71 empirical (71.8%); baseline 2890 of 5118 (56.5%)
  IN artifacts.availability: public 41, none-mentioned 18, promised-not-yet-available 6, no-artifacts-object 2, on-request 2, restricted 1, explicitly-withheld 1
runs a non-descriptive statistic: IN 37 of 71 empirical (52.1%); baseline 1637 of 5118 (32.0%)
IN papers measuring an other-online-service platform: 36; of which with no crawlConfig: 18
recruited human participants: IN 16 of 71 (22.5%)
classification.method == llm (used/produced): 5 of 71: IMC/2024/beyond-the-guidelines-assessing-metas-political-ad-moderation-in-the-eu, IEEE-SP/2025/analyzing-ad-prevalence-characteristics-and-compliance-in-alexa-skills, IMC/2025/from-voice-to-ads-auditing-commercial-smart-speakers-for-targeted-advertising-ba, PETS/2025/sheeps-clothing-wolfish-intent-automated-detection-and-evaluation-of-problematic, WWW/2026/when-ads-become-profiles-uncovering-the-invisible-risk-of-web-advertising-at-sca
tools[] names an LLM (used/produced): 7: IMC/2024/beyond-the-guidelines-assessing-metas-political-ad-moderation-in-the-eu [GPT-3.5 Instruct; gpt-4-turbo-2024-04-09] | IEEE-SP/2025/analyzing-ad-prevalence-characteristics-and-compliance-in-alexa-skills [GPT-4o; GPT-3.5; Llama 3.2; Llama 2] | IMC/2025/from-voice-to-ads-auditing-commercial-smart-speakers-for-targeted-advertising-ba [GPT-4o] | PETS/2025/echoes-of-privacy-uncovering-the-profiling-practices-of-voice-assistants [ChatGPT-4o] | PETS/2025/sheeps-clothing-wolfish-intent-automated-detection-and-evaluation-of-problematic [GPT-4o-mini; GPT-4o] | PETS/2026/a-year-under-the-dsa-ad-transparencys-uneven-landscape [OpenAI ChatGPT; Gemini] | WWW/2026/when-ads-become-profiles-uncovering-the-invisible-risk-of-web-advertising-at-sca [Gemini 2.0 Flash; Gemini 2.5 Pro; Gemini 2.5 Flash; GPT-4o; GPT-5; GPT-5 Mini]
 
=== PASS E — full-text method probes over the IN papers (upper bounds; hand-read verdicts in PASS E2) ===
probe (>=1 hit)  IN papers  crawlads papers
---------------  ---------  ---------------
dedup            33 of 71   16 of 29
screenshot       27 of 71   17 of 29
impressions      49 of 71   20 of 29
landing          30 of 71   19 of 29
encrypted_price  2 of 71    0 of 29
control          19 of 71   7 of 29
clicking         33 of 71   16 of 29
bot              8 of 71    4 of 29
easylist         19 of 71   14 of 29
llm              12 of 71   5 of 29
 
crawlads papers with a dedup-probe hit: 16 of 29
  states IMC/2010/challenges-in-measuring-online-advertising-systems
         Table 2: false positives/negatives of four ways of uniquely identifying an ad
         ctx: variations of the same ad. False negatives have the effect of over-counting the number of unique ads and in the process, increasing noise. False positives, on the other hand do not
  counts IMC/2014/the-dark-alleys-of-madison-avenue-understanding-malicious-advertisements
         "a corpus of 673,596 unique advertisements"; no identity rule
         ctx: block advertisements. After a period of three months, we have created a corpus of 673,596 unique advertisements. We then analyzed this dataset searching for misbehaving advertiseme
  counts USENIX/2014/brahmastra-driving-apps-to-test-the-security-of-third-party-components
         "566 unique ads, and 3,633 unique landing pages"
         ctx:  collected ads from each of the 220 apps over 5 days, giving us a total collection of 566 unique ads, and 3,633 unique landing pages. Using WoT, we determine that 183 out of the 3,
  counts WWW/2014/adscape-harvesting-and-analyzing-online-display-ads
         "875,209 impressions, and 175,495 distinct ads"
         ctx: creatives and landing pages. Our crawling strategy is focused on maximizing the number of unique ads harvested. Of critical importance to our study is the recognition that a user's
  counts CCS/2015/sunlight-fine-grained-targeting-detection-at-scale-with-statistical-confidence
         "24,961,698 impressions created collectively by 19,543 unique ads"
         ctx:  disabled Gmail ads, we collected 24,961,698 im- pressions created collectively by 19,543 unique ads. As expected, the distribution of impressions per ad is skewed: the median ads 
  states IMC/2016/recommended-for-you-a-first-look-at-content-recommendation-networks
         URL uniqueness with and without URL parameters (94% -> 85%)
         ctx:  and we do not click on advertiser URLs, and thus never we observe that the percentage of unique ads drop to trigger the dynamic redirects. Rather, we extract the 85%. advertiser U
  states IMC/2019/what-you-see-is-not-what-you-get-discovering-and-tracking-social-engineering-att
         perceptual hash (dHash) over screenshots
         ctx: tom JS can be easily detected by existing anti-bot JS li- (see step ④). We then compute a perceptual hash, specifically a braries [5, 17]. To implement a stealthier automated brows
  states WWW/2019/revisiting-mobile-advertising-threats-with-madlife
         visual rather than cryptographic hashing; entity-based dedup 12,036 -> 7,067 landing pages
         ctx: aign (e.g., voting), privacy (e.g., phone number) Table 6 depicts the statistics based on unique ads and total number of ads in each category. 345 out of 7,067 unique ad landing pa
  states IMC/2021/polls-clickbait-and-commemorative-2-bills-problematic-political-advertising-on-n
         MinHash-LSH over ad text, Jaccard > 0.5, grouped by landing-page domain; 1,402,245 ads -> 169,751 unique
         ctx: duplithe text is contained in the HTML markup, so we automatically cated dataset (169,751 unique ads) and it classified 8,836 unique ads extracted the text from these ads using Jav
  counts PETS/2022/atom-ad-network-tomography
         defines unique per persona ("we do not count the same ad shown twice") without the identity rule
         ctx:  which the number of websites in each interest group was varied and the number of ads and unique ads gathered from our ad gathering sites were measured. In this experiment, we alte
  states WWW/2023/online-advertising-in-ukraine-and-russia-during-the-2022-russian-invasion
         average image hash
         ctx: August 19, 2022.1 We will make our data available upon request. Ad Content Analysis 2.2.1 Deduplication and text extraction from ads. Since ads typically contain text, we created a
  no     IEEE-SP/2024/targeted-and-troublesome-tracking-and-advertising-on-childrens-websites
         dedup of websites; perceptual hashing mentioned for a prior tool
         ctx: blockers, Storey et al. [67] developed an extension that detects the AdChoices icon using perceptual hashing. While we considered applying Storey et al.'s method, we found URL-base
  states IMC/2024/analyzing-the-in-accessibility-of-online-advertisements
         average hash plus the accessibility tree
         ctx:  ad, but prior to scraping its content, a diferent ad was delivered in its place. We also deduplicated the ads, using an average hashing function, as well as the contents of their 
  counts NDSS/2025/careful-about-what-app-promotion-ads-recommend-detecting-and-explaining-malware-promotion-via-app-promotion-graph
         unique ads per app over time; no identity rule
         ctx: p to refresh its ads. We observe that, within a specific time period, the total number of unique ads obtained from an app remains constant [59]. This suggests that ad libraries inf
  states PETS/2025/more-and-scammier-ads-the-perils-of-youtubes-ad-privacy-settings
         deduplicated ad videos by video ID
         ctx: ns. In case of a tie, the ad was discussed with other annotators to reach a consensus. We deduplicated ad videos based on their video ID. Ads were combined across the three privacy
  states PETS/2025/sheeps-clothing-wolfish-intent-automated-detection-and-evaluation-of-problematic
         perceptual hashes grouped with Faiss
         ctx: eenshots or misaligned content. To clean the dataset, we used Meta's Faiss library [5] to deduplicate ads within each category by generating perceptual hashes for images and groupi
dedup verdicts over the 29 crawlads papers: states 9, counts-only 6, probe hit something else 1, no probe hit 13
=> say how a unique ad was identified: 9 of 29 (31.0%) — a probe-scoped count: a paper that describes its dedup in other words is not seen
crawlads papers with no dedup-probe hit: WWW/2010/analyzing-content-level-properties-of-the-web-adversphere, CCS/2012/knowing-your-enemy-understanding-and-detecting-malicious-web-advertising, USENIX/2016/tracing-information-flows-between-ad-exchanges-using-retargeted-ads, WWW/2018/exposing-search-and-advertisement-abuse-tactics-and-infrastructure-of-technical, IMC/2020/when-push-comes-to-ads-measuring-the-rise-of-malicious-push-advertising, WWW/2020/maddroid-characterizing-and-detecting-devious-ad-contents-for-android-apps, WWW/2022/conspiracy-brokers-understanding-the-monetization-of-youtube-conspiracy-theories, WWW/2023/are-mobile-advertisements-in-compliance-with-apps-age-group, WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines, IEEE-SP/2025/analyzing-ad-prevalence-characteristics-and-compliance-in-alexa-skills, WWW/2025/assessing-compliance-in-digital-advertising-a-deep-dive-into-acceptable-ads-stan, WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation, USENIX/2026/when-fun-turns-toxic-a-first-look-at-aggressive-advertising-in-mini-games
 
=== PASS F — ad-topical papers in the venue index that are NOT in the extraction ===
index records: 16864
title-probe hits (homographs removed): 245; by status: screened-out 107, extracted 121, no-abstract 5, selected-no-text 2, venue-year-unlabelled 10
code  papers  meaning
----  ------  -----------------------------------------------------------------------------------------------
S     18      an ad measurement this page would have counted (targeting, price, delivery or content observed)
M     64      auction / CTR / bidding / allocation / creative-generation method on platform data
D     11      privacy-preserving ad system or protocol
B     7       ad blocking / anti-adblock
T     2       tracking or syncing, no ad observed
C     1       supply chain (privacy:ads_txt)
P     1       perception study
K     1       SoK / survey
H     19      homograph ("ad hoc", "retargetable", "better than advertised")
U     1       cannot be decided from the title
 
The S rows — ad measurements outside the extraction, with the reason each is missing:
  venue-year-unlabelled  PETS 2012  Betrayed by Your Ads! Reconstructing user profiles from Targeted Ads
  selected-no-text       IMC 2013  Best paper - Follow the money: understanding economics of online aggregation and advertising.
  venue-year-unlabelled  PETS 2013  How Much is too Much? Leveraging Ads Audience Estimation to Evaluate Public Profile Uniqueness
  selected-no-text       WWW 2014  Stranger danger: exploring the ecosystem of ad-based URL shortening services.
  no-abstract            NDSS 2014  Selling Off Privacy at Auction
  screened-out           IMC 2015  Empirical Analysis of Search Advertising Strategies.
  venue-year-unlabelled  NDSS 2016  Are these Ads Safe: Detecting Hidden Attacks through the Mobile App-Web Interfaces
  venue-year-unlabelled  NDSS 2016  The Price of Free: Privacy Leakage in Personalized Mobile In-Apps Ads
  venue-year-unlabelled  NDSS 2016  What Mobile Ads Know About Mobile Users
  venue-year-unlabelled  NDSS 2018  Investigating Ad Transparency Mechanisms in Social Media: A Case Study of Facebooks Explanations
  screened-out           WWW 2021  Understanding the Complexity of Detecting Political Ads.
  screened-out           WWW 2021  Auditing for Discrimination in Algorithms Delivering Job Ads.
  screened-out           WWW 2023  On Detecting Policy-Related Political Ads: An Exploratory Analysis of Meta Ads in 2022 French Election.
  screened-out           WWW 2024  Uncovering the Hidden Data Costs of Mobile YouTube Video Ads.
  screened-out           WWW 2024  Analyzing Ad Exposure and Content in Child-Oriented Videos on YouTube.
  screened-out           WWW 2026  Users Pay Twice: The Hidden Energy Cost of Web Advertising.
  no-abstract            WWW 2026  Is Contextual Advertising Safe? Analyzing Systemic Risks with Ads on YouTube.
  no-abstract            WWW 2026  Safeguarding Children at Scale: Cost-Effective Multimodal LLM Detection of Inappropriate YouTube Advertising.
S rows: 18; by status: selected-no-text 2, screened-out 7, venue-year-unlabelled 6, no-abstract 3
unlabelled venue-years in the index: NDSS/2010, NDSS/2011, NDSS/2016, NDSS/2018, PETS/2010, PETS/2011, PETS/2012, PETS/2013, PETS/2014
 
=== --list: every verdict ===
OUT     mechanism      gap=5 fam=10 adw=126 CCS/2011/auctions-in-do-not-track-compliant-internet-advertising Bing auction logs, stale-bid simulation
OUT     scam           gap=0 fam=0 adw=42 CCS/2011/fashion-crimes-trending-term-exploitation-on-the-web MFA sites in trending-term search results
IN                     gap=0 fam=99 adw=59 CCS/2012/knowing-your-enemy-understanding-and-detecting-malicious-web-advertising [crawlads|content] malvertising redirection chains, Alexa top 90K
OUT     fraud          gap=1 fam=6 adw=121 CCS/2013/viceroi-catching-click-spam-in-search-ad-networks 
OUT     fraud          gap=0 fam=10 adw=59 CCS/2014/characterizing-large-scale-click-fraud-in-zeroaccess 
OUT     defence        gap=5 fam=24 adw=153 CCS/2014/private-by-design-advertising-meets-the-real-world Privad deployment metrics
OUT     tracking       gap=7 fam=10 adw=4 CCS/2014/the-web-never-forgets-persistent-tracking-mechanisms-in-the-wild 
IN                     gap=23 fam=80 adw=164 CCS/2014/your-online-interests-pwned-a-pollution-attack-against-targeted-advertising [persona|targeting,price] profile pollution vs DoubleClick; attack paper
IN                     gap=27 fam=35 adw=99 CCS/2015/sunlight-fine-grained-targeting-detection-at-scale-with-statistical-confidence [persona,crawlads|targeting] randomised synthetic profiles
OUT     homograph      gap=0 fam=8 adw=1 CCS/2016/predator-proactive-recognition-and-elimination-of-domain-abuse-at-time-of-regist domain-registration "prices"
OUT     mention        gap=5 fam=5 adw=11 CCS/2017/use-privacy-in-data-driven-systems-theory-and-experiments-with-machine-learnt-pr 
OUT     blocking       gap=1 fam=5 adw=151 CCS/2019/adversarial-perceptual-ad-blocking-meets-adversarial-machine-learning 
CONTEXT                gap=20 fam=29 adw=72 CCS/2019/oh-the-places-youve-been-user-reactions-to-longitudinal-transparency-about-third reactions to tracking inferences; interests inferred by the authors, not by a platform
OUT     homograph      gap=26 fam=1 adw=0 CCS/2019/privacy-risks-of-securing-machine-learning-models-against-adversarial-examples targeted adversarial examples
OUT     tracking       gap=3 fam=8 adw=18 CCS/2019/watching-you-watch-the-tracking-ecosystem-of-over-the-top-tv-streaming-devices 
OUT     homograph      gap=5 fam=0 adw=0 CCS/2021/black-box-adversarial-attacks-on-commercial-speech-platforms-with-minimal-inform 
OUT     mention        gap=5 fam=6 adw=31 CCS/2021/consistency-analysis-of-data-usage-purposes-in-mobile-apps 
OUT     fraud          gap=0 fam=0 adw=40 CCS/2021/dissecting-click-fraud-autonomy-in-the-wild 
OUT     homograph      gap=7 fam=0 adw=0 CCS/2021/encodermi-membership-inference-against-pre-trained-encoders-in-contrastive-learn 
OUT     tracking       gap=2 fam=77 adw=207 CCS/2021/this-sneaky-piggy-went-to-the-android-ad-market-misusing-mobile-sensors-for-stea ads' sensor access, not their content
OUT     fraud          gap=38 fam=43 adw=38 CCS/2021/understanding-and-detecting-mobile-ad-fraud-through-the-lens-of-invalid-traffic 
IN                     gap=48 fam=81 adw=173 CCS/2022/cart-ology-intercepting-targeted-advertising-via-ad-network-identity-entanglemen [retarget|targeting] identity entanglement read out through retargeted ads
OUT     dsr            gap=10 fam=12 adw=17 CCS/2022/do-opt-outs-really-opt-me-out traffic after industry opt-outs
OUT     tracking       gap=4 fam=13 adw=16 CCS/2022/freely-given-consent-studying-consent-notice-of-third-party-tracking-and-its-vio 
OUT     sandbox        gap=5 fam=31 adw=22 CCS/2022/privacy-limitations-of-interest-based-advertising-on-the-web-a-post-mortem-empir FLoC recomputed from comScore
OUT     homograph      gap=14 fam=0 adw=0 CCS/2022/when-evil-calls-targeted-adversarial-voice-over-ip-network 
IN                     gap=69 fam=119 adw=276 CCS/2023/marketing-to-children-through-online-targeted-advertising-targeting-mechanisms-a [persona,explanation,advertiser|targeting] six profiles, 3,221 ads + seven own campaigns
OUT     sandbox        gap=0 fam=7 adw=3 CCS/2024/the-privacy-utility-trade-off-in-the-topics-api 
OUT     fraud          gap=12 fam=16 adw=89 CCS/2024/unveiling-collusion-based-ad-attribution-laundering-fraud-detection-analysis-and 
OUT     sandbox        gap=6 fam=7 adw=18 CCS/2025/exploiting-the-shared-storage-api 
OUT     tracking       gap=9 fam=12 adw=16 CCS/2025/piixel-leaks-passive-identification-of-personally-identifiable-information-leaka 
OUT     mention        gap=0 fam=2 adw=43 CCS/2025/whispertest-a-voice-control-based-library-for-ios-ui-automation 
OUT     defence        gap=10 fam=10 adw=10 IEEE-SP/2011/repriv-re-imagining-content-personalization-and-in-browser-privacy in-browser personalisation system
OUT     tracking       gap=17 fam=33 adw=29 IEEE-SP/2012/third-party-web-tracking-policy-and-technology 
OUT     injection      gap=0 fam=3 adw=123 IEEE-SP/2015/ad-injection-at-scale-assessing-deceptive-advertisement-modifications 
OUT     scam           gap=3 fam=6 adw=55 IEEE-SP/2016/cloak-of-visibility-detecting-when-machines-browse-a-different-web advertisement cloaking
OUT     scam           gap=0 fam=23 adw=32 IEEE-SP/2017/how-to-learn-klingon-without-a-dictionary-detection-and-measurement-of-black-key SEO black keywords
OUT     homograph      gap=0 fam=0 adw=53 IEEE-SP/2018/crowd-gps-sec-leveraging-crowdsourcing-to-detect-and-localize-gps-spoofing-attac ADS-B
IN                     gap=1 fam=163 adw=114 IEEE-SP/2018/privacy-risks-with-facebooks-pii-based-targeting-auditing-a-data-brokers-adverti [advertiser|targeting] custom-audience interface as an oracle
OUT     scam           gap=1 fam=5 adw=43 IEEE-SP/2018/surveylance-automatically-detecting-online-survey-scams 
OUT     mention        gap=0 fam=9 adw=26 IEEE-SP/2018/the-spyware-used-in-intimate-partner-violence 
OUT     scam           gap=0 fam=5 adw=7 IEEE-SP/2019/measuring-and-analyzing-search-engine-poisoning-of-linguistic-collisions 
IN                     gap=4 fam=75 adw=364 IEEE-SP/2020/a-security-analysis-of-the-facebook-ad-library [archive|content] Ad Library audit
OUT     tracking       gap=6 fam=6 adw=38 IEEE-SP/2020/do-cookie-banners-respect-my-choice-measuring-legal-compliance-of-banners-from-i 
OUT     homograph      gap=0 fam=6 adw=0 IEEE-SP/2020/ex-vivo-dynamic-analysis-framework-for-android-device-drivers 
OUT     homograph      gap=0 fam=2 adw=170 IEEE-SP/2021/linking-bluetooth-le-classic-and-implications-for-privacy-preserving-bluetooth-b BLE advertisements
OUT     sponsorship    gap=0 fam=1 adw=156 IEEE-SP/2022/investigating-influencer-vpn-ads-on-youtube 
OUT     homograph      gap=0 fam=6 adw=2 IEEE-SP/2023/blue-is-the-new-black-market-privacy-leaks-and-re-victimization-from-police-auct police auctions
IN                     gap=22 fam=86 adw=109 IEEE-SP/2023/collaborative-ad-transparency-promises-and-limitations [donation,advertiser|targeting,delivery] 420 volunteers + 79 own campaigns
CONTEXT                gap=174 fam=275 adw=180 IEEE-SP/2023/when-and-why-do-people-want-ad-targeting-explanations-evidence-from-a-four-week 4,251 ads logged, but the question is when people want an explanation
OUT     homograph      gap=5 fam=0 adw=0 IEEE-SP/2024/multi-instance-adversarial-attack-on-gnn-based-malicious-domain-detection 
OUT     mention        gap=5 fam=6 adw=3 IEEE-SP/2024/sok-technical-implementation-and-human-impact-of-internet-privacy-regulations 
IN                     gap=58 fam=86 adw=285 IEEE-SP/2024/targeted-and-troublesome-tracking-and-advertising-on-childrens-websites [crawlads|content,targeting] ads on 2,004 children's sites from seven vantages
OUT     tracking       gap=5 fam=5 adw=4 IEEE-SP/2024/understanding-the-privacy-practices-of-political-campaigns-a-perspective-from-th 
IN                     gap=9 fam=18 adw=326 IEEE-SP/2025/analyzing-ad-prevalence-characteristics-and-compliance-in-alexa-skills [crawlads|content] audio ads in 45,477 Alexa skills
CONTEXT                gap=56 fam=77 adw=111 IEEE-SP/2025/characterizing-the-usability-and-usefulness-of-u-s-ad-transparency-systems usability of 22 ad-transparency systems
OUT     homograph      gap=0 fam=24 adw=0 IEEE-SP/2025/decentralization-of-ethereums-builder-market MEV-Boost bids
OUT     fraud          gap=2 fam=10 adw=43 IEEE-SP/2025/identifying-incoherent-search-sessions-search-click-fraud-remediation-under-real 
OUT     mention        gap=9 fam=9 adw=8 IEEE-SP/2025/understanding-users-security-and-privacy-concerns-and-attitudes-towards-conversa 
OUT     dsr            gap=8 fam=24 adw=31 IEEE-SP/2026/setting-the-course-but-forgetting-to-steer-analyzing-compliance-with-gdprs-right 
IN                     gap=3 fam=18 adw=108 IMC/2010/challenges-in-measuring-online-advertising-systems [persona,crawlads|targeting] controlled profiles; ad churn and snapshot completeness
OUT     fraud          gap=0 fam=12 adw=122 IMC/2011/understanding-fraudulent-activities-in-online-ad-exchanges 
OUT     mention        gap=5 fam=5 adw=82 IMC/2012/breaking-for-commercials-characterizing-mobile-advertising mobile ad traffic volume and energy; no ad content, targeting or price
OUT     mechanism      gap=0 fam=0 adw=121 IMC/2013/understanding-the-effectiveness-of-video-ads-a-measurement-study CDN logs of ad completion
IN                     gap=0 fam=45 adw=135 IMC/2014/the-dark-alleys-of-madison-avenue-understanding-malicious-advertisements [crawlads|content] 673,596 ads collected by crawl
OUT     blocking       gap=1 fam=5 adw=41 IMC/2016/ad-blockers-global-prevalence-and-impact 
OUT     tracking       gap=2 fam=2 adw=40 IMC/2016/characterizing-website-behaviors-across-logged-in-and-not-logged-in-users ads counted as categorised FQDNs, not collected
IN                     gap=5 fam=7 adw=110 IMC/2016/recommended-for-you-a-first-look-at-content-recommendation-networks [crawlads|content,targeting] CRN widgets and advertiser landing pages
OUT     fraud          gap=1 fam=7 adw=364 IMC/2017/exploring-the-dynamics-of-search-advertiser-fraud 
IN                     gap=100 fam=229 adw=96 IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to [rtbprice,advertiser|price] cleartext and encrypted RTB prices + two own campaigns
OUT     blocking       gap=1 fam=1 adw=45 IMC/2017/the-ad-wars-retrospective-measurement-and-analysis-of-anti-adblock-filter-lists 
OUT     homograph      gap=0 fam=6 adw=12 IMC/2018/following-their-footsteps-characterizing-account-automation-abuse-and-defenses 
OUT     tracking       gap=5 fam=6 adw=41 IMC/2018/how-tracking-companies-circumvented-ad-blockers-using-websockets 
OUT     tracking       gap=20 fam=22 adw=17 IMC/2018/tracing-cross-border-web-tracking 
OUT     supplychain    gap=57 fam=64 adw=325 IMC/2019/a-longitudinal-analysis-of-the-ads-txt-standard RTB inclusion chains serve the ads.txt compliance test
OUT     blocking       gap=0 fam=1 adw=53 IMC/2019/errors-misunderstandings-and-attacks-analyzing-the-crowdsourcing-process-of-ad-b 
IN                     gap=84 fam=147 adw=37 IMC/2019/no-more-chasing-waterfalls-a-measurement-study-of-the-header-bidding-ad-ecosyste [bids|price] HB bids from a clean crawler; shared with privacy:ads_txt
IN                     gap=2 fam=7 adw=147 IMC/2019/what-you-see-is-not-what-you-get-discovering-and-tracking-social-engineering-att [crawlads|content] SE ad campaigns clustered from screenshots
IN                     gap=1 fam=9 adw=132 IMC/2020/when-push-comes-to-ads-measuring-the-rise-of-malicious-push-advertising [crawlads|content] web-push ad notifications collected and clustered
IN                     gap=4 fam=176 adw=566 IMC/2021/polls-clickbait-and-commemorative-2-bills-problematic-political-advertising-on-n [crawlads|content] 1.4M ads from 745 news sites, six locations
IN                     gap=23 fam=243 adw=68 IMC/2021/unique-on-facebook-formulation-and-evidence-of-nano-targeting-individual-users-w [donation,advertiser|targeting,delivery] FDVT interests + 21 nanotargeting campaigns
OUT     homograph      gap=7 fam=0 adw=0 IMC/2022/illuminating-large-scale-ipv6-scanning-in-the-internet scan "targeting"
IN                     gap=13 fam=53 adw=229 IMC/2022/measurement-and-analysis-of-implied-identity-in-ad-delivery-optimization [advertiser|delivery] paired campaigns with synthetic faces
IN                     gap=90 fam=255 adw=318 IMC/2022/what-factors-affect-targeting-and-bids-in-online-advertising-a-field-measurement [donation,bids|targeting,price] 286 participants, extension
IN                     gap=40 fam=66 adw=62 IMC/2023/tracking-profiling-and-ad-targeting-in-the-alexa-echo-smart-speaker-ecosystem [persona,bids|targeting,price] Echo personas, web bids
OUT     tracking       gap=0 fam=8 adw=120 IMC/2023/understanding-the-privacy-risks-of-popular-search-engine-advertising-systems ad-click redirect chains studied for identifier leakage
IN                     gap=2 fam=12 adw=333 IMC/2024/analyzing-the-in-accessibility-of-online-advertisements [crawlads|content] ads on 90 sites for 31 days
IN                     gap=4 fam=70 adw=208 IMC/2024/beyond-the-guidelines-assessing-metas-political-ad-moderation-in-the-eu [archive|content] Meta Ad Library, 16 EU countries
OUT     tracking       gap=3 fam=7 adw=8 IMC/2024/diffaudit-auditing-privacy-practices-of-online-services-for-children-and-adolesc 
OUT     tracking       gap=2 fam=7 adw=18 IMC/2024/watching-tv-with-the-second-party-a-first-look-at-automatic-content-recognition 
OUT     tracking       gap=0 fam=1 adw=42 IMC/2024/whatcha-lookin-at-investigating-third-party-web-content-in-popular-android-apps 
OUT     tracking       gap=8 fam=8 adw=5 IMC/2025/cookieguard-characterizing-and-isolating-the-first-party-cookie-jar 
IN                     gap=46 fam=53 adw=238 IMC/2025/from-voice-to-ads-auditing-commercial-smart-speakers-for-targeted-advertising-ba [persona|targeting] 42 cloned-voice puppets
OUT     homograph      gap=1 fam=7 adw=0 NDSS/2013/analyzing-unique-bid-auction-sites-for-fun-and-profit consumer unique-bid auctions
OUT     homograph      gap=0 fam=1 adw=72 NDSS/2014/scambaiter-understanding-targeted-nigerian-scams-on-craigslist classified ads on Craigslist
OUT     scam           gap=0 fam=0 adw=63 NDSS/2015/parking-sensors-analyzing-and-detecting-parked-domains parked domains
OUT     homograph      gap=0 fam=0 adw=52 NDSS/2017/are-we-there-yet-on-rpki-s-deployment-and-security BGP route advertisements
OUT     scam           gap=0 fam=18 adw=12 NDSS/2017/dial-one-for-scam-a-large-scale-analysis-of-technical-support-scams malvertising only as the route to TSS pages
OUT     mention        gap=2 fam=5 adw=7 NDSS/2019/master-of-web-puppets-abusing-web-browsers-for-persistent-and-stealthy-computation 
IN                     gap=37 fam=137 adw=458 NDSS/2019/measuring-the-facebook-advertising-ecosystem [donation,explanation|targeting] AdAnalyst, 622 volunteers
OUT     homograph      gap=0 fam=0 adw=62 NDSS/2019/nearby-threats-reversing-analyzing-and-attacking-googles-nearby-connections-on-android BLE advertisements
IN                     gap=21 fam=33 adw=106 NDSS/2019/quantity-vs-quality-evaluating-user-interest-profiles-using-ad-preference-managers [explanation|targeting] ad-preference-manager profiles vs participants
OUT     homograph      gap=0 fam=0 adw=48 NDSS/2020/withdrawing-the-bgp-re-routing-curtain-understanding-the-security-impact-of-bgp-poisoning-through-real-world-measurements BGP route advertisements
OUT     blocking       gap=0 fam=0 adw=106 NDSS/2021/cv-inspector-towards-automating-detection-of-adblock-circumvention 
OUT     fraud          gap=3 fam=10 adw=53 NDSS/2021/the-abuser-inside-apps-finding-the-culprit-committing-mobile-ad-fraud 
OUT     homograph      gap=0 fam=0 adw=145 NDSS/2021/trust-the-crowd-wireless-witnessing-to-detect-attacks-on-ads-b-based-air-traffic-surveillance ADS-B
OUT     tracking       gap=8 fam=8 adw=37 NDSS/2021/understanding-worldwide-private-information-collection-on-android 
IN                     gap=86 fam=98 adw=34 NDSS/2022/auto-draft-209 [persona,bids|targeting,price] HARPO: obfuscation scored on real bids and segments
OUT     tracking       gap=6 fam=12 adw=27 NDSS/2023/i-still-know-what-you-watched-last-sunday-privacy-of-the-hbbtv-protocol-in-the-european-smart-tv-landscape 
OUT     tracking       gap=3 fam=14 adw=16 NDSS/2023/navigating-murky-waters-automated-browser-feature-testing-for-uncovering-tracking-vectors 
OUT     homograph      gap=3 fam=6 adw=12 NDSS/2024/anonpsi-an-anonymity-assessment-framework-for-psi 
IN                     gap=3 fam=5 adw=249 NDSS/2025/careful-about-what-app-promotion-ads-recommend-detecting-and-explaining-malware-promotion-via-app-promotion-graph [crawlads|content] app-promotion ads collected by driving apps
OUT     scam           gap=0 fam=1 adw=53 NDSS/2025/ctrlaltdeceive-quantifying-user-exposure-to-online-scams 
OUT     perception     gap=7 fam=10 adw=2 NDSS/2025/transparency-or-information-overload-evaluating-users-comprehension-and-perceptions-of-the-ios-app-privacy-report 
OUT     mention        gap=0 fam=1 adw=43 NDSS/2026/chameleoscan-demystifying-and-detecting-ios-chameleon-apps-via-llm-powered-ui-exploration 
OUT     homograph      gap=6 fam=6 adw=3 NDSS/2026/side-channel-inference-of-user-activities-in-ar-vr-using-gpu-profiling 
OUT     homograph      gap=0 fam=0 adw=57 NDSS/2026/sok-cryptographic-authenticated-dictionaries 
OUT     homograph      gap=1 fam=17 adw=1 NDSS/2026/the-role-of-privacy-guarantees-in-voluntary-donation-of-private-health-data-for-altruistic-goals health data donation
OUT     blocking       gap=1 fam=1 adw=54 PETS/2015/an-automated-approach-for-complementing-ad-blockers-blacklists 
IN                     gap=3 fam=70 adw=230 PETS/2015/automated-experiments-on-ad-privacy-settings [persona,explanation|targeting] AdFisher
OUT     perception     gap=4 fam=19 adw=23 PETS/2016/access-denied-contrasting-data-access-in-the-united-states-and-ireland 
OUT     perception     gap=28 fam=30 adw=60 PETS/2016/do-not-track-me-sometimes-users-contextual-preferences-for-web-tracking 
OUT     perception     gap=0 fam=7 adw=12 PETS/2016/privacy-challenges-in-the-quantified-self-movement-an-eu-perspective 
OUT     tracking       gap=12 fam=14 adw=13 PETS/2017/cross-device-tracking-measurement-and-disclosures 
OUT     blocking       gap=1 fam=5 adw=65 PETS/2017/detecting-anti-ad-blockers-in-the-wild 
OUT     tracking       gap=12 fam=17 adw=37 PETS/2017/on-the-privacy-and-security-of-the-ultrasound-ecosystem 
OUT     blocking       gap=0 fam=6 adw=97 PETS/2018/nomoads-effective-and-efficient-cross-app-mobile-ad-blocking 
OUT     homograph      gap=0 fam=0 adw=48 PETS/2018/undermining-privacy-in-the-aircraft-communications-addressing-and-reporting-syst ADS-B / ACARS
OUT     tracking       gap=1 fam=7 adw=4 PETS/2018/when-the-cookie-meets-the-blockchain-privacy-risks-of-web-payments-via-cryptocur 
OUT     tracking       gap=2 fam=5 adw=12 PETS/2019/4-years-of-eu-cookie-law-results-and-lessons-learned 
IN                     gap=21 fam=136 adw=92 PETS/2019/investigating-sources-of-pii-used-in-facebook-s-targeted-advertising [advertiser|targeting] reach estimates + own campaigns on controlled PII
OUT     perception     gap=21 fam=21 adw=13 PETS/2019/what-if-predicting-individual-users-smart-home-privacy-preferences-and-their-cha 
IN                     gap=9 fam=15 adw=50 PETS/2020/canarytrap-detecting-data-misuse-by-third-party-apps-on-online-social-networks [explanation|targeting] Facebook's advertiser-uploaded-your-info list as ground truth for honeytoken misuse
OUT     tracking       gap=1 fam=7 adw=27 PETS/2020/in-depth-evaluation-of-redirect-tracking-and-link-usage 
IN                     gap=91 fam=148 adw=152 PETS/2020/inferring-tracker-advertiser-relationships-in-the-online-advertising-ecosystem-u [bids,persona|targeting,price] HB bids as the dependent variable
OUT     homograph      gap=5 fam=6 adw=31 PETS/2020/the-price-is-not-right-comparing-privacy-in-free-and-paid-apps 
OUT     tracking       gap=3 fam=4 adw=69 PETS/2020/the-tv-is-smart-and-full-of-trackers-measuring-smart-tv-advertising-and-tracking 
OUT     tracking       gap=12 fam=12 adw=10 PETS/2021/a-calculus-of-tracking-theory-and-practice 
OUT     perception     gap=4 fam=13 adw=41 PETS/2021/awareness-adoption-and-misconceptions-of-web-privacy-tools 
OUT     perception     gap=16 fam=17 adw=19 PETS/2021/did-you-know-this-camera-tracks-your-mood-understanding-privacy-expectations-and 
OUT     perception     gap=36 fam=38 adw=45 PETS/2021/managing-potentially-intrusive-practices-in-the-browser-a-user-centered-perspect 
OUT     homograph      gap=0 fam=0 adw=72 PETS/2021/who-can-find-my-devices-security-and-privacy-of-apple-s-crowd-sourced-bluetooth BLE advertisements
OUT     tracking       gap=3 fam=10 adw=20 PETS/2022/are-iphones-really-better-for-privacy-a-comparative-study-of-ios-and-android-app 
IN                     gap=42 fam=108 adw=211 PETS/2022/atom-ad-network-tomography [persona,crawlads|targeting] isolated personas, ad creatives as features
OUT     perception     gap=6 fam=24 adw=64 PETS/2022/charting-app-developers-journey-through-privacy-regulation-features-in-ad-networ 
OUT     perception     gap=1 fam=7 adw=15 PETS/2022/how-can-and-would-people-protect-from-online-tracking 
OUT     recommendation gap=5 fam=7 adw=16 PETS/2023/a-utility-preserving-obfuscation-approach-for-youtube-recommendations 
OUT     perception     gap=0 fam=5 adw=1 PETS/2023/is-there-a-reverse-privacy-paradox-an-exploratory-analysis-of-gaps-between-priva 
OUT     sandbox        gap=9 fam=10 adw=8 PETS/2023/locality-sensitive-hashing-does-not-guarantee-privacy-attacks-on-googles-floc-an 
OUT     tracking       gap=4 fam=5 adw=15 PETS/2023/privacy-rarely-considered-exploring-considerations-in-the-adoption-of-third-part 
CONTEXT                gap=5 fam=13 adw=15 PETS/2023/surprised-shocked-worried-user-reactions-to-facebook-data-collection-from-third reactions to Off-Facebook Activity
OUT     dsr            gap=3 fam=5 adw=16 PETS/2023/usability-and-enforceability-of-global-privacy-control 
IN                     gap=1 fam=23 adw=65 PETS/2024/client-side-and-server-side-tracking-on-meta-effectiveness-and-accuracy [advertiser|targeting] campaign reach as the oracle for Pixel/CAPI matching
OUT     perception     gap=16 fam=19 adw=28 PETS/2024/cross-contextual-examination-of-older-adults-privacy-concerns-behaviors-and-vuln 
OUT     perception     gap=7 fam=30 adw=17 PETS/2024/crumbling-cookie-categories-deconstructing-common-cookie-categories-to-create-ca 
OUT     perception     gap=7 fam=9 adw=24 PETS/2024/exploring-the-privacy-experiences-of-closeted-users-of-online-dating-services-in 
IN                     gap=16 fam=135 adw=52 PETS/2024/how-does-connecting-online-activities-to-advertising-inferences-impact-privacy-p [explanation|targeting] participants' own labels vs Google Ad Settings: 21% agreement
OUT     sandbox        gap=14 fam=12 adw=110 PETS/2024/interest-disclosing-mechanisms-for-advertising-are-privacy-exposing-not-preservi 
OUT     dsr            gap=5 fam=7 adw=10 PETS/2024/johnny-still-cant-opt-out-assessing-the-iab-ccpa-compliance-framework 
OUT     homograph      gap=0 fam=15 adw=0 PETS/2024/measuring-conditional-anonymity-a-global-study 
IN                     gap=46 fam=78 adw=275 PETS/2024/opted-out-yet-tracked-are-regulations-enough-to-protect-your-privacy [persona,bids|targeting,price] bids after GDPR/CCPA/NAI opt-outs
IN                     gap=12 fam=47 adw=188 PETS/2024/overprofiling-analysis-on-major-internet-players [explanation,donation|targeting] 45,310 interests rated, 1,477 interest-targeted ads
OUT     tracking       gap=4 fam=7 adw=10 PETS/2024/website-data-transparency-in-the-browser 
OUT     perception     gap=0 fam=9 adw=96 PETS/2024/what-do-privacy-advertisements-communicate-to-consumers ads about privacy features
CONTEXT                gap=20 fam=62 adw=101 PETS/2024/what-does-it-mean-to-be-creepy-responses-to-visualizations-of-personal-browsing design probe; interests inferred by the authors
OUT     dsr            gap=2 fam=5 adw=13 PETS/2024/what-to-expect-when-you-re-accessing-an-exploration-of-user-privacy-rights-in-pe 
IN                     gap=16 fam=26 adw=23 PETS/2025/echoes-of-privacy-uncovering-the-profiling-practices-of-voice-assistants [persona,explanation|targeting] persona accounts vs disclosed profiling labels
OUT     perception     gap=8 fam=9 adw=9 PETS/2025/evaluating-a-data-fiduciary-standard-for-privacy-developer-and-end-user-perspect 
OUT     tracking       gap=3 fam=7 adw=9 PETS/2025/intractable-cookie-crumbs-unveiling-the-nexus-of-stateful-banner-interaction-and 
OUT     homograph      gap=0 fam=145 adw=1 PETS/2025/it-s-not-my-data-anymore-exploring-non-users-privacy-perceptions-of-medical-data medical data donation
CONTEXT                gap=21 fam=43 adw=30 PETS/2025/misalignments-and-demographic-differences-in-expected-and-actual-privacy-setting Facebook settings incl. ad profile, as a perception study
IN                     gap=80 fam=133 adw=304 PETS/2025/more-and-scammier-ads-the-perils-of-youtubes-ad-privacy-settings [persona,explanation,crawlads|content,targeting] YouTube pre-roll ads under privacy settings
OUT     perception     gap=7 fam=15 adw=32 PETS/2025/navigating-social-media-privacy-awareness-preferences-and-discoverability 
OUT     homograph      gap=1 fam=1 adw=51 PETS/2025/okay-google-where-s-my-tracker-security-privacy-and-performance-evaluation-of-go BLE advertisements
CONTEXT                gap=117 fam=142 adw=214 PETS/2025/privacy-perceptions-and-behaviors-towards-targeted-advertising-on-social-media-a cross-country survey on targeted ads
OUT     tracking       gap=4 fam=9 adw=7 PETS/2025/privacy-settings-of-third-party-libraries-in-android-apps-a-study-of-facebook-sd 
IN                     gap=7 fam=117 adw=375 PETS/2025/sheeps-clothing-wolfish-intent-automated-detection-and-evaluation-of-problematic [crawlads|content] Acceptable Ads, 4,710 pages, US and Germany
OUT     tracking       gap=3 fam=8 adw=23 PETS/2025/the-effect-of-platform-policies-on-app-privacy-compliance-a-study-of-child-direc 
OUT     tracking       gap=1 fam=5 adw=82 PETS/2025/the-impact-of-default-mobile-sdk-usage-on-privacy-and-data-protection 
OUT     tracking       gap=26 fam=27 adw=42 PETS/2025/tracking-without-borders-studying-the-role-of-webviews-in-bridging-mobile-and-we 
OUT     tracking       gap=5 fam=7 adw=29 PETS/2025/unmasking-the-shadows-a-cross-country-study-of-online-tracking-in-illegal-movie 
OUT     perception     gap=3 fam=6 adw=21 PETS/2025/user-centric-textual-descriptions-of-privacy-enhancing-technologies-for-ad-track 
OUT     tracking       gap=3 fam=5 adw=6 PETS/2025/your-signal-their-data-an-empirical-privacy-analysis-of-wireless-scanning-sdks-i 
IN                     gap=65 fam=195 adw=216 PETS/2026/a-year-under-the-dsa-ad-transparencys-uneven-landscape [explanation,donation,archive|targeting,content] 48,511 explanations vs repositories
IN                     gap=34 fam=71 adw=283 PETS/2026/ad-personalization-and-transparency-in-mobile-ecosystems-a-comparative-analysis [persona,explanation|targeting] controlled app-store accounts
OUT     tracking       gap=4 fam=10 adw=298 PETS/2026/clicking-into-exposure-uncovering-privacy-risks-of-google-click-identifier-in-yo gclid on YouTube ad clicks
OUT     perception     gap=2 fam=5 adw=3 PETS/2026/designing-reflective-thinking-based-contextual-privacy-policy-for-mobile-applica 
OUT     dsr            gap=4 fam=13 adw=15 PETS/2026/exercising-the-ccpa-opt-out-right-on-android-legally-mandated-but-practically-ch 
OUT     perception     gap=4 fam=5 adw=9 PETS/2026/i-don-t-think-it-needs-to-be-political-privacy-experiences-and-concerns-of-femhe 
OUT     tracking       gap=3 fam=5 adw=8 PETS/2026/no-privacy-for-privates-how-military-communities-experience-and-perceive-the-pri 
OUT     blocking       gap=2 fam=10 adw=110 PETS/2026/privacy-vs-profit-the-impact-of-googles-manifest-version-3-mv3-update-on-ad-bloc 
OUT     tracking       gap=7 fam=7 adw=2 PETS/2026/the-empire-strikes-back-at-your-privacy-an-archaeology-of-tracking-on-government 
OUT     tracking       gap=6 fam=11 adw=5 PETS/2026/the-tcf-doesn-t-really-a-a-id-automatic-privacy-analysis-and-legal-compliance-of 
OUT     homograph      gap=0 fam=18 adw=17 USENIX/2011/a-study-of-android-application-security Android intent "retargeting"
OUT     homograph      gap=0 fam=6 adw=1 USENIX/2013/effective-inter-component-communication-mapping-in-android-an-essential-step-tow Android intent "retargeting"
IN                     gap=0 fam=5 adw=45 USENIX/2014/brahmastra-driving-apps-to-test-the-security-of-third-party-components [crawlads|content] in-app ad landing pages and child-inappropriate ads
OUT     fraud          gap=1 fam=10 adw=68 USENIX/2014/understanding-the-dark-side-of-domain-parking parking monetisation chains
IN                     gap=20 fam=36 adw=89 USENIX/2014/xray-enhancing-the-web-s-transparency-with-differential-correlation [persona|targeting] differential correlation over shadow accounts
OUT     tracking       gap=8 fam=8 adw=9 USENIX/2016/internet-jones-and-the-raiders-of-the-lost-trackers-an-archaeological-study-of-w 
OUT     mention        gap=0 fam=1 adw=68 USENIX/2016/investigating-commercial-pay-per-install-and-the-distribution-of-unwanted-softwa 
OUT     mention        gap=0 fam=1 adw=49 USENIX/2016/measuring-pup-prevalence-and-pup-distribution-through-pay-per-install-services 
OUT     homograph      gap=0 fam=0 adw=134 USENIX/2016/protecting-privacy-of-ble-device-users BLE advertisements
IN                     gap=104 fam=120 adw=140 USENIX/2016/tracing-information-flows-between-ad-exchanges-using-retargeted-ads [retarget,persona,crawlads|targeting] retargeted ads as evidence of exchange-to-exchange flows
OUT     tracking       gap=3 fam=5 adw=24 USENIX/2017/a-privacy-analysis-of-cross-device-tracking 
CONTEXT                gap=22 fam=27 adw=88 USENIX/2017/exploring-user-perceptions-of-discrimination-in-online-targeted-advertising scenario survey on discriminatory targeting
IN                     gap=3 fam=314 adw=57 USENIX/2018/unveiling-and-quantifying-facebook-exploitation-of-sensitive-personal-data-for-a [explanation,donation,advertiser|targeting] FDVT ad preferences + own campaigns
OUT     homograph      gap=0 fam=12 adw=0 USENIX/2019/on-the-lack-of-location-privacy-in-crowdsourcing-applications 
OUT     mention        gap=0 fam=0 adw=43 USENIX/2019/policylint-investigating-internal-privacy-policy-contradictions-on-google-play 
OUT     mention        gap=3 fam=3 adw=51 USENIX/2020/actions-speak-louder-than-words-entity-sensitive-privacy-policy-and-data-flow-an 
OUT     perception     gap=16 fam=28 adw=115 USENIX/2020/the-impact-of-ad-blockers-on-product-search-and-purchase-behavior-a-lab-experime lab experiment with contextual ads blocked
IN                     gap=96 fam=141 adw=138 USENIX/2020/what-twitter-knows-characterizing-ad-targeting-practices-user-perceptions-and-ad [donation,explanation|targeting] 231 participants' own Twitter ad files
OUT     fraud          gap=0 fam=0 adw=96 USENIX/2021/adcube-webvr-ad-fraud-and-practical-confinement-of-third-party-ads WebVR ad fraud attacks
OUT     perception     gap=7 fam=14 adw=10 USENIX/2021/are-privacy-dashboards-good-for-end-users-evaluating-user-perceptions-and-reacti 
OUT     homograph      gap=0 fam=1 adw=53 USENIX/2021/disrupting-continuity-of-apples-wireless-ecosystem-security-new-tracking-dos-and BLE advertisements
OUT     tracking       gap=4 fam=7 adw=29 USENIX/2021/share-first-ask-later-or-never-studying-violations-of-gdprs-explicit-consent-in 
IN                     gap=1 fam=185 adw=626 USENIX/2022/an-audit-of-facebooks-political-ad-policy-enforcement [archive|content] Ad Library enforcement audit
OUT     blocking       gap=5 fam=5 adw=32 USENIX/2022/khaleesi-breaker-of-advertising-and-tracking-request-chains 
OUT     mention        gap=0 fam=6 adw=2 USENIX/2022/mistrust-plugins-you-must-a-large-scale-study-of-malicious-plugins-in-wordpress 
OUT     blocking       gap=5 fam=5 adw=28 USENIX/2022/webgraph-capturing-advertising-and-tracking-information-flows-for-robust-blockin 
OUT     blocking       gap=1 fam=1 adw=131 USENIX/2023/autofr-automated-filter-rule-generation-for-adblocking 
OUT     blocking       gap=4 fam=5 adw=17 USENIX/2023/defining-broken-user-experiences-and-remediation-tactics-when-ad-blocking-or-tra 
IN                     gap=16 fam=102 adw=344 USENIX/2023/problematic-advertising-and-its-disparate-exposure-on-facebook [donation|content,targeting] 32,587 panel ads coded
OUT     defence        gap=0 fam=5 adw=156 USENIX/2023/trident-towards-detecting-and-mitigating-web-based-social-engineering-attacks SE-ad navigation detector
OUT     tracking       gap=11 fam=28 adw=45 USENIX/2024/attention-please-an-investigation-of-the-app-tracking-transparency-permission 
OUT     dsr            gap=2 fam=8 adw=4 USENIX/2024/data-subjects-reactions-to-exercising-their-right-of-access 
OUT     homograph      gap=13 fam=0 adw=0 USENIX/2024/false-claims-against-model-ownership-resolution 
OUT     sandbox        gap=44 fam=80 adw=143 USENIX/2024/fledging-will-continue-until-privacy-improves-empirical-analysis-of-googles-priv Protected Audience adoption and attacks
OUT     perception     gap=1 fam=5 adw=11 USENIX/2024/im-not-convinced-that-they-dont-collect-more-than-is-necessary-user-controlled-d 
OUT     tracking       gap=0 fam=13 adw=62 USENIX/2024/navigating-the-privacy-compliance-maze-understanding-risks-with-privacy-configur 
OUT     homograph      gap=0 fam=0 adw=48 USENIX/2024/security-and-privacy-analysis-of-samsungs-crowd-sourced-bluetooth-location-track BLE advertisements
OUT     perception     gap=2 fam=7 adw=4 USENIX/2025/addressing-the-address-books-interdependent-privacy-issues 
OUT     sponsorship    gap=0 fam=1 adw=160 USENIX/2025/as-advertised-understanding-the-impact-of-influencer-vpn-ads 
OUT     homograph      gap=0 fam=12 adw=0 USENIX/2025/lemix-enabling-testing-of-embedded-applications-as-linux-applications 
OUT     mention        gap=0 fam=11 adw=44 USENIX/2025/shadowed-realities-an-investigation-of-ui-attacks-in-webxr 
OUT     homograph      gap=0 fam=0 adw=63 USENIX/2026/privacyshield-relaying-ble-beacons-to-counter-unsolicited-tracking BLE advertisements
OUT     homograph      gap=0 fam=0 adw=42 USENIX/2026/security-and-privacy-analysis-of-tiles-location-tracking-protocol BLE advertisements
IN                     gap=0 fam=2 adw=98 USENIX/2026/when-fun-turns-toxic-a-first-look-at-aggressive-advertising-in-mini-games [crawlads|content] aggressive ad behaviour in mini-games
IN                     gap=3 fam=15 adw=24 WWW/2010/analyzing-content-level-properties-of-the-web-adversphere [crawlads|targeting] ads from 282 PlanetLab vantages; location and behavioural targeting
OUT     perception     gap=0 fam=9 adw=171 WWW/2013/the-cost-of-annoying-ads annoyance of ad formats in a lab task; not about targeting (was CONTEXT until the generic review, 2026-09-23)
OUT     mechanism      gap=0 fam=26 adw=35 WWW/2013/towards-a-robust-modeling-of-temporal-interest-change-patterns-for-behavioral-ta behavioural-targeting model on server logs
OUT     perception     gap=8 fam=15 adw=11 WWW/2013/your-browsing-behavior-for-a-big-mac-economics-of-personal-information-online PII valuation via reverse auctions
IN                     gap=17 fam=28 adw=227 WWW/2014/adscape-harvesting-and-analyzing-online-display-ads [persona,crawlads|targeting] 340 personas, 875,209 impressions
OUT     mechanism      gap=1 fam=5 adw=1 WWW/2014/from-devices-to-people-attribution-of-search-activity-in-multi-user-settings search-log attribution
OUT     fraud          gap=0 fam=0 adw=89 WWW/2015/crowd-fraud-detection-in-internet-advertising 
OUT     injection      gap=0 fam=65 adw=106 WWW/2015/understanding-malvertising-through-ad-injecting-browser-extensions 
OUT     tracking       gap=5 fam=5 adw=10 WWW/2016/an-empirical-study-of-web-cookies 
OUT     mention        gap=0 fam=7 adw=15 WWW/2017/j-force-forced-execution-on-javascript 
OUT     mention        gap=0 fam=6 adw=1 WWW/2017/security-implications-of-redirection-trail-in-popular-websites-worldwide 
IN                     gap=27 fam=79 adw=201 WWW/2018/adbudgetkiller-online-advertising-budget-draining-attack [retarget|targeting] inferred retargeting strategies; attack paper
IN                     gap=0 fam=3 adw=59 WWW/2018/exposing-search-and-advertisement-abuse-tactics-and-infrastructure-of-technical [crawlads|content] search ads collected daily across five engines
IN                     gap=58 fam=84 adw=139 WWW/2018/the-cost-of-digital-advertisement-comparing-user-and-advertiser-views [rtbprice|price] passive RTB prices, 1,270 users
OUT     perception     gap=10 fam=10 adw=22 WWW/2018/your-secrets-are-safe-how-browsers-explanations-impact-misconceptions-about-priv 
IN                     gap=6 fam=30 adw=36 WWW/2019/auditing-offline-data-brokers-via-facebooks-advertising-platform [advertiser,explanation|targeting] broker attributes via the ad platform
OUT     tracking       gap=6 fam=7 adw=14 WWW/2019/before-and-after-gdpr-the-changes-in-third-party-presence-at-public-and-private 
OUT     tracking       gap=6 fam=7 adw=37 WWW/2019/cookie-synchronization-everything-you-always-wanted-to-know-but-were-afraid-to-a 
OUT     mechanism      gap=4 fam=11 adw=33 WWW/2019/dealing-with-interdependencies-and-uncertainty-in-multi-channel-advertising-camp 
OUT     recommendation gap=2 fam=5 adw=4 WWW/2019/measuring-political-personalization-of-google-news-search 
OUT     mechanism      gap=1 fam=8 adw=7 WWW/2019/multiple-treatment-effect-estimation-using-deep-generative-model-with-task-embed 
OUT     fraud          gap=74 fam=81 adw=38 WWW/2019/nameles-an-intelligent-system-for-real-time-filtering-of-invalid-ad-traffic 
OUT     homograph      gap=0 fam=20 adw=0 WWW/2019/quality-effects-on-user-preferences-and-behaviorsin-mobile-news-streaming 
OUT     mechanism      gap=0 fam=0 adw=43 WWW/2019/quality-sensitive-training-social-advertisement-generation-by-leveraging-user-cl 
IN                     gap=1 fam=62 adw=175 WWW/2019/revisiting-mobile-advertising-threats-with-madlife [crawlads|content] 84K in-app ads and landing pages
OUT     tracking       gap=2 fam=5 adw=16 WWW/2019/the-chain-of-implicit-trust-an-analysis-of-the-web-third-party-resources-loading 
OUT     mention        gap=5 fam=5 adw=2 WWW/2020/apophanies-or-epiphanies-how-crawlers-impact-our-understanding-of-the-web 
OUT     tracking       gap=8 fam=12 adw=14 WWW/2020/beyond-the-front-page-measuring-third-party-dynamics-in-the-field 
OUT     mention        gap=0 fam=0 adw=61 WWW/2020/deconstructing-googles-web-light-service 
IN                     gap=7 fam=123 adw=305 WWW/2020/facebook-ads-monitor-an-independent-auditing-system-for-political-ads-on-faceboo [donation,archive|content] volunteer-collected Facebook ads vs Ad Library
OUT     blocking       gap=0 fam=0 adw=64 WWW/2020/filter-list-generation-for-underserved-regions 
OUT     mention        gap=8 fam=8 adw=5 WWW/2020/finding-a-choice-in-a-haystack-automatic-extraction-of-opt-out-statements-from-p 
IN                     gap=1 fam=8 adw=79 WWW/2020/maddroid-characterizing-and-detecting-devious-ad-contents-for-android-apps [crawlads|content] devious in-app ad contents
IN                     gap=13 fam=23 adw=38 WWW/2020/stop-tracking-me-bro-differential-tracking-of-user-demographics-on-hyper-partisa [persona,rtbprice|price,targeting] RTB prices per demographic persona
OUT     tracking       gap=4 fam=5 adw=12 WWW/2021/user-tracking-in-the-post-cookie-era-how-websites-bypass-gdpr-consent-to-track-u 
OUT     tracking       gap=4 fam=5 adw=4 WWW/2021/websocket-adoption-and-the-landscape-of-the-real-time-web 
IN                     gap=7 fam=20 adw=185 WWW/2022/conspiracy-brokers-understanding-the-monetization-of-youtube-conspiracy-theories [crawlads|content] YouTube ads on conspiracy vs mainstream videos
OUT     blocking       gap=1 fam=1 adw=64 WWW/2022/investigating-advertisers-domain-changing-behaviors-and-their-impacts-on-ad-bloc 
OUT     mechanism      gap=8 fam=8 adw=24 WWW/2023/ad-auction-design-with-coupon-dependent-conversion-rate-in-the-auto-bidding-worl 
IN                     gap=0 fam=36 adw=140 WWW/2023/are-mobile-advertisements-in-compliance-with-apps-age-group [crawlads|content] 11,270 in-app ad views
OUT     mechanism      gap=29 fam=41 adw=62 WWW/2023/fairness-aware-guaranteed-display-advertising-allocation-under-traffic-cost-cons 
IN                     gap=0 fam=11 adw=197 WWW/2023/online-advertising-in-ukraine-and-russia-during-the-2022-russian-invasion [crawlads|content] ads on 500 news sites from three proxy locations
IN                     gap=4 fam=50 adw=281 WWW/2023/propaganda-politica-pagada-exploring-u-s-political-facebook-ads-en-espanol [archive|content] Ad Library API
IN                     gap=4 fam=19 adw=98 WWW/2023/the-thin-ideology-of-populist-advertising-on-facebook-during-the-2019-eu-electio [archive|content] Meta Ad Library
IN                     gap=3 fam=5 adw=127 WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines [crawlads|content] served ads on fake-news sites; shared with privacy:ads_txt
OUT     tracking       gap=6 fam=11 adw=14 WWW/2024/a-study-of-gdpr-compliance-under-the-transparency-and-consent-framework 
OUT     blocking       gap=1 fam=5 adw=53 WWW/2024/adflush-a-real-world-deployable-machine-learning-solution-for-effective-advertis 
IN                     gap=3 fam=3 adw=202 WWW/2025/assessing-compliance-in-digital-advertising-a-deep-dive-into-acceptable-ads-stan [crawlads|content] Acceptable Ads compliance on 10,000 domains
IN                     gap=1 fam=2 adw=126 WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation [crawlads|content] served ads and brand adjacency; shared with privacy:ads_txt
IN                     gap=21 fam=39 adw=43 WWW/2025/the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin [persona,bids|targeting,price] FPTrace: bids under fingerprint changes
OUT     supplychain    gap=8 fam=14 adw=178 WWW/2025/welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e 
OUT     homograph      gap=2 fam=10 adw=0 WWW/2026/bowling-with-chatgpt-on-the-evolving-user-interactions-with-conversational-ai-sy donated chat logs
OUT     dsr            gap=12 fam=20 adw=42 WWW/2026/does-ad-free-mean-less-data-collection-an-empirical-study-of-platform-data-pract 
IN                     gap=3 fam=19 adw=39 WWW/2026/when-ads-become-profiles-uncovering-the-invisible-risk-of-web-advertising-at-sca [donation|targeting] Australian Ad Observatory exposures re-analysed with Gemini

Figure and quote verification, unedited

node scripts/verify_advertising_figures.mjs > scripts/verify_advertising_figures-output.txt. The font warnings pypdf prints go to stderr and are not included.

verify_advertising_figures-output.txt
control ok (mutated needle not located)  2017/IMC/if-you-are-not  "we found encrypted prices to be ~1.9x higher"
control ok (mutated needle not located)  2026/PETS/a-year-under-the-dsa  "98.1% of all explanation texts cite only the main targeting form"
control ok (mutated needle not located)  2021/IMC/polls-clickbait  "we collected 1,402,245 ads (196,751 unique ads) from 6 locations"
OK   paper.cols.txt 2016/USENIX/tracing-information-flows  | Bashir 2016: 5,102 retargets of 31,850 labelled images
       "labeled 31,850 images, of which 7,563 are behavioral targeted ads and 5,102 are retargeted ads"
OK   paper.cols.txt 2016/USENIX/tracing-information-flows  | Bashir 2016: 35,448 chains
       "including 35,448 chains associated with 5,102 unique retargeted ads"
OK   paper.cols.txt 2016/USENIX/tracing-information-flows  | Bashir 2016: cookie-matching heuristics miss 31%
       "are unable to identify 31% of ad exchange pairs that share data"
OK   paper.cols.txt 2022/CCS/cart-ology  | Cart-ology: ~15 h latency
       "entanglement becomes visible roughly 15 hours later"
OK   paper.cols.txt 2018/WWW/adbudgetkiller  | AdBudgetKiller: 254 of 291
       "we successfully revealed targeting strategies from 254 out of 291 websites (about 87%)"
OK   paper.cols.txt 2022/IMC/what-factors  | Zeng 2022: 18.3% self-reported prior visit
       "Participants responded "Yes" for 18.3% of ads"
OK   paper.cols.txt 2022/IMC/what-factors  | Zeng 2022: +$1.07 CPM
       "with an estimated increase of $1.07 for ads with"
OK   paper.cols.txt 2014/WWW/adscape  | Adscape: profile contamination
       "60% of profiles gained more than 9 new interests after 50 visits"
OK   paper.cols.txt 2014/WWW/adscape  | Adscape: impressions vs distinct
       "This data collection produced 875,209 impressions, and 175,495 distinct ads"
OK   paper.cols.txt 2010/IMC/challenges-in  | Guha 2010: ~10 reloads to saturate
       "The knee of the graph (around 10 reloads)"
OK   paper.cols.txt 2010/IMC/challenges-in  | Guha 2010: churn
       "1-4% per minute depending on the search keyword"
OK   paper.cols.txt 2010/IMC/challenges-in  | Guha 2010: dedup error direction
       "False negatives have the effect of over-counting the number of unique ads"
OK   paper.cols.txt 2010/IMC/challenges-in  | Guha 2010: Table 2 cells
       "DisplayURL 7 13 12 10 Title + DisplayURL 0 45 0 50 Title + Summary 0 68 0 69"
OK   paper.cols.txt 2022/PETS/atom  | ATOM: plateau at 40 sites per interest group
       "until the size of our interest groups reached 40 websites"
OK   paper.cols.txt 2025/PETS/echoes  | Echoes: Google 18.0 days
       "it took 18.0 ± 4.1 days for all profiling labels to appear"
OK   paper.cols.txt 2025/PETS/echoes  | Echoes: Alexa 7.7 days
       "it took Alexa 7.7 ± 1.3 days to generate profiling labels"
OK   paper.cols.txt 2019/PETS/investigating-sources  | Venkatadri 2019: 2FA number, 22 days
       "the phone number became targetable after 22 days"
OK   paper.cols.txt 2019/PETS/investigating-sources  | Venkatadri 2019: login alerts, 17 days
       "became targetable after 17 days"
OK   pypdf          2019/PETS/investigating-sources  | Venkatadri 2019: reach noise
       "the noise is uniformly distributed between 0 and 20"
OK   paper.cols.txt 2017/IMC/if-you-are-not  | Papadopoulos 2017: 1.7x
       "we found encrypted prices to be ~1.7x higher"
OK   paper.cols.txt 2017/IMC/if-you-are-not  | Papadopoulos 2017: median user ~25 CPM
       "the median user costs ~25 CPM, and up to 73% of the users cost < 100 CPM"
OK   paper.cols.txt 2018/WWW/the-cost-of-digital  | Papadopoulos 2018
       "The median advertiser paid 0.00071 Euro per delivered ad, but the median user paid 0.0022 Euro per ad in downloaded bytes"
OK   paper.cols.txt 2020/WWW/stop-tracking  | Agarwal 2020
       "The median price for W L is $0.561 CPM, and the median price for W R is $0.667 CPM"
OK   paper.cols.txt 2020/PETS/inferring-tracker  | Cook 2020: zero bids
       "zero bids making up 22% of all bids"
OK   paper.cols.txt 2023/IMC/tracking-profiling  | Iqbal 2023: 30x
       "go as much as 30x and 27x higher than the mean of vanilla persona"
OK   paper.cols.txt 2015/PETS/automated-experiments  | AdFisher: 1852 vs 318
       "Google showed the ads 1852 times to the male group but just 318 times to the female group"
OK   paper.cols.txt 2015/PETS/automated-experiments  | AdFisher: rehab ads
       "The experimental group saw these ads a total of 3309 times (16% of the ads); the control group never saw any of them"
OK   paper.cols.txt 2023/CCS/marketing-to-children  | Medjkoune 2023: 25% profiling
       "25% of ads collected on children-focused videos had ad explanations suggesting they have been targeted based on profiling"
OK   paper.cols.txt 2023/CCS/marketing-to-children  | Medjkoune 2023: 3,221 ads
       "Across the six profiles, we collected 3,221 ads"
OK   paper.cols.txt 2023/CCS/marketing-to-children  | Medjkoune 2023: 76% non-personalised explanation
       "76% of ads in the Children YTB Kids List"
OK   paper.cols.txt 2026/PETS/a-year-under-the-dsa  | Ben Zaamia 2026: 98.9% (YouTube)
       "98.9% of all explanation texts cite only the main targeting form"
OK   paper.cols.txt 2026/PETS/a-year-under-the-dsa  | Ben Zaamia 2026: 48,511
       "Using 48,511 user-facing "Why am I seeing this ad?" (WAIST) notices"
OK   paper.cols.txt 2024/PETS/overprofiling  | Overprofiling: <50% relevant
       "less than 50% of the assigned interests are relevant"
OK   paper.cols.txt 2019/NDSS/quantity-vs-quality  | Bashir 2019: 27%
       "Participants were strongly interested in only 27% of interests in their profiles"
OK   paper.cols.txt 2024/PETS/how-does-connecting  | Ad Settings agreement 21%
       "only 21% of assigned interests occurred in Ad Settings"
OK   paper.cols.txt 2025/PETS/more-and-scammier  | Mai 2025: 1.30x
       "disabling ad personalization can lead to the user being shown as much as 1.30 times more pre-roll ads"
OK   paper.cols.txt 2025/PETS/more-and-scammier  | Mai 2025: impressions vs unique
       "we manually annotated 10,628 unique pre-roll ads (corresponding to 38,851 impressions)"
OK   paper.cols.txt 2020/USENIX/what-twitter-knows  | Wei 2020: 240,651 ads
       "Our 231 participants' data files collectively contained 240,651 ads that had been targeted with at least one targeting type"
OK   paper.cols.txt 2020/USENIX/what-twitter-knows  | Wei 2020: 30 types
       "we observed 30 different targeting types, with 45,209 unique instances of those targeting types"
OK   paper.cols.txt 2019/NDSS/measuring-the-facebook  | Andreou 2019: 17% lookalike (sic "substancial")
       "A substancial fraction (17%) of ads are targeted using Lookalike audiences"
OK   paper.cols.txt 2019/NDSS/measuring-the-facebook  | Andreou 2019: 12% retargeting
       "A non-trivial fraction (12%) of ads are part of Retargeting"
OK   paper.cols.txt 2019/NDSS/measuring-the-facebook  | Andreou 2019: 622 users
       "we analyze data from 622 real-world Facebook users"
OK   paper.cols.txt 2023/IEEE-SP/collaborative-ad  | Gkiouzepi 2023: 65%
       "if we only look at experiments where our ad has been received by ten or more monitored users, the accuracy increases to 65%"
OK   paper.cols.txt 2023/IEEE-SP/when-and-why  | CONTEXT: when people want explanations
       "participants wanted ad targeting explanations for approximately 30% (1,281 out of 4,251) of the ads"
OK   paper.cols.txt 2022/IMC/measurement-and-analysis-of-implied  | Kaplan 2022
       "images of Black people are delivered more to Black Facebook users (73.8%) when compared to images of white people (56.3%)"
OK   paper.cols.txt 2021/IMC/unique-on-facebook  | Gonzalez-Cabanas 2021: 9 of 21
       "9 out of the 21 campaigns successfully"
OK   paper.cols.txt 2024/PETS/client-side-and-server  | CAPI 34-51%
       "The Conversions API matched between 34% to 51% of website visitors to user profiles"
OK   pypdf          2015/CCS/sunlight  | Sunlight: impressions vs unique (line-break hyphen folded)
       "we collected 24,961,698 impressions created collectively by 19,543 unique ads"
OK   paper.cols.txt 2021/IMC/polls-clickbait  | Zeng 2021: 1.4M vs 169,751
       "we collected 1,402,245 ads (169,751 unique ads) from 6 locations"
OK   paper.cols.txt 2023/WWW/online-advertising-in-ukraine  | Ukraine: 1,197 unique, 4,319 times (sic "confict")
       "35 confict-related clusters with 1,197 unique ads, appearing 4,319 times"
OK   paper.cols.txt 2023/WWW/online-advertising-in-ukraine  | Ukraine: average hash (sic "frst")
       "We frst deduplicated ad images based on the average image hash"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: ad detection 7.5% non-ads
       "misidentified non-ads in 7.5%"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: 36% / 27% of pages
       "An average of 36% of the pages contained one or more ads, and we detected targeted ads on 27% of the pages we crawled"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: 40,281 disclosure pages
       "Our crawler captured a total of 40,281 ad disclosure pages"
OK   paper.cols.txt 2014/IMC/the-dark-alleys  | Zarras 2014: ~1%
       "about 1% of all the collected advertisements show a malicious behavior"
OK   paper.cols.txt 2022/WWW/conspiracy-brokers  | Conspiracy brokers
       "We collect 184,218 ad impressions from 6,347 unique advertisers"
OK   paper.cols.txt 2019/IMC/what-you-see-is-not  | SEACMA: perceptual hash
       "We then compute a perceptual hash"
OK   paper.cols.txt 2019/IMC/what-you-see-is-not  | Vadrevu 2019: ads tailored to OS/browser
       "many ads, including SEACMA ads, were tailored to the kind of operating system or browser being used"
OK   paper.cols.txt 2019/IMC/what-you-see-is-not  | Vadrevu 2019: ad networks treat datacentre/Tor IPs differently (1/2)
       "Tor exit nodes, and Amazon AWS IP ranges"
OK   pypdf          2019/IMC/what-you-see-is-not  | Vadrevu 2019: ... never serve SEACMA ads to them (2/2)
       "seemed to never serve SEACMA ads"
OK   paper.cols.txt 2025/PETS/more-and-scammier  | Mai 2025: 12 h between sequences
       "We waited at least 12 hours to avoid bot detection"
OK   paper.cols.txt 2015/PETS/automated-experiments  | AdFisher: settings page unchanged
       "visiting webpages associated with substance abuse changed the ads shown but not the settings page"
OK   paper.cols.txt 2024/PETS/opted-out  | Liu 2024: higher bids from advertisers not leaked to
       "did not explicitly leak data. It can be seen that all personas, with the exception of Shopping for CCPA, receive higher bids on average than the control persona"
OK   paper.cols.txt 2025/WWW/the-first-early  | Liu 2025: fingerprint changes move bids
       "The bid value dataset exhibits notable differences in trends, mean values, median values, and maximum values after changing browser fingerprints"
OK   paper.cols.txt 2025/IMC/from-voice-to-ads  | Le 2025: 42 puppets
       "using 42 puppets, Alexa's suggested first-party features for training"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: 85% correct
       "The crawler correctly detected ads in 85%"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: 73% of disclosed ads targeted (table row)
       "Avg./Sum 70,303 36% 27% 73%"
OK   paper.cols.txt 2016/IMC/recommended-for-you  | Bashir 2016b: no clicks
       "and we do not click on advertiser URLs"
OK   paper.cols.txt 2016/IMC/recommended-for-you  | Bashir 2016b: 94%
       "94% only appear on a single publisher"
OK   paper.cols.txt 2016/IMC/recommended-for-you  | Bashir 2016b: ... drop to 85% (1/2, spliced)
       "we observe that the percentage of unique ads drop to"
OK   paper.cols.txt 2016/IMC/recommended-for-you  | Bashir 2016b: 85% (2/2, spliced)
       "Rather, we extract the 85%."
OK   paper.cols.txt 2022/IMC/what-factors  | Zeng 2022: 286 participants
       "In total, 286 participants successfully completed data collection for our study"
OK   paper.cols.txt 2016/USENIX/tracing-information-flows  | Bashir 2016: 738 e-commerce sites
       "In total, the personas cover 738 unique websites"
OK   paper.cols.txt 2014/WWW/adscape  | Adscape: 180 sites, 340 profiles
       "These pairs contain 180 distinct websites and 340 distinct profiles"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: 2,004 sites
       "Our final list contained 2,004 websites in 48 distinct languages"
OK   paper.cols.txt 2026/WWW/when-ads-become  | Chen 2026: data source
       "longitudinal dataset sourced from the Australian Ad Observatory"
OK   paper.cols.txt 2026/PETS/a-year-under-the-dsa  | Ben Zaamia 2026: data source
       "ads collected through Who Targets Me (WTM)"
OK   paper.cols.txt 2016/USENIX/tracing-information-flows  | Bashir 2016: 150 publishers
       "We manually select 150 publishers"
OK   paper.cols.txt 2024/IEEE-SP/targeted-and-troublesome  | Moti 2024: blank or empty 7.5%
       "or empty ads in 7.5%"
OK   paper.cols.txt 2026/WWW/when-ads-become  | Chen 2026: plain longitudinal model
       "Gemini 2.0 Flash 74.88"
OK   paper.cols.txt 2021/IMC/polls-clickbait  | Zeng 2021: MinHash-LSH dedup
       "to identify ads with a Jaccard similarity > 0.5"
OK   paper.cols.txt 2010/IMC/challenges-in  | Guha 2010: Table 2 first row (both datasets)
       "Approach % FP % FN % FP % FN RedirURL 0 38 1 52"
OK   paper.cols.txt 2023/CCS/marketing-to-children  | Medjkoune 2023: seven campaigns
       "we created seven real-world ad campaigns"
OK   paper.cols.txt 2019/NDSS/quantity-vs-quality  | Bashir 2019: BlueKai not rated
       "we omit analysis of BlueKai from this section"
OK   pypdf          2020/PETS/inferring-tracker  | Cook 2020: leans to intent
       "zero bids are unlikely to be caused as a result of configuration errors"
OK   pypdf          2015/PETS/automated-experiments  | Datta 2015: credits earlier study
       "We are not the first to study how Google uses information"
OK   paper.cols.txt 2022/IMC/what-factors  | Zeng 2022: 7,117 rendered winners
       "Only in 7,117 ads of these ads was the winner actually rendered on the page"
OK   paper.cols.txt 2019/NDSS/measuring-the-facebook  | Andreou 2019: retargeting definition
       "ads are part of Retargeting, meaning an advertiser is trying to reach a user who had previously interacted with them"
OK   paper.cols.txt 2025/PETS/sheeps-clothing  | Roongta 2025: GPT-4o-mini kappa 0.74
       "OpenAI's GPT-4o-mini attains an inter-annotator agreement of 0.74 across all categories"
OK   paper.cols.txt 2025/IMC/from-voice-to-ads  | Le 2025: GPT-4o ad extraction
       "We then employed the GPT-4o model [79] to extract ads from the transcripts"
OK   paper.cols.txt 2026/WWW/when-ads-become  | When ads become profiles: random-control row
       "Random Control 58.80 58.50"
OK   paper.cols.txt 2026/WWW/when-ads-become  | When ads become profiles: 59.13%
       "the model achieves 59.13% accuracy for Gender"
OK   paper.cols.txt 2026/WWW/when-ads-become  | When ads become profiles: 76.38%
       "Gemini† achieves 76.38% accuracy"
OK   paper.cols.txt 2026/WWW/when-ads-become  | When ads become profiles: longitudinal random control
       "Random Control 70.39 70.38"
OK   paper.cols.txt 2024/IMC/beyond-the-guidelines  | Bouchaud 2024: GPT-3.5 as a coder
       "once through the GPT-3.5 Instruct model"
OK   pypdf(ext)     out/adv/ext/andreou2018.pdf  | Andreou 2018 (NDSS, outside the extraction)
       "In all explanations provided by Facebook across all monitored users, only one attribute was ever shown, while all users had all attributes"
OK   pypdf(ext)     out/adv/ext/andreou2018.pdf  | Andreou 2018: 28 three-attribute campaigns
       "we conducted 28 controlled experiments that target three attributes"
OK   pypdf(ext)     out/adv/ext/andreou2018.pdf  | Andreou 2018: 51 two-attribute campaigns
       "and 51 that target two attributes"
 
98 needles; located by: paper.cols.txt 90, pypdf 5, pypdf(ext) 3; weak (<20 chars): 0; not located: 0
 
=== EXTERNAL FIGURES (non-corpus; primary source on the provenance page) ===
Regulation (EU) 2022/2065 (Digital Services Act), Article 26(1)(d)
=== NUMBERS WRITTEN WITH A THOUSANDS SEPARATOR THAT THE GUARD SPLITS ===
24,961,698 (Sunlight impressions; needle above)
=== TEMPLATE LITERALS (the illustrative "What to Report" sentence; not data) ===
Chromium 154; ten personas (five treatment, five control); 40 sites; seven days; 50 publishers; 93% precision on 200 hand-checked frames; Hamming <= 4; 12,408 impressions; 2,917 unique creatives

External checks, unedited

bash scripts/external_checks_advertising.sh > scripts/external_checks_advertising-output.txt 2>&1

external_checks_advertising-output.txt
== 1. Non-corpus paper quoted on the page ==
OK   Andreou et al. NDSS 2018 PDF fetched (1869513 bytes; sha256 45b8f8e906b9174b); needles checked by verify_advertising_figures.mjs
OK   Crossref 10.14722/ndss.2018.23191: Investigating Ad Transparency Mechanisms in Social Media: A Case Study of Facebook's Explanations | Andreou, Venkatadri, Goga, Gummadi, Loiseau, Mislove
OK   Crossref 10.14722/ndss.2019.23280: Measuring the Facebook Advertising Ecosystem | Andreou, Silva, Benevenuto, Goga, Loiseau, Mislove
OK   Crossref 10.14722/ndss.2014.23270: Selling off Privacy at Auction | Olejnik, Tran, Castelluccia
OK   Crossref 10.56553/popets-2024-0055: How Does Connecting Online Activities to Advertising Inferences Impact Privacy Perceptions? | Farke, Balash, Golla, Aviv
OK   Crossref 10.56553/popets-2025-0057: Privacy Perceptions and Behaviors Towards Targeted Advertising on Social Media: A Cross-Country Study on the Effect of Culture and Religion | Kaushik, Sharma, Yu, Ali, Knijnenburg, Wang, Zou
 
== 2. Platform explanation and control surfaces ==
OK   [200] Google My Ad Center launch (2022-10-20) — "If you're not signed into Google, you can still control your preferences in Ad Settings"
OK   [200] Google Ads Transparency Center launch (2023-03-29) — "Ads Transparency Center"
OK   [200] Meta: sensitive detailed-targeting removal (Wayback of Business Help 458835214668072) — "Starting Jan 19, 2022, we're removing some detailed targeting options"
OK   [200] Meta: EU less personalized ads (2024-11-12) — "we'll show ads based only on context"
OK   [200] Meta: EU political/electoral/social-issue ads ended (2025-10-06) — "political, electoral and social issue adverts are no longer able to be delivered in the EU"
 
== 3. Law and framework text ==
OK   [200] DSA Art. 26(1)(d) — "meaningful information directly and easily accessible from the advertisement about the main parameters used to determine the recipient to whom the advertisement is presented"
OK   [200] DSA Art. 26(3) — "shall not present advertisements to recipients of the service based on profiling as defined in Article 4, point (4), of Regulation (EU) 2016/679 using special categories of personal data"
OK   [200] DSA Art. 28(2) — "when they are aware with reasonable certainty that the recipient of the service is a minor"
OK   [200] DSA application dates (Commission) — "The DSA's general date of applicability is 17 February 2024"
OK   [200] TCF v2.2 (2023-05-16), LI removed for purposes 3-6 — "Vendors will only be able to select consent as an acceptable legal basis for purposes 3, 4, 5 and 6"
OK   [200] TCF v2.3 (2025-06-19) — "was released on 19th June 2025"
OK   [200] TCF v2.3 transition end — "28th February 2026"
OK   TCF v2.4: published 2026-07-23, web deadline 2026-10-23 (IAB Europe notice of 2026-07-16)
OK   [200] Meta EU ad choice relaunched under the DMA (Commission, 2025-12-08) — "Meta will present these new options to users in the EU in January 2026"
 
== 4. Prices and browsers ==
OK   [200] Google Ad Manager unified first-price auctions (2019-09-05) — "we're transitioning to unified first price auctions for Google Ad Manager"
OK   [200] Google Authorized Buyers: winning price is encrypted — "it returns the winning price in an encrypted form"
OK   [200] Chrome keeps third-party cookies (2025-04-22) — "will not be rolling out a new standalone prompt for third-party cookies"
OK   [200] Privacy Sandbox retirement (2025-10-17) — "Protected Audience (Chrome and Android)"
OK   [200] Safari full third-party cookie blocking (2020-03-24) — "Cookies for cross-site resources are now blocked by default across the board"
OK   [200] Firefox Total Cookie Protection default (2022-06-14, archived original) — "Firefox is rolling out Total Cookie Protection by default to all Firefox users worldwide"
OK   chromestatus 6552486106234880: Deprecate and Remove Protected Audience | Proposed | desktop milestone 153
OK   Chrome stable (Linux): milestone 154 154.0.8037.57
OK   [200] Meta disables NYU Ad Observatory accounts (2021-08-04) — "we disabled the accounts, apps, Pages and platform access associated with NYU's Ad Observatory Project"
OK   [200] Ad Observer still distributed — "It copies the ads you see on Facebook and YouTube"
OK   [200] Australian Ad Observatory status — "Active"
OK   [200] Who Targets Me extension — "Browser Extension"
OK   Crossref 10.1080/00913367.2017.1339368: Online Behavioral Advertising: A Literature Review and Research Agenda | Journal of Advertising
OK   Crossref 10.5117/ccr2024.2.6.angu: Enabling Online Advertising Transparency through Data Donation Methods | Computational Communication Research
 
== 5. Tools and datasets named on the page (HTTP status after redirects; GitHub archived / pushed_at) ==
OK   github.com/tadatitam/info-flow-experiments -> dattaamit/info-flow-experiments archived=False pushed_at=2021-02-18 license=GPL-3.0
OK   github.com/UWCSESecurityLab/adscraper -> UWCSESecurityLab/adscraper archived=False pushed_at=2025-06-05 license=MIT
OK   github.com/CybersecurityForDemocracy/youtube-ad-settings -> CybersecurityForDemocracy/youtube-ad-settings archived=False pushed_at=2025-06-26 license=CC-BY-4.0
OK   github.com/Racro/AcceptableAds_PETS -> Racro/AcceptableAds_PETS archived=False pushed_at=2025-07-01 license=GPL-3.0
OK   github.com/seemoo-lab/appstore-ad-tools -> seemoo-lab/appstore-ad-tools archived=False pushed_at=2026-06-11 license=GPL-3.0
OK   github.com/phani-vadrevu/seacma -> phani-vadrevu/seacma archived=False pushed_at=2019-10-21 license=None
OK   github.com/NEU-SNS/voice-assistants-pets25 -> NEU-SNS/voice-assistants-pets25 archived=False pushed_at=2025-02-25 license=Apache-2.0
OK   github.com/Breezelled/when-ads-become-profiles -> cruiseresearchgroup/when-ads-become-profiles archived=False pushed_at=2025-12-04 license=MIT
DEAD github.com/Camq543/YoutubeAds — expected: 404 on 2026-09-23; Conspiracy Brokers' code link
OK   github.com/fcaravaca/OverprofilingPETS -> fcaravaca/OverprofilingPETS archived=False pushed_at=2024-06-14 license=None
OK   github.com/MadDroid-2020/MadDroid-WWW -> MadDroid-2020/MadDroid-WWW archived=False pushed_at=2020-04-17 license=None
OK   github.com/AppPromotionAdsResearch/AdGPE -> AppPromotionAdsResearch/AdGPE archived=False pushed_at=2025-01-22 license=None
OK   github.com/ahsan238/Ad-Compliance -> ahsan238/Ad-Compliance archived=False pushed_at=2025-04-29 license=MIT
OK   github.com/targeted-and-troublesome/targeted-and-troublesome-crawler -> targeted-and-troublesome/targeted-and-troublesome-crawler archived=False pushed_at=2025-02-04 license=NOASSERTION
DEAD github.com/mipach/HBDetector — expected: 404 since at least 2026-09-02 (privacy:ads_txt)
DEAD github.com/bitzj2015/Harpo-NDSS22 — expected: 404 since at least 2026-09-02 (privacy:ads_txt)
OK   [200 https://systems.cs.columbia.edu/sunlight/] https://columbia.github.io/sunlight/
OK   [200 https://xray.cs.columbia.edu/] https://xray.cs.columbia.edu/
OK   [200 https://privsec-research.github.io/alexaechos/] https://privsec-research.github.io/alexaechos
OK   [200 https://personalization.ccs.neu.edu/] http://personalization.ccs.neu.edu/
DOWN [000 https://www.fdvt.org/] https://www.fdvt.org/ — expected: no connection on https or http, 2026-09-23
DOWN [301 https://adanalystplus.imag.fr/] https://adanalyst.mpi-sws.org/ — expected: redirects to adanalystplus.imag.fr, which does not answer, 2026-09-23
OK   [200 https://badads.cs.washington.edu/political.html] https://badads.cs.washington.edu/political.html
OK   [200 https://ads.cs.washington.edu/] https://ads.cs.washington.edu/
OK   [200 https://facebook-targeting.ccs.neu.edu/] https://facebook-targeting.ccs.neu.edu/
OK   [200 https://whotargets.me/en/] https://whotargets.me/
OK   [200 https://gitlab.inria.fr/oagoga/collaborative-transparency-IEEE-SP2023] https://gitlab.inria.fr/oagoga/collaborative-transparency-IEEE-SP2023
 
== summary ==
FAILED checks: 0

Probes, inclusion rule and verdicts

scripts/adv_fold.mjs as run.

adv_fold.mjs
// Population rule, candidate probes and hand verdicts for privacy:advertising
// ("Measuring Ad Targeting and Bidding"). Written 2026-09-23.
//
// There is no extraction field for "observed an ad". The population is a hand
// audit of a full-text CANDIDATE set, against the inclusion rule below, which
// was written before the first count was taken. The candidate set is recall-
// oriented and is NOT a population: most of it is off topic.
//
// Candidate set = union of three probes over paper.cols.txt (whitespace
// collapsed, case-insensitive, paper-counted):
//   GAP   the 2026-09-22 gap pass's own ad_targeting_rtb family, >= 5 hits
//         (kept verbatim so this page's population can be compared with the
//         118 that queued it)
//   FAM   the sum of six observable families below, >= 5 hits
//   ADW   /\b(ads|advertisements?|advertisers?)\b/ >= 40 hits — the widest net,
//         there to catch ad-content papers that never say "targeting"; it is
//         also where the homographs live (BLE "advertisements", ADS-B)
//
// Every candidate gets exactly one verdict. report_advertising.mjs throws if a
// candidate has no verdict or a verdict names a paper that is not a candidate.
 
export const GAP_RE = /real-?time bidding|\bRTB\b|bid request|bidstream|ad auction|header bidding|ad targeting|targeted ad|ad personali[sz]|ad explanation|why am I seeing/gi;
 
export const FAMILIES = {
  targeting: /ad targeting|targeted (ads?|advertis\w*)\b|behaviou?ral(ly)? target\w*|interest-based (ads?|advertis\w*)|ad personali[sz]\w*|personali[sz]ed (ads?|advertis\w*)\b|re-?target(ing|ed)\b|remarketing|micro-?target\w*|nano-?target\w*/gi,
  auction: /real-?time bidding|\bRTB\b|bid requests?|bid responses?|bidstream|ad auctions?|header bidding|\bprebid|winning bids?|clearing prices?|\bCPMs?\b|price notifications?|encrypted prices?/gi,
  explanation: /why am I seeing|ad explanations?|targeting explanations?|about this ad|ad preferences?|ads? settings|ad (preference )?managers?|my ad center|ad interests?|advertiser interests?/gi,
  donation: /data donation|donated (data|ads?)\b|ad observer|who targets me|ad observatory|adanalyst|facebook data valuation|\bFDVT\b/gi,
  advside: /custom audiences?|lookalike audiences?|PII-based targeting|potential reach|reach estimates?|ads manager|targeting (options?|attributes?|parameters?|criteria)|we (ran|launched|created|placed|bought|purchased) (\w+ ){0,3}(ad|advertising) campaigns?/gi,
  content: /malvertis\w*|scam ads?\b|problematic ads?\b|political ads?\b|in-app ads?\b|search ads?\b|ad creatives?|ad landing pages?|landing pages? of (the )?ads|ad screenshots?|screenshots? of (the )?ads|collected [\d,.]+[kKM]? (unique |distinct )?ads\b|[\d,]{3,} (unique |distinct )?(ads|advertisements|ad impressions)\b/gi,
};
 
export const ADW_RE = /\b(ads|advertisements?|advertisers?)\b/gi;
export const THRESH = { GAP: 5, FAM: 5, ADW: 40 };
 
export const INCLUSION_RULE = `A candidate is IN if both hold:
 (A) the paper's own data includes ads or ad-auction outcomes delivered to a
     measuring identity or to real people: served creatives or impressions,
     landing pages, bids or clearing prices, the platform's ad explanations /
     ad-preference inferences / advertiser lists, or delivery and reach
     statistics for ads the researchers bought (an ad archive counts, and is
     pointed to design:platforms:ad_archives);
 (B) it uses that data to answer a question about TARGETING (whether and why
     an ad reached this identity, or what the platform inferred), PRICE (what
     an advertiser bid or paid), DELIVERY (how the platform distributed an ad
     the researchers bought), or CONTENT (what the served ads were, and where).
     An ad's visible behaviour towards the user (aggressive, deceptive,
     redirecting) is CONTENT; what the ad's code collects and sends is
     tracking, and OUT (boundary written down after review, 2026-09-23).
A candidate is CONTEXT if it is a user study whose object is ad targeting,
explanations or ad settings but whose data answers a perception question only.
Everything else is OUT, with a code saying where it belongs.`;
 
// Observable families (multi-valued per IN paper).
export const OBSERVABLES = {
  retarget: 'retargeting as a controlled stimulus',
  persona: 'trained personas / profiles / sock puppets vs control',
  bids: 'header-bidding bids read from the page',
  rtbprice: 'RTB win-notification prices in passive traffic',
  explanation: "the platform's own explanations, ad-preference pages or advertiser lists",
  donation: "real people's ads or ad data (extension panel, data export)",
  advertiser: 'researcher-bought ads, targeting interfaces, reach estimates',
  crawlads: 'ad creatives / screenshots / landing pages collected by a crawler or app driver',
  archive: 'an ad-transparency archive (owned by design:platforms:ad_archives)',
};
export const QUESTIONS = ['targeting', 'price', 'delivery', 'content'];
 
// OUT codes: where the candidate belongs instead.
export const OUT_CODES = {
  perception: 'user study with no ad observation (and not about ad targeting)',
  mechanism: 'auction / allocation / CTR / campaign-optimisation design on platform-internal logs',
  fraud: 'ad or click fraud measured from logs, apps or botnets — not targeting, price or content',
  blocking: 'ad blocking, filter lists, anti-adblock: ads counted only as blocking efficacy',
  supplychain: 'ads.txt / sellers.json supply chain only — privacy:ads_txt',
  tracking: 'tracking, syncing, consent or SDK data flows with no ad observed',
  sandbox: 'Privacy Sandbox API analysis or simulation — privacy:privacy_sandbox',
  recommendation: 'personalisation audit of search/news/recommendations, not ads — design:algorithm_audits',
  injection: 'ads injected by extensions or malware — privacy:browser_extensions',
  scam: 'the ad is only the discovery channel for a scam / cloaking / SEO study',
  defence: 'privacy-preserving ad system, detector or obfuscator evaluated without served-ad outcomes',
  dsr: 'data-export (right-of-access) audit — privacy:data_subject_rights',
  sponsorship: 'influencer sponsorship inside content, not an ad system',
  homograph: '"advertisement"/"bid"/"target" in another sense (BLE, ADS-B, auctions, Android intents, ML)',
  mention: 'advertising mentioned in passing; the paper is about something else',
};
 
// Verdicts, keyed by `${venue}/${year}/${slug-prefix}`. obs = observable
// families, q = question tags, unit = the unit the paper's headline ad figure
// is counted in (filled for IN papers only; see UNITS below).
const V = (v, rest = {}) => ({ v, ...rest });
const IN = (obs, q, note = '') => V('IN', { obs, q, note });
const CTX = (note) => V('CONTEXT', { note });
const OUT = (code, note = '') => V('OUT', { code, note });
 
export const VERDICTS = {
  // ---- 2010–2015
  'IMC/2010/challenges-in-measuring-online-advertising-systems': IN(['persona', 'crawlads'], ['targeting'], 'controlled profiles; ad churn and snapshot completeness'),
  'WWW/2010/analyzing-content-level-properties-of-the-web-adversphere': IN(['crawlads'], ['targeting'], 'ads from 282 PlanetLab vantages; location and behavioural targeting'),
  'CCS/2011/auctions-in-do-not-track-compliant-internet-advertising': OUT('mechanism', 'Bing auction logs, stale-bid simulation'),
  'IEEE-SP/2011/repriv-re-imagining-content-personalization': OUT('defence', 'in-browser personalisation system'),
  'IMC/2011/understanding-fraudulent-activities-in-online-ad-exchanges': OUT('fraud'),
  'USENIX/2011/a-study-of-android-application-security': OUT('homograph', 'Android intent "retargeting"'),
  'CCS/2011/fashion-crimes-trending-term-exploitation': OUT('scam', 'MFA sites in trending-term search results'),
  'CCS/2012/knowing-your-enemy-understanding-and-detecting-malicious-web-advertising': IN(['crawlads'], ['content'], 'malvertising redirection chains, Alexa top 90K'),
  'IEEE-SP/2012/third-party-web-tracking-policy-and-technology': OUT('tracking'),
  'IMC/2012/breaking-for-commercials-characterizing-mobile-advertising': OUT('mention', 'mobile ad traffic volume and energy; no ad content, targeting or price'),
  'IMC/2013/understanding-the-effectiveness-of-video-ads': OUT('mechanism', 'CDN logs of ad completion'),
  'NDSS/2013/analyzing-unique-bid-auction-sites': OUT('homograph', 'consumer unique-bid auctions'),
  'USENIX/2013/effective-inter-component-communication-mapping': OUT('homograph', 'Android intent "retargeting"'),
  'WWW/2013/the-cost-of-annoying-ads': OUT('perception', 'annoyance of ad formats in a lab task; not about targeting (was CONTEXT until the generic review, 2026-09-23)'),
  'WWW/2013/your-browsing-behavior-for-a-big-mac': OUT('perception', 'PII valuation via reverse auctions'),
  'WWW/2013/towards-a-robust-modeling-of-temporal-interest-change': OUT('mechanism', 'behavioural-targeting model on server logs'),
  'CCS/2013/viceroi-catching-click-spam': OUT('fraud'),
  'CCS/2014/private-by-design-advertising-meets-the-real-world': OUT('defence', 'Privad deployment metrics'),
  'CCS/2014/the-web-never-forgets-persistent-tracking': OUT('tracking'),
  'CCS/2014/your-online-interests-pwned-a-pollution-attack': IN(['persona'], ['targeting', 'price'], 'profile pollution vs DoubleClick; attack paper'),
  'CCS/2014/characterizing-large-scale-click-fraud-in-zeroaccess': OUT('fraud'),
  'IMC/2014/the-dark-alleys-of-madison-avenue': IN(['crawlads'], ['content'], '673,596 ads collected by crawl'),
  'USENIX/2014/understanding-the-dark-side-of-domain-parking': OUT('fraud', 'parking monetisation chains'),
  'USENIX/2014/xray-enhancing-the-web-s-transparency': IN(['persona'], ['targeting'], 'differential correlation over shadow accounts'),
  'USENIX/2014/brahmastra-driving-apps-to-test': IN(['crawlads'], ['content'], 'in-app ad landing pages and child-inappropriate ads'),
  'WWW/2014/adscape-harvesting-and-analyzing-online-display-ads': IN(['persona', 'crawlads'], ['targeting'], '340 personas, 875,209 impressions'),
  'WWW/2014/from-devices-to-people-attribution': OUT('mechanism', 'search-log attribution'),
  'NDSS/2014/scambaiter-understanding-targeted-nigerian-scams': OUT('homograph', 'classified ads on Craigslist'),
  'CCS/2015/sunlight-fine-grained-targeting-detection': IN(['persona', 'crawlads'], ['targeting'], 'randomised synthetic profiles'),
  'IEEE-SP/2015/ad-injection-at-scale': OUT('injection'),
  'PETS/2015/automated-experiments-on-ad-privacy-settings': IN(['persona', 'explanation'], ['targeting'], 'AdFisher'),
  'WWW/2015/understanding-malvertising-through-ad-injecting': OUT('injection'),
  'NDSS/2015/parking-sensors-analyzing-and-detecting': OUT('scam', 'parked domains'),
  'PETS/2015/an-automated-approach-for-complementing-ad-blockers': OUT('blocking'),
  'WWW/2015/crowd-fraud-detection-in-internet-advertising': OUT('fraud'),
  // ---- 2016–2019
  'CCS/2016/predator-proactive-recognition': OUT('homograph', 'domain-registration "prices"'),
  'IMC/2016/recommended-for-you-a-first-look-at-content-recommendation': IN(['crawlads'], ['content', 'targeting'], 'CRN widgets and advertiser landing pages'),
  'IMC/2016/ad-blockers-global-prevalence-and-impact': OUT('blocking'),
  'IMC/2016/characterizing-website-behaviors-across-logged-in': OUT('tracking', 'ads counted as categorised FQDNs, not collected'),
  'IEEE-SP/2016/cloak-of-visibility': OUT('scam', 'advertisement cloaking'),
  'PETS/2016/access-denied-contrasting-data-access': OUT('perception'),
  'PETS/2016/do-not-track-me-sometimes': OUT('perception'),
  'PETS/2016/privacy-challenges-in-the-quantified-self': OUT('perception'),
  'USENIX/2016/internet-jones-and-the-raiders': OUT('tracking'),
  'USENIX/2016/tracing-information-flows-between-ad-exchanges': IN(['retarget', 'persona', 'crawlads'], ['targeting'], 'retargeted ads as evidence of exchange-to-exchange flows'),
  'USENIX/2016/investigating-commercial-pay-per-install': OUT('mention'),
  'USENIX/2016/measuring-pup-prevalence': OUT('mention'),
  'USENIX/2016/protecting-privacy-of-ble-device-users': OUT('homograph', 'BLE advertisements'),
  'WWW/2016/an-empirical-study-of-web-cookies': OUT('tracking'),
  'CCS/2017/use-privacy-in-data-driven-systems': OUT('mention'),
  'IMC/2017/if-you-are-not-paying-for-it': IN(['rtbprice', 'advertiser'], ['price'], 'cleartext and encrypted RTB prices + two own campaigns'),
  'IMC/2017/exploring-the-dynamics-of-search-advertiser-fraud': OUT('fraud'),
  'IMC/2017/the-ad-wars-retrospective-measurement': OUT('blocking'),
  'IEEE-SP/2017/how-to-learn-klingon-without-a-dictionary': OUT('scam', 'SEO black keywords'),
  'NDSS/2017/dial-one-for-scam': OUT('scam', 'malvertising only as the route to TSS pages'),
  'NDSS/2017/are-we-there-yet-on-rpki': OUT('homograph', 'BGP route advertisements'),
  'PETS/2017/cross-device-tracking-measurement': OUT('tracking'),
  'PETS/2017/on-the-privacy-and-security-of-the-ultrasound': OUT('tracking'),
  'PETS/2017/detecting-anti-ad-blockers-in-the-wild': OUT('blocking'),
  'USENIX/2017/exploring-user-perceptions-of-discrimination': CTX('scenario survey on discriminatory targeting'),
  'USENIX/2017/a-privacy-analysis-of-cross-device-tracking': OUT('tracking'),
  'WWW/2017/j-force-forced-execution': OUT('mention'),
  'WWW/2017/security-implications-of-redirection-trail': OUT('mention'),
  'IEEE-SP/2018/privacy-risks-with-facebooks-pii-based-targeting': IN(['advertiser'], ['targeting'], 'custom-audience interface as an oracle'),
  'IEEE-SP/2018/the-spyware-used-in-intimate-partner-violence': OUT('mention'),
  'IEEE-SP/2018/crowd-gps-sec': OUT('homograph', 'ADS-B'),
  'IEEE-SP/2018/surveylance': OUT('scam'),
  'IMC/2018/following-their-footsteps': OUT('homograph'),
  'IMC/2018/how-tracking-companies-circumvented-ad-blockers': OUT('tracking'),
  'IMC/2018/tracing-cross-border-web-tracking': OUT('tracking'),
  'PETS/2018/nomoads-effective-and-efficient': OUT('blocking'),
  'PETS/2018/undermining-privacy-in-the-aircraft': OUT('homograph', 'ADS-B / ACARS'),
  'PETS/2018/when-the-cookie-meets-the-blockchain': OUT('tracking'),
  'USENIX/2018/unveiling-and-quantifying-facebook-exploitation': IN(['explanation', 'donation', 'advertiser'], ['targeting'], 'FDVT ad preferences + own campaigns'),
  'WWW/2018/adbudgetkiller': IN(['retarget'], ['targeting'], 'inferred retargeting strategies; attack paper'),
  'WWW/2018/the-cost-of-digital-advertisement': IN(['rtbprice'], ['price'], 'passive RTB prices, 1,270 users'),
  'WWW/2018/your-secrets-are-safe': OUT('perception'),
  'WWW/2018/exposing-search-and-advertisement-abuse-tactics': IN(['crawlads'], ['content'], 'search ads collected daily across five engines'),
  'CCS/2019/oh-the-places-youve-been': CTX('reactions to tracking inferences; interests inferred by the authors, not by a platform'),
  'CCS/2019/privacy-risks-of-securing-machine-learning': OUT('homograph', 'targeted adversarial examples'),
  'CCS/2019/adversarial-perceptual-ad-blocking': OUT('blocking'),
  'CCS/2019/watching-you-watch': OUT('tracking'),
  'IEEE-SP/2019/measuring-and-analyzing-search-engine-poisoning': OUT('scam'),
  'IMC/2019/a-longitudinal-analysis-of-the-ads-txt-standard': OUT('supplychain', 'RTB inclusion chains serve the ads.txt compliance test'),
  'IMC/2019/no-more-chasing-waterfalls': IN(['bids'], ['price'], 'HB bids from a clean crawler; shared with privacy:ads_txt'),
  'IMC/2019/what-you-see-is-not-what-you-get': IN(['crawlads'], ['content'], 'SE ad campaigns clustered from screenshots'),
  'IMC/2019/errors-misunderstandings-and-attacks': OUT('blocking'),
  'NDSS/2019/measuring-the-facebook-advertising-ecosystem': IN(['donation', 'explanation'], ['targeting'], 'AdAnalyst, 622 volunteers'),
  'NDSS/2019/quantity-vs-quality-evaluating-user-interest-profiles': IN(['explanation'], ['targeting'], 'ad-preference-manager profiles vs participants'),
  'NDSS/2019/master-of-web-puppets': OUT('mention'),
  'NDSS/2019/nearby-threats': OUT('homograph', 'BLE advertisements'),
  'PETS/2019/investigating-sources-of-pii-used-in-facebook': IN(['advertiser'], ['targeting'], 'reach estimates + own campaigns on controlled PII'),
  'PETS/2019/what-if-predicting-individual-users': OUT('perception'),
  'PETS/2019/4-years-of-eu-cookie-law': OUT('tracking'),
  'USENIX/2019/on-the-lack-of-location-privacy': OUT('homograph'),
  'USENIX/2019/policylint': OUT('mention'),
  'WWW/2019/auditing-offline-data-brokers-via-facebooks': IN(['advertiser', 'explanation'], ['targeting'], 'broker attributes via the ad platform'),
  'WWW/2019/before-and-after-gdpr': OUT('tracking'),
  'WWW/2019/cookie-synchronization-everything': OUT('tracking'),
  'WWW/2019/nameles': OUT('fraud'),
  'WWW/2019/quality-effects-on-user-preferences': OUT('homograph'),
  'WWW/2019/revisiting-mobile-advertising-threats-with-madlife': IN(['crawlads'], ['content'], '84K in-app ads and landing pages'),
  'WWW/2019/dealing-with-interdependencies-and-uncertainty': OUT('mechanism'),
  'WWW/2019/measuring-political-personalization-of-google-news': OUT('recommendation'),
  'WWW/2019/multiple-treatment-effect-estimation': OUT('mechanism'),
  'WWW/2019/quality-sensitive-training': OUT('mechanism'),
  'WWW/2019/the-chain-of-implicit-trust': OUT('tracking'),
  // ---- 2020–2023
  'IEEE-SP/2020/a-security-analysis-of-the-facebook-ad-library': IN(['archive'], ['content'], 'Ad Library audit'),
  'IEEE-SP/2020/do-cookie-banners-respect-my-choice': OUT('tracking'),
  'IEEE-SP/2020/ex-vivo-dynamic-analysis': OUT('homograph'),
  'IMC/2020/when-push-comes-to-ads': IN(['crawlads'], ['content'], 'web-push ad notifications collected and clustered'),
  'NDSS/2020/withdrawing-the-bgp-re-routing-curtain': OUT('homograph', 'BGP route advertisements'),
  'PETS/2020/canarytrap': IN(['explanation'], ['targeting'], "Facebook's advertiser-uploaded-your-info list as ground truth for honeytoken misuse"),
  'PETS/2020/inferring-tracker-advertiser-relationships': IN(['bids', 'persona'], ['targeting', 'price'], 'HB bids as the dependent variable'),
  'PETS/2020/the-price-is-not-right': OUT('homograph'),
  'PETS/2020/in-depth-evaluation-of-redirect-tracking': OUT('tracking'),
  'PETS/2020/the-tv-is-smart-and-full-of-trackers': OUT('tracking'),
  'USENIX/2020/the-impact-of-ad-blockers-on-product-search': OUT('perception', 'lab experiment with contextual ads blocked'),
  'USENIX/2020/what-twitter-knows': IN(['donation', 'explanation'], ['targeting'], "231 participants' own Twitter ad files"),
  'USENIX/2020/actions-speak-louder-than-words': OUT('mention'),
  'WWW/2020/apophanies-or-epiphanies': OUT('mention'),
  'WWW/2020/beyond-the-front-page': OUT('tracking'),
  'WWW/2020/facebook-ads-monitor': IN(['donation', 'archive'], ['content'], 'volunteer-collected Facebook ads vs Ad Library'),
  'WWW/2020/finding-a-choice-in-a-haystack': OUT('mention'),
  'WWW/2020/stop-tracking-me-bro': IN(['persona', 'rtbprice'], ['price', 'targeting'], 'RTB prices per demographic persona'),
  'WWW/2020/deconstructing-googles-web-light': OUT('mention'),
  'WWW/2020/filter-list-generation-for-underserved': OUT('blocking'),
  'WWW/2020/maddroid': IN(['crawlads'], ['content'], 'devious in-app ad contents'),
  'CCS/2021/black-box-adversarial-attacks': OUT('homograph'),
  'CCS/2021/consistency-analysis-of-data-usage': OUT('mention'),
  'CCS/2021/encodermi': OUT('homograph'),
  'CCS/2021/this-sneaky-piggy': OUT('tracking', "ads' sensor access, not their content"),
  'CCS/2021/understanding-and-detecting-mobile-ad-fraud': OUT('fraud'),
  'CCS/2021/dissecting-click-fraud-autonomy': OUT('fraud'),
  'IEEE-SP/2021/linking-bluetooth-le-classic': OUT('homograph', 'BLE advertisements'),
  'IMC/2021/polls-clickbait-and-commemorative': IN(['crawlads'], ['content'], '1.4M ads from 745 news sites, six locations'),
  'IMC/2021/unique-on-facebook': IN(['donation', 'advertiser'], ['targeting', 'delivery'], 'FDVT interests + 21 nanotargeting campaigns'),
  'NDSS/2021/the-abuser-inside-apps': OUT('fraud'),
  'NDSS/2021/understanding-worldwide-private-information': OUT('tracking'),
  'NDSS/2021/cv-inspector': OUT('blocking'),
  'NDSS/2021/trust-the-crowd': OUT('homograph', 'ADS-B'),
  'PETS/2021/a-calculus-of-tracking': OUT('tracking'),
  'PETS/2021/awareness-adoption-and-misconceptions': OUT('perception'),
  'PETS/2021/did-you-know-this-camera': OUT('perception'),
  'PETS/2021/managing-potentially-intrusive-practices': OUT('perception'),
  'PETS/2021/who-can-find-my-devices': OUT('homograph', 'BLE advertisements'),
  'USENIX/2021/adcube': OUT('fraud', 'WebVR ad fraud attacks'),
  'USENIX/2021/are-privacy-dashboards-good': OUT('perception'),
  'USENIX/2021/disrupting-continuity': OUT('homograph', 'BLE advertisements'),
  'USENIX/2021/share-first-ask-later': OUT('tracking'),
  'WWW/2021/user-tracking-in-the-post-cookie-era': OUT('tracking'),
  'WWW/2021/websocket-adoption': OUT('tracking'),
  'CCS/2022/cart-ology': IN(['retarget'], ['targeting'], 'identity entanglement read out through retargeted ads'),
  'CCS/2022/do-opt-outs-really-opt-me-out': OUT('dsr', 'traffic after industry opt-outs'),
  'CCS/2022/privacy-limitations-of-interest-based-advertising': OUT('sandbox', 'FLoC recomputed from comScore'),
  'CCS/2022/when-evil-calls': OUT('homograph'),
  'CCS/2022/freely-given-consent': OUT('tracking'),
  'IEEE-SP/2022/investigating-influencer-vpn-ads': OUT('sponsorship'),
  'IMC/2022/illuminating-large-scale-ipv6-scanning': OUT('homograph', 'scan "targeting"'),
  'IMC/2022/measurement-and-analysis-of-implied-identity': IN(['advertiser'], ['delivery'], 'paired campaigns with synthetic faces'),
  'IMC/2022/what-factors-affect-targeting-and-bids': IN(['donation', 'bids'], ['targeting', 'price'], '286 participants, extension'),
  'NDSS/2022/auto-draft-209': IN(['persona', 'bids'], ['targeting', 'price'], 'HARPO: obfuscation scored on real bids and segments'),
  'PETS/2022/atom-ad-network-tomography': IN(['persona', 'crawlads'], ['targeting'], 'isolated personas, ad creatives as features'),
  'PETS/2022/charting-app-developers-journey': OUT('perception'),
  'PETS/2022/are-iphones-really-better': OUT('tracking'),
  'PETS/2022/how-can-and-would-people-protect': OUT('perception'),
  'USENIX/2022/an-audit-of-facebooks-political-ad-policy': IN(['archive'], ['content'], 'Ad Library enforcement audit'),
  'USENIX/2022/khaleesi': OUT('blocking'),
  'USENIX/2022/mistrust-plugins-you-must': OUT('mention'),
  'USENIX/2022/webgraph': OUT('blocking'),
  'WWW/2022/conspiracy-brokers': IN(['crawlads'], ['content'], 'YouTube ads on conspiracy vs mainstream videos'),
  'WWW/2022/investigating-advertisers-domain-changing': OUT('blocking'),
  'CCS/2023/marketing-to-children-through-online-targeted': IN(['persona', 'explanation', 'advertiser'], ['targeting'], 'six profiles, 3,221 ads + seven own campaigns'),
  'IEEE-SP/2023/blue-is-the-new-black-market': OUT('homograph', 'police auctions'),
  'IEEE-SP/2023/collaborative-ad-transparency': IN(['donation', 'advertiser'], ['targeting', 'delivery'], '420 volunteers + 79 own campaigns'),
  'IEEE-SP/2023/when-and-why-do-people-want-ad-targeting': CTX('4,251 ads logged, but the question is when people want an explanation'),
  'IMC/2023/tracking-profiling-and-ad-targeting-in-the-alexa': IN(['persona', 'bids'], ['targeting', 'price'], 'Echo personas, web bids'),
  'IMC/2023/understanding-the-privacy-risks-of-popular-search': OUT('tracking', 'ad-click redirect chains studied for identifier leakage'),
  'NDSS/2023/i-still-know-what-you-watched': OUT('tracking'),
  'NDSS/2023/navigating-murky-waters': OUT('tracking'),
  'PETS/2023/a-utility-preserving-obfuscation-approach': OUT('recommendation'),
  'PETS/2023/is-there-a-reverse-privacy-paradox': OUT('perception'),
  'PETS/2023/locality-sensitive-hashing-does-not-guarantee': OUT('sandbox'),
  'PETS/2023/surprised-shocked-worried': CTX('reactions to Off-Facebook Activity'),
  'PETS/2023/privacy-rarely-considered': OUT('tracking'),
  'PETS/2023/usability-and-enforceability-of-global': OUT('dsr'),
  'USENIX/2023/problematic-advertising-and-its-disparate': IN(['donation'], ['content', 'targeting'], '32,587 panel ads coded'),
  'USENIX/2023/trident': OUT('defence', 'SE-ad navigation detector'),
  'USENIX/2023/autofr': OUT('blocking'),
  'USENIX/2023/defining-broken': OUT('blocking'),
  'WWW/2023/ad-auction-design-with-coupon': OUT('mechanism'),
  'WWW/2023/fairness-aware-guaranteed-display': OUT('mechanism'),
  'WWW/2023/online-advertising-in-ukraine-and-russia': IN(['crawlads'], ['content'], 'ads on 500 news sites from three proxy locations'),
  'WWW/2023/propaganda-politica-pagada': IN(['archive'], ['content'], 'Ad Library API'),
  'WWW/2023/the-thin-ideology-of-populist': IN(['archive'], ['content'], 'Meta Ad Library'),
  'WWW/2023/are-mobile-advertisements-in-compliance': IN(['crawlads'], ['content'], '11,270 in-app ad views'),
  'WWW/2023/who-funds-misinformation': IN(['crawlads'], ['content'], 'served ads on fake-news sites; shared with privacy:ads_txt'),
  // ---- 2024–2026
  'CCS/2024/unveiling-collusion-based-ad-attribution': OUT('fraud'),
  'CCS/2024/the-privacy-utility-trade-off-in-the-topics': OUT('sandbox'),
  'IEEE-SP/2024/multi-instance-adversarial-attack': OUT('homograph'),
  'IEEE-SP/2024/sok-technical-implementation-and-human': OUT('mention'),
  'IEEE-SP/2024/targeted-and-troublesome': IN(['crawlads'], ['content', 'targeting'], "ads on 2,004 children's sites from seven vantages"),
  'IEEE-SP/2024/understanding-the-privacy-practices-of-political': OUT('tracking'),
  'IMC/2024/analyzing-the-in-accessibility-of-online': IN(['crawlads'], ['content'], 'ads on 90 sites for 31 days'),
  'IMC/2024/beyond-the-guidelines': IN(['archive'], ['content'], 'Meta Ad Library, 16 EU countries'),
  'IMC/2024/diffaudit': OUT('tracking'),
  'IMC/2024/watching-tv-with-the-second-party': OUT('tracking'),
  'IMC/2024/whatcha-lookin-at': OUT('tracking'),
  'NDSS/2024/anonpsi': OUT('homograph'),
  'PETS/2024/client-side-and-server-side-tracking-on-meta': IN(['advertiser'], ['targeting'], "campaign reach as the oracle for Pixel/CAPI matching"),
  'PETS/2024/cross-contextual-examination-of-older': OUT('perception'),
  'PETS/2024/crumbling-cookie-categories': OUT('perception'),
  'PETS/2024/exploring-the-privacy-experiences-of-closeted': OUT('perception'),
  'PETS/2024/how-does-connecting-online-activities': IN(['explanation'], ['targeting'], "participants' own labels vs Google Ad Settings: 21% agreement"),
  'PETS/2024/interest-disclosing-mechanisms': OUT('sandbox'),
  'PETS/2024/johnny-still-cant-opt-out': OUT('dsr'),
  'PETS/2024/measuring-conditional-anonymity': OUT('homograph'),
  'PETS/2024/opted-out-yet-tracked': IN(['persona', 'bids'], ['targeting', 'price'], 'bids after GDPR/CCPA/NAI opt-outs'),
  'PETS/2024/overprofiling-analysis-on-major': IN(['explanation', 'donation'], ['targeting'], '45,310 interests rated, 1,477 interest-targeted ads'),
  'PETS/2024/what-do-privacy-advertisements': OUT('perception', 'ads about privacy features'),
  'PETS/2024/what-does-it-mean-to-be-creepy': CTX('design probe; interests inferred by the authors'),
  'PETS/2024/website-data-transparency-in-the-browser': OUT('tracking'),
  'PETS/2024/what-to-expect-when-you-re-accessing': OUT('dsr'),
  'USENIX/2024/attention-please': OUT('tracking'),
  'USENIX/2024/false-claims-against-model-ownership': OUT('homograph'),
  'USENIX/2024/fledging-will-continue': OUT('sandbox', 'Protected Audience adoption and attacks'),
  'USENIX/2024/data-subjects-reactions': OUT('dsr'),
  'USENIX/2024/im-not-convinced': OUT('perception'),
  'USENIX/2024/navigating-the-privacy-compliance-maze': OUT('tracking'),
  'USENIX/2024/security-and-privacy-analysis-of-samsungs': OUT('homograph', 'BLE advertisements'),
  'WWW/2024/a-study-of-gdpr-compliance-under-the-transparency': OUT('tracking'),
  'WWW/2024/adflush': OUT('blocking'),
  'CCS/2025/exploiting-the-shared-storage-api': OUT('sandbox'),
  'CCS/2025/piixel-leaks': OUT('tracking'),
  'CCS/2025/whispertest': OUT('mention'),
  'IEEE-SP/2025/analyzing-ad-prevalence-characteristics': IN(['crawlads'], ['content'], 'audio ads in 45,477 Alexa skills'),
  'IEEE-SP/2025/characterizing-the-usability-and-usefulness': CTX('usability of 22 ad-transparency systems'),
  'IEEE-SP/2025/decentralization-of-ethereums-builder': OUT('homograph', 'MEV-Boost bids'),
  'IEEE-SP/2025/understanding-users-security-and-privacy': OUT('mention'),
  'IEEE-SP/2025/identifying-incoherent-search-sessions': OUT('fraud'),
  'IMC/2025/cookieguard': OUT('tracking'),
  'IMC/2025/from-voice-to-ads': IN(['persona'], ['targeting'], '42 cloned-voice puppets'),
  'NDSS/2025/transparency-or-information-overload': OUT('perception'),
  'NDSS/2025/careful-about-what-app-promotion': IN(['crawlads'], ['content'], 'app-promotion ads collected by driving apps'),
  'NDSS/2025/ctrlaltdeceive': OUT('scam'),
  'PETS/2025/echoes-of-privacy': IN(['persona', 'explanation'], ['targeting'], 'persona accounts vs disclosed profiling labels'),
  'PETS/2025/evaluating-a-data-fiduciary': OUT('perception'),
  'PETS/2025/it-s-not-my-data-anymore': OUT('homograph', 'medical data donation'),
  'PETS/2025/misalignments-and-demographic-differences': CTX('Facebook settings incl. ad profile, as a perception study'),
  'PETS/2025/more-and-scammier-ads': IN(['persona', 'explanation', 'crawlads'], ['content', 'targeting'], 'YouTube pre-roll ads under privacy settings'),
  'PETS/2025/navigating-social-media-privacy': OUT('perception'),
  'PETS/2025/privacy-perceptions-and-behaviors-towards-targeted': CTX('cross-country survey on targeted ads'),
  'PETS/2025/sheeps-clothing-wolfish-intent': IN(['crawlads'], ['content'], "Acceptable Ads, 4,710 pages, US and Germany"),
  'PETS/2025/tracking-without-borders': OUT('tracking'),
  'PETS/2025/unmasking-the-shadows': OUT('tracking'),
  'PETS/2025/intractable-cookie-crumbs': OUT('tracking'),
  'PETS/2025/okay-google-where-s-my-tracker': OUT('homograph', 'BLE advertisements'),
  'PETS/2025/privacy-settings-of-third-party-libraries': OUT('tracking'),
  'PETS/2025/the-effect-of-platform-policies-on-app': OUT('tracking'),
  'PETS/2025/the-impact-of-default-mobile-sdk': OUT('tracking'),
  'PETS/2025/user-centric-textual-descriptions': OUT('perception'),
  'PETS/2025/your-signal-their-data': OUT('tracking'),
  'USENIX/2025/lemix': OUT('homograph'),
  'USENIX/2025/shadowed-realities': OUT('mention'),
  'USENIX/2025/addressing-the-address-books': OUT('perception'),
  'USENIX/2025/as-advertised': OUT('sponsorship'),
  'WWW/2025/the-first-early-evidence-of-the-use-of-browser': IN(['persona', 'bids'], ['targeting', 'price'], 'FPTrace: bids under fingerprint changes'),
  'WWW/2025/welcome-to-the-dark-side': OUT('supplychain'),
  'WWW/2025/assessing-compliance-in-digital-advertising': IN(['crawlads'], ['content'], 'Acceptable Ads compliance on 10,000 domains'),
  'WWW/2025/before-after-the-effect-of-eus-2022': IN(['crawlads'], ['content'], 'served ads and brand adjacency; shared with privacy:ads_txt'),
  'IEEE-SP/2026/setting-the-course-but-forgetting': OUT('dsr'),
  'NDSS/2026/side-channel-inference-of-user-activities': OUT('homograph'),
  'NDSS/2026/the-role-of-privacy-guarantees': OUT('homograph', 'health data donation'),
  'NDSS/2026/chameleoscan': OUT('mention'),
  'NDSS/2026/sok-cryptographic-authenticated': OUT('homograph'),
  'PETS/2026/a-year-under-the-dsa': IN(['explanation', 'donation', 'archive'], ['targeting', 'content'], '48,511 explanations vs repositories'),
  'PETS/2026/ad-personalization-and-transparency-in-mobile': IN(['persona', 'explanation'], ['targeting'], 'controlled app-store accounts'),
  'PETS/2026/clicking-into-exposure': OUT('tracking', 'gclid on YouTube ad clicks'),
  'PETS/2026/the-empire-strikes-back': OUT('tracking'),
  'PETS/2026/the-tcf-doesn-t-really-a-a-id': OUT('tracking'),
  'PETS/2026/designing-reflective-thinking-based': OUT('perception'),
  'PETS/2026/exercising-the-ccpa-opt-out-right': OUT('dsr'),
  'PETS/2026/i-don-t-think-it-needs-to-be-political': OUT('perception'),
  'PETS/2026/no-privacy-for-privates': OUT('tracking'),
  'PETS/2026/privacy-vs-profit': OUT('blocking'),
  'USENIX/2026/privacyshield': OUT('homograph', 'BLE advertisements'),
  'USENIX/2026/security-and-privacy-analysis-of-tiles': OUT('homograph', 'BLE advertisements'),
  'USENIX/2026/when-fun-turns-toxic': IN(['crawlads'], ['content'], 'aggressive ad behaviour in mini-games'),
  'WWW/2026/bowling-with-chatgpt': OUT('homograph', 'donated chat logs'),
  'WWW/2026/does-ad-free-mean-less-data-collection': OUT('dsr'),
  'WWW/2026/when-ads-become-profiles': IN(['donation'], ['targeting'], 'Australian Ad Observatory exposures re-analysed with Gemini'),
};
 
// Resolve a verdict prefix against the candidate list. Throws on zero or
// several matches, so a slug that changes upstream fails loudly.
export function resolveVerdicts(candidateKeys) {
  const byPrefix = new Map();
  for (const pref of Object.keys(VERDICTS)) {
    const hits = candidateKeys.filter((k) => k.startsWith(pref));
    if (hits.length !== 1) throw new Error(`verdict prefix ${pref} matches ${hits.length} candidates`);
    byPrefix.set(hits[0], { key: hits[0], prefix: pref, ...VERDICTS[pref] });
  }
  const missing = candidateKeys.filter((k) => !byPrefix.has(k));
  if (missing.length) throw new Error(`FAILURE: ${missing.length} candidates have no verdict:\n  ${missing.join('\n  ')}`);
  for (const r of byPrefix.values()) {
    if (r.v === 'OUT' && !OUT_CODES[r.code]) throw new Error(`unknown OUT code ${r.code} on ${r.key}`);
    if (r.v === 'IN') {
      for (const o of r.obs) if (!OBSERVABLES[o]) throw new Error(`unknown observable ${o} on ${r.key}`);
      for (const q of r.q) if (!QUESTIONS.includes(q)) throw new Error(`unknown question ${q} on ${r.key}`);
    }
  }
  return byPrefix;
}

Bibliography

Entries appended to bibliography in this sitting. PoPETs and USENIX authors from the landing pages' own metadata, cross-checked against the paper's title block; NDSS and PoPETs DOIs from Crossref. Recommended For You is entered without its title's quotation marks.

bib_additions_advertising.bib
@inproceedings{zarras2014_dark,
  author        = {Zarras, Apostolis and Kapravelos, Alexandros and Stringhini, Gianluca and Holz, Thorsten and Kruegel, Christopher and Vigna, Giovanni},
  title         = {The Dark Alleys of Madison Avenue: Understanding Malicious Advertisements},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2014},
  series        = {IMC 2014},
  doi           = {10.1145/2663716.2663719},
}
 
@inproceedings{barford2014_adscape,
  author        = {Barford, Paul and Canadi, Igor and Krushevskaja, Darja and Ma, Qiang and Muthukrishnan, S.},
  title         = {Adscape: Harvesting and Analyzing Online Display Ads},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2014},
  series        = {TheWebConf 2014},
  doi           = {10.1145/2566486.2567992},
}
 
@inproceedings{bashir2016_recommended,
  author        = {Bashir, Muhammad Ahmad and Arshad, Sajjad and Wilson, Christo},
  title         = {Recommended For You: A First Look at Content Recommendation Networks},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2016},
  series        = {IMC 2016},
  doi           = {10.1145/2987443.2987469},
}
 
@inproceedings{plane2017_exploring,
  author        = {Plane, Angelisa C. and Redmiles, Elissa M. and Mazurek, Michelle L. and Tschantz, Michael Carl},
  title         = {Exploring User Perceptions of Discrimination in Online Targeted Advertising},
  booktitle     = {Proceedings of the USENIX Security Symposium},
  year          = {2017},
  series        = {USENIX Security 2017},
  url           = {https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/plane},
}
 
@inproceedings{cabanas2018_unveiling,
  author        = {González-Cabañas, José and Cuevas, Ángel and Cuevas, Rubén},
  title         = {Unveiling and Quantifying Facebook Exploitation of Sensitive Personal Data for Advertising Purposes},
  booktitle     = {Proceedings of the USENIX Security Symposium},
  year          = {2018},
  series        = {USENIX Security 2018},
  url           = {https://www.usenix.org/conference/usenixsecurity18/presentation/cabanas},
}
 
@inproceedings{andreou2018_investigating,
  author        = {Andreou, Athanasios and Venkatadri, Giridhari and Goga, Oana and Gummadi, Krishna P. and Loiseau, Patrick and Mislove, Alan},
  title         = {Investigating Ad Transparency Mechanisms in Social Media: A Case Study of Facebook's Explanations},
  booktitle     = {Proceedings of the Network and Distributed System Security Symposium},
  year          = {2018},
  series        = {NDSS 2018},
  doi           = {10.14722/ndss.2018.23191},
}
 
@inproceedings{olejnik2014_selling,
  author        = {Olejnik, Lukasz and Tran, Minh-Dung and Castelluccia, Claude},
  title         = {Selling Off Privacy at Auction},
  booktitle     = {Proceedings of the Network and Distributed System Security Symposium},
  year          = {2014},
  series        = {NDSS 2014},
  doi           = {10.14722/ndss.2014.23270},
}
 
@inproceedings{vadrevu2019_discovering,
  author        = {Vadrevu, Phani and Perdisci, Roberto},
  title         = {What You See is NOT What You Get: Discovering and Tracking Social Engineering Attack Campaigns},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2019},
  series        = {IMC 2019},
  doi           = {10.1145/3355369.3355600},
}
 
@inproceedings{andreou2019_facebook,
  author        = {Andreou, Athanasios and Silva, Márcio and Benevenuto, Fabrício and Goga, Oana and Loiseau, Patrick and Mislove, Alan},
  title         = {Measuring the Facebook Advertising Ecosystem},
  booktitle     = {Proceedings of the Network and Distributed System Security Symposium},
  year          = {2019},
  series        = {NDSS 2019},
  doi           = {10.14722/ndss.2019.23280},
}
 
@inproceedings{chen2019_madlife,
  author        = {Chen, Gong and Meng, Wei and Copeland, John A.},
  title         = {Revisiting Mobile Advertising Threats with MAdLife},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2019},
  series        = {TheWebConf 2019},
  doi           = {10.1145/3308558.3313549},
}
 
@inproceedings{cabanas2021_unique,
  author        = {González-Cabañas, José and Cuevas, Ángel and Cuevas, Rubén and López-Fernández, Juan and García, David},
  title         = {Unique on Facebook: Formulation and Evidence of (Nano)targeting Individual Users with non-PII Data},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2021},
  series        = {IMC 2021},
  doi           = {10.1145/3487552.3487861},
}
 
@inproceedings{ballard2022_conspiracy,
  author        = {Ballard, Cameron and Goldstein, Ian and Mehta, Pulak and Smothers, Genesis and Take, Kejsi and Zhong, Victoria and Greenstadt, Rachel and Lauinger, Tobias and McCoy, Damon},
  title         = {Conspiracy Brokers: Understanding the Monetization of YouTube Conspiracy Theories},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2022},
  series        = {TheWebConf 2022},
  doi           = {10.1145/3485447.3512142},
}
 
@inproceedings{yeung2024_accessibility,
  author        = {Yeung, Christina and Kohno, Tadayoshi and Roesner, Franziska},
  title         = {Analyzing the (In)Accessibility of Online Advertisements},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2024},
  series        = {IMC 2024},
  doi           = {10.1145/3646547.3688427},
}
 
@inproceedings{farke2024_connecting,
  author        = {Farke, Florian M. and Balash, David G. and Golla, Maximilian and Aviv, Adam J.},
  title         = {How Does Connecting Online Activities to Advertising Inferences Impact Privacy Perceptions?},
  booktitle     = {Proceedings on Privacy Enhancing Technologies},
  year          = {2024},
  series        = {PoPETs 2024},
  doi           = {10.56553/popets-2024-0055},
}
 
@inproceedings{sabir2025_alexa,
  author        = {Sabir, Aafaq and B., Abhinaya S. and Ahmed, Dilawer and Das, Anupam},
  title         = {Analyzing Ad Prevalence, Characteristics, and Compliance in Alexa Skills},
  booktitle     = {Proceedings of the IEEE Symposium on Security and Privacy},
  year          = {2025},
  series        = {IEEE S&P 2025},
  doi           = {10.1109/sp61157.2025.00257},
}
 
@inproceedings{kaushik2025_perceptions,
  author        = {Kaushik, Smirity and Sharma, Tanusree and Yu, Yaman and Ali, Amna and Knijnenburg, Bart Piet and Wang, Yang and Zou, Yixin},
  title         = {Privacy Perceptions and Behaviors Towards Targeted Advertising on Social Media: A Cross-Country Study on the Effect of Culture and Religion},
  booktitle     = {Proceedings on Privacy Enhancing Technologies},
  year          = {2025},
  series        = {PoPETs 2025},
  doi           = {10.56553/popets-2025-0057},
}
 
@article{boerman2017_oba,
  author        = {Boerman, Sophie C. and Kruikemeier, Sanne and Zuiderveen Borgesius, Frederik J.},
  title         = {Online Behavioral Advertising: A Literature Review and Research Agenda},
  journal       = {Journal of Advertising},
  volume        = {46},
  number        = {3},
  pages         = {363--376},
  year          = {2017},
  doi           = {10.1080/00913367.2017.1339368},
}
 
@article{angus2024_donation,
  author        = {Angus, Daniel and Obeid, Abdul Karim and Burgess, Jean and Parker, Christine and Andrejevic, Mark and Carah, Nicholas and Tan, Xue Ying},
  title         = {Enabling Online Advertising Transparency through Data Donation Methods},
  journal       = {Computational Communication Research},
  volume        = {6},
  number        = {2},
  year          = {2024},
  doi           = {10.5117/ccr2024.2.6.angu},
}

References

[1]
Medjkoune, Tinhinane; Goga, Oana; Senechal, Juliette (2023): "Marketing to Children Through Online Targeted Advertising: Targeting Mechanisms and Legal Aspects", in: Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. (DOI)
[2]
Boerman, Sophie C.; Kruikemeier, Sanne; Zuiderveen Borgesius, Frederik J. (2017): "Online Behavioral Advertising: A Literature Review and Research Agenda", Journal of Advertising 46(3):363-376. (DOI)
[3]
Angus, Daniel; Obeid, Abdul Karim; Burgess, Jean; Parker, Christine; Andrejevic, Mark; Carah, Nicholas; Tan, Xue Ying (2024): "Enabling Online Advertising Transparency through Data Donation Methods", Computational Communication Research 6(2). (DOI)
[4]
Chen, Baiyu; Tag, Benjamin; Xue, Hao; Angus, Daniel; Salim, Flora (2026): "When Ads Become Profiles: Uncovering the Invisible Risk of Web Advertising at Scale with LLMs", in: Proceedings of the ACM Web Conference. (DOI)
[5]
Agarwal, Pushkal; Joglekar, Sagar; Papadopoulos, Panagiotis; Sastry, Nishanth; Kourtellis, Nicolas (2020): "Stop tracking me Bro! Differential Tracking of User Demographics on Hyper-Partisan Websites", in: Proceedings of the ACM Web Conference. (DOI)
[6]
Zeng, Eric; Wei, Miranda; Gregersen, Theo; Kohno, Tadayoshi; Roesner, Franziska (2021): "Polls, Clickbait, and Commemorative \$2 Bills: Problematic Political Advertising on News and Media Websites Around the 2020 U.S. Elections", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[7]
Datta, Amit; Tschantz, Michael Carl; Datta, Anupam (2015): "Automated Experiments on Ad Privacy Settings", in: Proceedings on Privacy Enhancing Technologies. (DOI)
[8]
Moti, Zahra; Senol, Asuman; Bostani, Hamid; Zuiderveen Borgesius, Frederik J.; Moonsamy, Veelasha; Mathur, Arunesh; Acar, Gunes (2024): "Targeted and Troublesome: Tracking and Advertising on Children's Websites", in: Proceedings of the IEEE Symposium on Security and Privacy. (DOI)
[9]
Cook, John; Nithyanand, Rishab; Shafiq, Zubair (2020): "Inferring Tracker-Advertiser Relationships in the Online Advertising Ecosystem using Header Bidding", in: Proceedings on Privacy Enhancing Technologies. (DOI)
provenance/privacy/advertising.txt · Last modified: by karel.kubicek.claude