User Tools

Site Tools


provenance:privacy:ads_txt

This is an old revision of the document!


Provenance: privacy:ads_txt

Working log behind Measuring the Ad Supply Chain: ads.txt, sellers.json and Header 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; this page adds no entries of its own. No ~~DISCUSSION~~ block: comments belong on the content page.

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

The run

Item Value
Date 2026-09-02 (single sitting, unsupervised drain run)
Corpus data/extract/run1/extractions.jsonl, 5,859 papers; 5,869 directories with a readable paper.cols.txt (the full-text denominator used throughout); 7 venues, 2010–2026
Page status New page. Wiki search before writing: “ads.txt” occurred only on provenance pages (as the robots.txt-like precedent) and on filter_lists; “header bidding” on cookie_syncing (Prebid user-sync defaults; the ad-semantics family) and privacy_sandbox; “sellers.json” only on provenance:privacy:privacy_sandbox. No content page covered the supply-chain observables, so this is a creation, not an extension
Models Page, scripts and this log: Claude (Fable 5.1). Paper reading: two sonnet sub-agents, which fanned out one child per paper (13 child reports came back); every figure and quote they supplied was re-checked mechanically against paper.cols.txt (see Quotes). Review layer: three sonnet focused passes and one fable generic pass (see Review)
Scripts added scripts/report_ads_txt.mjs (+ -output.txt), scripts/adstxt_fulltext_probe.mjs (the first, wider probe; superseded by the report), scripts/adstxt_quotecheck.mjs (+ -output.txt), scripts/adstxt_external_checks.sh (+ -output.txt), scripts/bib_additions_ads_txt.bib, scripts/build_provenance_ads_txt.py, scripts/provenance_ads_txt_prose.txt
Guards run before publication check_wrap.mjs (OK), check_tables.mjs (OK), check_attributions.mjs table mode (0 matches — the page cites in prose) and –prose mode (5 checked, 4 SUSPECT, all false positives: the words Exchange, CPM, CPM, Since precede a citekey and are not names), check_page_numbers.mjs windowed on Use in Publications against the report output (OK), and whole-page against the concatenation of report + quote-check + external-check outputs (OK after the live sellers.json figures were moved into the external-check script)
Write path node scripts/dw.mjs put (JSON-RPC) with –if-rev on every save
Accidental exposure None. Credentials stayed in .env. Unauthenticated fetches only: IAB Tech Lab, GitHub API, Prebid docs, Google/PubMatic/OpenX sellers.json, arXiv, EasyList, the papers' artifact URLs

Scope and judgement calls

Decision Why What a reasonable person might have done instead
New page privacy:ads_txt rather than a section on cookie_syncing That page is about detecting identifier exchange. This one is about who is authorised or observed to sell; the two share two papers ([1Cook, 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)], [2Musa, Maaz Bin; Nithyanand, Rishab (2022): "ATOM: Ad-network Tomography", in: Proceedings on Privacy Enhancing Technologies. (DOI)]) and nothing else. A section would have had to explain ads.txt inside a page about cookies Put header bidding on the syncing page (it already mentions Prebid's sync defaults) and ads.txt under existing_datasets. Rejected: the reader asking “who sells this inventory” would find neither
Four relationship kinds (declared / confirmed / observed / paid) as the page's organising decision Every number in this literature is one of the first three, and the papers do not say which. It is the analogue of “which string counts as an identifier” on the syncing page Organise by file (ads.txt page, sellers.json page, HB page). Rejected: the three are only interesting joined
Cited the IEEE S&P 2024 dark-pooling paper from arXiv although it is not in the corpus It is the paper every later ads.txt paper cites, it coined the term, and it is the only SupplyChain-object measurement. PASS D of the report shows why it is absent: in the venue index, screening label all-false, no full text. The page says so twice and excludes it from every count Leave it out because the corpus did. Rejected: a fresh student would be sent to a 2019 adoption study as the state of the art
Cited the arXiv v3 (Oct 2023) text, not the S&P camera-ready No corpus PDF; IEEE Xplore not fetched. Figures quoted (79K pools, 20.5% SCO, 46.1%/0.1%, 95.3%/62.6%, 470/39) are from v3 and the page's bibliography entry says so in its note Fetch Xplore. Not attempted; a difference between v3 and camera-ready would be a reviewer finding
Forced in two below-threshold papers [3Papadopoulos, Panagiotis; Rodríguez, Pablo Rodríguez; Kourtellis, Nicolas; Laoutaris, Nikolaos (2017): "If you are not paying for it, you are the product: how much do advertisers pay to reach you?", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] (4 core mentions, 81 “RTB”) is where price-as-observable starts; [4Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2022): "Leveraging Google's Publisher-Specific IDs to Detect Website Administration", in: Proceedings of the ACM Web Conference. (DOI)] (3 mentions) is the ownership method every pooling paper borrows Leave both out and keep the threshold pure. Rejected: the method table would date the RTB-price family from 2018 and the pooling row would have no ownership method
RTB win-notification prices counted as a family on this page Same observable (what an advertiser paid for this browser), earlier mechanism. Dated historical Send it to the syncing page (where the same two papers are the passive family). They appear there for identifier sharing, here for price
Statuses dated 2026-09-02 and argued from named papers + spec/vendor checks, not from a trend 16 papers cannot carry a trend; 2025–2026 is provisional Publish per-year adoption of each method. Rejected
No page-level “adoption rate of ads.txt” The 2019 (20% of a top list) and 2023 (456,971 of ~7M) figures have different units; the page says so instead of reconciling them Back-calculate a 2023 percentage (456,971 / 7,341,165 ≈ 6.2%). Rejected — the paper does not publish that ratio and its ~7M and 7,341,165 denominators are two different crawls
Industry adoption trackers not cited Pixalate and similar publish ads.txt adoption percentages without a stated denominator or method Cite one with a caveat. Rejected: it is exactly the SEO-listicle failure mode the site's rules name
Johnson & Neumann (2024 working paper) footnoted, not cited Not peer-reviewed; used only as an existence proof that Prebid configuration is an observable in economics Add a bib entry. Rejected for a working paper
Live check of Google's sellers.json put on the page It is the one number on the page a reader can re-derive in a minute, and it dates the 2023 confidentiality figure Leave live data off a corpus page. Kept, with the fetch script and its output below
No ~~DISCUSSION~~ on this provenance page Established default

Report script

scripts/report_ads_txt.mjs in the wiki workdir. Deterministic, ~25 s (scans 5,869 full texts). Re-run with:

node scripts/report_ads_txt.mjs > scripts/report_ads_txt-output.txt

Four passes: (A) whitespace-collapsed full-text probe, per term and per paper; (B) hand labels for every candidate, with residues; (C) extraction fields on the curated set; (D) the venue-index / screening-label check for the missing IEEE S&P 2024 paper. Every figure in the page's Use in Publications section is in this output; check_page_numbers.mjs confirms it.

Probe terms

The regexes are given here rather than in a table because a DokuWiki table cell cannot hold a pipe. Whitespace is collapsed and end-of-line hyphenation joined before matching. “RTB” and “dark pool” are context terms, not candidate-set terms.

ads.txt                       /\bads\.txt\b/gi
app-ads.txt                   /\bapp-ads\.txt\b/gi
sellers.json                  /\bsellers\.json\b/gi
header bidding                /\bheader[\s-]*bidding\b/gi
prebid                        /\bprebid(?:\.js)?\b/gi
openrtb                       /\bopenrtb\b/gi
schain / supply chain object  /\b(?:schain|supply[\s-]*chain[\s-]*object)\b/gi
buyers.json                   /\bbuyers\.json\b/gi
ads.cert                      /\bads\.cert\b/gi
nURL / win notice             /\bnurls?\b|\bwin[\s-]*notice\b|\bprice[\s-]*notification/gi
real-time bidding (incl. RTB) /\breal[\s-]*time[\s-]*bidding\b/gi  +  /\bRTB\b/g   (phrase case-insensitive; acronym case-sensitive because "rtb" appears inside URLs)
dark pool(ing)                /\bdark[\s-]*pool/gi
CORE = the first seven; candidate threshold = CORE mentions summed >= 5

Queries, with their denominators

# Query Population / denominator Result On the page?
Q1 Papers with a readable paper.cols.txt all 5,869 yes — the full-text denominator (not 5,859: ten directories have text but no extraction record)
Q2 Each probe term, papers with ≥1 and ≥5 occurrences 5,869 ads.txt 12/8; app-ads.txt 3/1; sellers.json 5/4; header bidding 24/7; prebid 11/6; openrtb 13/2; schain 0/0; buyers.json 0/0; ads.cert 2/0; nURL 4/2; RTB 73/21; dark pool 8/4 yes, reach table
Q3 Any CORE term ≥1 5,869 41 (0.7%) yes
Q4 CORE terms summed ≥5 5,869 18 (0.3%) yes — the candidate threshold
Q5 Q3 by year per-year full-text counts 2010–2016: 0 of 1,047; 2017 1; 2018 2; 2019 4; 2020 5; 2021 3; 2022 8; 2023 4; 2024 6; 2025 7; 2026 1 yes, with 2025–2026 starred
Q6 Q3 and Q4 by venue that venue's full-text papers PETS 12/5 of 510; WWW 13/5 of 843; IMC 9/5 of 637; CCS 3/2 of 989; NDSS 1/1 of 701; IEEE-SP 1/0 of 779; USENIX 2/0 of 1,410 yes
Q7 Candidate set = Q4 ∪ 2 forced-in 20; labels: 16 measures, 1 related, 3 cites, 0 unlabelled, 0 dead labels yes
Q8 Below-threshold residue (1–4 CORE mentions, not candidates) Q3 ∖ Q7 21, of which 3 were read (all passing mentions) and 18 were not yes (“three … happened to be read; the other 18 were not”)
Q9 Measuring set by family 16 hb-instrument 7; adstxt-instrument 3; rtb-price 2; adstxt-object 2; hb-object 1; hb-sampling 1 yes
Q10 First / most recent year per family 16 rtb-price 2017–2018; adstxt-object 2019–2025; hb-object 2019; hb-instrument 2020–2025; adstxt-instrument 2023–2025; hb-sampling 2026 yes, method table
Q11 crawlConfig fired 16 13 yes
Q12 statefulness / consentAction / interactionDepth / headless 13 stateless 6, stateful 5, both 1, not-stated 1 · no-interaction 5, not-stated 3, accept-all 2, accept-and-reject 1, cmp-specific 1, not-applicable 1 · landing+subpages 4, landing-only 4, single-target 3, not-stated 2 · headless not-stated 10, headful 2, headless 1 yes, sentinels named as such
Q13 temporal.mode (paper-counted, multi-valued) 16 live-crawl 14, active-probing 4, passive-collection 2, existing-dataset 2, web-archive 1 no (page keeps the 13/3 split only)
Q14 artifacts.availability 16 public 10, none-mentioned 4, promised-not-yet-available 2 yes
Q15 population.sourceList, folded by the alias rule below 16 Alexa 8, Tranco 5, MediaBias/FactCheck 3, NextDNS 2, Prolific 1, BuiltWith 1; 30 unmapped strings (printed in the output) yes, with the residue count
Q16 vantage.locations folded through geo.mjs 16 11 state a location; United States 6, Europe 3, Germany 3, Spain 2, then singletons; 1 unmapped (“same country”) yes (11 of 16; 6 US)
Q17 detection[].prevalence on tuples naming an observable 16 printed per paper in the output; the page quotes the papers' own denominators, not this field indirectly
Q18 Authors' own artifact links (belongsToAuthors) 16 11 papers flag at least one; all URLs re-fetched (see External) yes, tools table
Q19 The S&P 2024 paper: venue index / screening label / extraction / full text 1 present / all fields false or empty / absent / absent yes, twice

Hand labels for the 20 candidates

Assigned by reading the matched passages (child agents read the full text; the reasons below are what the label rests on).

Paper Label Reason
[5Bashir, Muhammad Ahmad; Arshad, Sajjad; Kirda, Engin; Robertson, William K.; Wilson, Christo (2019): "A Longitudinal Analysis of the ads.txt Standard", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] IMC 2019 adstxt-object 26 crawls of /ads.txt; adoption, errors, compliance against 135M inclusion chains
[6Papadogiannakis, Emmanouil; Kourtellis, Nicolas; Papadopoulos, Panagiotis; Markatos, Evangelos P. (2025): "Welcome to the Dark Side: Analyzing the Revenue Flows of Fraud in the Online Ad Ecosystem", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2025 adstxt-object ads.txt from ~7M Tranco domains and sellers.json from 2,682; pooling and hidden intermediaries are the object
[7Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2023): "Who Funds Misinformation? A Systematic Analysis of the Ad-related Profit Routines of Fake News Sites", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2023 adstxt-instrument ads.txt stored per visit; DIRECT lines and sellers.json used to say who monetises fake-news sites
[8Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Kourtellis, Nicolas; Markatos, Evangelos P. (2025): "Before & After: The Effect of EU's 2022 Code of Practice on Disinformation", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2025 adstxt-instrument ads.txtsellers.json before/after the 2022 Code of Practice
[9Sheaib, Hussein; Feldmann, Anja; Dao, Ha (2025): "Unmasking the Shadows: A Cross-Country Study of Online Tracking in Illegal Movie Streaming Services", in: Proceedings on Privacy Enhancing Technologies. (DOI)] PoPETs 2025 adstxt-instrument one subsection: /ads.txt of 383 piracy sites, verified against 8 exchanges' sellers.json
[10Pachilakis, Michalis; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2019): "No More Chasing Waterfalls: A Measurement Study of the Header Bidding Ad-Ecosystem", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] IMC 2019 hb-object HBDetector; adoption, partners, latency, prices
[1Cook, 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)] PoPETs 2020 hb-instrument getBidResponses() on 25 sites; bids vs persona → tracker–advertiser inference
[11Zeng, Eric; McAmis, Rachel; Kohno, Tadayoshi; Roesner, Franziska (2022): "What Factors Affect Targeting and Bids in Online Advertising? A Field Measurement Study", in: Proceedings of the ACM Internet Measurement Conference, pp. 210-229. (DOI)] IMC 2022 hb-instrument extension in 286 users' browsers; bids vs demographics/context
[12Zhang, Jiang; Psounis, Konstantinos; Haroon, Muhammad; Shafiq, Zubair (2022): "HARPO: Learning to Subvert Online Behavioral Advertising", in: Proceedings of the Network and Distributed System Security Symposium. (Link)] NDSS 2022 hb-instrument bids on 3 HB sites as the ad-targeting signal HARPO distorts
[2Musa, Maaz Bin; Nithyanand, Rishab (2022): "ATOM: Ad-network Tomography", in: Proceedings on Privacy Enhancing Technologies. (DOI)] PoPETs 2022 hb-instrument bids recorded incidentally; used to validate 1 of 11 inferred relationships. Borderline — kept because the paper's own text discusses HB's declining visibility
[13Iqbal, Umar; Bahrami, Pouneh Nikkhah; Trimananda, Rahmadi; Cui, Hao; Gamero-Garrido, Alexander; Dubois, Daniel J.; Choffnes, David R.; Markopoulou, Athina; Roesner, Franziska; Shafiq, Zubair (2023): "Tracking, Profiling, and Ad Targeting in the Alexa Echo Smart Speaker Ecosystem", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] IMC 2023 hb-instrument OpenWPM extended to probe prebid.js version; 200 sites; bids vs smart-speaker persona
[14Liu, Zengrui; Iqbal, Umar; Saxena, Nitesh (2024): "Opted Out, Yet Tracked: Are Regulations Enough to Protect Your Privacy?", in: Proceedings on Privacy Enhancing Technologies. (DOI)] PoPETs 2024 hb-instrument 5,421 Prebid sites found, 352 audited; bids vs opt-out under GDPR/CCPA
[15Liu, Zengrui; Dani, Jimmy; Cao, Yinzhi; Wu, Shujiang; Saxena, Nitesh (2025): "The First Early Evidence of the Use of Browser Fingerprinting for Online Tracking", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2025 hb-instrument pbjs.getBidResponses(); bids vs spoofed fingerprint
[16Lukić, Karlo; Papadopoulos, Lazaros (2026): "Privacy vs. Profit: The Impact of Google's Manifest Version 3 (MV3) Update on Ad Blocker Effectiveness", in: Proceedings on Privacy Enhancing Technologies. (Link)] PoPETs 2026 hb-sampling BuiltWith Prebid list to choose 1,000 sites; Prebid-aware extension counts ads; no bid values
[3Papadopoulos, Panagiotis; Rodríguez, Pablo Rodríguez; Kourtellis, Nicolas; Laoutaris, Nikolaos (2017): "If you are not paying for it, you are the product: how much do advertisers pay to reach you?", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] IMC 2017 (forced) rtb-price nURL prices in 1,594 users' proxied traffic, 2015
[17Papadopoulos, Panagiotis; Kourtellis, Nicolas; Markatos, Evangelos P. (2018): "The Cost of Digital Advertisement: Comparing User and Advertiser Views", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2018 rtb-price same method, 1,270 users; 44,997 charge prices
[4Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2022): "Leveraging Google's Publisher-Specific IDs to Detect Website Administration", in: Proceedings of the ACM Web Conference. (DOI)] WWW 2022 (forced) related Google publisher IDs from page source; no ads.txt at all (2 mentions, both in related work)
[18Poteat, Tara; Li, Frank (2021): "Who You Gonna Call? An Empirical Evaluation of Website security.txt Deployment", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] IMC 2021 cites ads.txt as the robots.txt-like precedent for security.txt; incidental ads.txt files were discarded
Sun et al., CCS 2021 (mobile ad fraud via invalid traffic; not cited on the page) cites ads.txt / app-ads.txt in background only; measurement is industrial bid logs
Zhu et al., CCS 2024 (collusion-based ad attribution laundering; not cited on the page) cites one anecdotal app-ads.txt look-up in a case study; sellers.json never mentioned

The three below-threshold papers that were read: Setting the Bar Low (PoPETs 2022, 3 mentions, all inside reference titles), Apophanies or Epiphanies (WWW 2020, 2 mentions, header bidding named as a crawl confound), Johnny Still Can't Opt-out (PoPETs 2024, 4 mentions, RTB as background and “prebid” inside a hostname). None changes the set.

Folding, and its residue

  • Population source lists (Q15): alias rule Alexa /alexa/i, Tranco /tranco/i, MediaBias/FactCheck /mbfc|mediabias|media bias/i, NextDNS /nextdns/i, Prolific, BuiltWith, Wayback / archive. Paper-counted. 30 strings unmapped, all printed in the output below — mostly “custom …” persona sets, the AOL query log, CJR / Golbeck / Zhou lists, Science Feedback, Reddit's piracy megathread, WHOIS-derived sets. None of them is a top list, so the mapped counts are not undercounts of the top lists; the residue is the long tail the page does not rank.
  • Vantage locations (Q16): geo.mjs. 1 unmapped: “same country” ([3Papadopoulos, Panagiotis; Rodríguez, Pablo Rodríguez; Kourtellis, Nicolas; Laoutaris, Nikolaos (2017): "If you are not paying for it, you are the product: how much do advertisers pay to reach you?", in: Proceedings of the ACM Internet Measurement Conference. (DOI)]; the paper says Spain elsewhere and the folded table has Spain 2 from its vantage tuples that do say so).
  • Ad-system names are not folded on this page — the page ranks no ad systems. Where a paper's ranking is quoted (Google 80.8%, AppNexus 52.5%, Index Exchange 49%) it is the paper's own, on the paper's own domain strings.
  • Term probe — the regexes above are the fold. Width decisions: RTB case-sensitive to avoid rtb in URLs, but the phrase real-time bidding case-insensitive — the first version applied one case-sensitive flag to the whole alternation and undercounted the phrase (64 papers instead of 73; found by the figures reviewer); prebid catches Prebid.js and prebid-server; schain also catches “supply chain object” with any spacing. Nothing was widened after the first run, because the candidate set is hand-labelled and the labels absorbed the false positives.

Quotes and figures spot-checked against the papers

scripts/adstxt_quotecheck.mjs looks for every quoted phrase and every paper-sourced figure on the page in the cited paper's own paper.cols.txt (whitespace collapsed, ligatures and curly punctuation normalised), then falls back to paper.norm.txt, then to a proximity test — every token of the phrase, in order, each as a whole token, with at most 120 characters (one interleaved column fragment) between consecutive tokens. The first version of that test allowed any order inside a 500-character window; the figures reviewer mutation-tested it and 82 of 509 ±1 / ±10% numeric mutations still passed, so it was tightened before publication of this revision (see Review). The S&P 2024 paper is checked against the arXiv v3 text in out/vekaria2024_arxiv.txt.

Result on the final run: 170 of 170 pass — 146 verbatim in .cols, 0 rescued by .norm, 24 by proximity only. (The first revision reported 167 of 167 with the weaker any-order test.) The 27 are two-column splices in the repaired text (e.g. “the sustainability of KASHF takes a hit as publish[…other column…]ers migrate towards server side Header Bidding”); each was read in context and is a genuine quote. Two agent-supplied wordings did not check out as given and were replaced: a Cook et al. footnote that the child agent had de-spliced by hand (it exists, split across columns — “dependent on client-side implementa- … tion of prebid.js, which would not work for server-side imple-”), and a URL the text renders with a stray space (https://priv sec-research.github.io/alexaechos). Neither is on the page as a quotation.

What this does not cover. It checks presence, not context: a number that appears in the paper for a different reason would pass. The figures most exposed to that are the ones quoted from tables rather than sentences ([19Vekaria, Yash; Nithyanand, Rishab; Shafiq, Zubair (2024): "The Inventory is Dark and Full of Misinformation: Understanding Ad Inventory Pooling in the Ad-Tech Supply Chain", in: Proceedings of the IEEE Symposium on Security and Privacy. Not in the site's publication corpus (screened out at abstract stage); cited from the arXiv version 2210.06654v3 (DOI)]'s 46.1%/0.1% and 95.3%/62.6%; [17Papadopoulos, Panagiotis; Kourtellis, Nicolas; Markatos, Evangelos P. (2018): "The Cost of Digital Advertisement: Comparing User and Advertiser Views", in: Proceedings of the ACM Web Conference. (DOI)]'s 67.7%), and those were read in context by hand. The live sellers.json numbers are not paper figures and are covered by the external-check output instead.

adstxt_quotecheck-output.txt
PASS  cols      IMC/2019  «we performed 26 crawls»
PASS  cols      IMC/2019  «Overall, we performed 26 crawls»
PASS  cols      IMC/2019  «January 15, 2018»
PASS  cols      IMC/2019  «April 1, 2019»
PASS  cols      IMC/2019  «100K websites on January 15, 2018 to 240K on April 1, 2019»
PASS  cols      IMC/2019  «12.7% of websites adopting the standard, which grew steadily to 19.7%»
PASS  cols      IMC/2019  «adoption has increased from 46.6% to 62.3%»
PASS  cols      IMC/2019  «10% of the publishers have»
PASS  cols      IMC/2019  «invalid record»
PASS  cols      IMC/2019  «2,381 unique seller domains»
PASS  cols      IMC/2019  «1,035 of the seller domains»
PASS  cols      IMC/2019  «56.4% of the seller domains in the ads.txt files contained syntactic errors»
PASS  proximity IMC/2019  «distributed by 233 publishers»
PASS  cols      IMC/2019  «median publisher listed 17 sellers»
PASS  cols      IMC/2019  «top 20% of publishers listed»
PASS  cols      IMC/2019  «42 unique sellers»
PASS  cols      IMC/2019  «135M RTB ad inclusion chains»
PASS  cols      IMC/2019  «rose from 46% in April 2018 to 77% in April 2019»
PASS  cols      IMC/2019  «within 2-3 hours by parallelizing across a 16-node cluster»
PASS  proximity IMC/2019  «attempted to become a publisher in order to conduct controlled experiments»
PASS  cols      IMC/2019  «is not perfect. We manually mapped 101 domains to 28 parent domains»
PASS  cols      IMC/2019  «A separate study is required»
PASS  proximity IMC/2019  «only 59% of the publishers in our dataset whose impression inventory moved through»
PASS  cols      IMC/2019  «https://personalization.ccs.neu.edu/Projects/Adstxt/»
PASS  cols      IMC/2019  «https://github.com/sajjadium/DeepCrawling»
PASS  cols      IMC/2019  «35,000»
PASS  cols      IMC/2019  «14.28%»
PASS  cols      IMC/2019  «20-23% of the top 5k websites»
PASS  cols      IMC/2019  «798,629»
PASS  cols      IMC/2019  «241,392»
PASS  cols      IMC/2019  «84 unique Demand Partners»
PASS  cols      IMC/2019  «more than 80% of publishers utilizing it»
PASS  cols      IMC/2019  «Server-Side HB currently comprises the larger portion of the market with 48%»
PASS  cols      IMC/2019  «Hybrid HB is second with 34.7%, and the Client-Side HB is third with 17.3%»
PASS  proximity IMC/2019  «median latency is about 600ms»
PASS  proximity IMC/2019  «4% of websites observe more than 5 seconds»
PASS  proximity IMC/2019  «median cost of 0.031 CPM»
PASS  cols      IMC/2019  «period of 34 days»
PASS  cols      IMC/2019  «https://www.github.com/mipach/HBDetector»
PASS  cols      IMC/2019  «clean slate instance before visiting each website»
PASS  cols      PETS/2020  «getBidResponses»
PASS  cols      PETS/2020  «make up over 22% of all bids»
PASS  cols      PETS/2020  «accuracy ranges from 75% for AppNexus to 83% for IX»
PASS  proximity PETS/2020  «11 potential server-side advertiser-tracker relationships that are not validated using client-side cookie syncing»
PASS  proximity PETS/2020  «we are able to validate 7»
PASS  cols      PETS/2020  «25 most popular domains»
PASS  cols      PETS/2020  «prefer server-side implementations due to performance reasons»
PASS  cols      PETS/2020  «Alexa top 10K websites»
PASS  cols      IMC/2022  «286»
PASS  cols      IMC/2022  «finding 703 sites»
PASS  cols      IMC/2022  «December 10-21, 2021»
PASS  cols      IMC/2022  «we collected 41,032 ads»
PASS  cols      IMC/2022  «25,764 of ads where a header bidding auction took place»
PASS  cols      IMC/2022  «7,117»
PASS  cols      IMC/2022  «mean value of $5.47 and median of $4.16»
PASS  cols      IMC/2022  «getBidResponses()»
PASS  cols      IMC/2022  «getAllWinningBids()»
PASS  cols      IMC/2022  «getAllPrebidWinningBids()»
PASS  cols      IMC/2022  «1-2 weeks before Christmas»
PASS  cols      NDSS/2022  «bid values by 6.28»
PASS  cols      NDSS/2022  «www.speedtest.net, www.kompas.com, and www.cnn.com»
PASS  cols      NDSS/2022  «https://github.com/bitzj2015/Harpo-NDSS22»
PASS  cols      PETS/2022  «takes a hit as publish»
PASS  cols      PETS/2022  «ers migrate towards server side Header Bidding»
PASS  cols      PETS/2022  «validate the relationship between Alphabet and Pubmatic»
PASS  cols      PETS/2022  «nine of our 11 inferred data sharing relationships»
PASS  cols      PETS/2022  «disabled tracking protection»
PASS  cols      IMC/2023  «as much as 30»
PASS  cols      IMC/2023  «stop the crawl as soon as we identify 200 prebid supported websites»
PASS  cols      IMC/2023  «probe for prebid.js version»
PASS  cols      IMC/2023  «sec-research.github.io/alexaechos»
PASS  cols      WWW/2023  «198 fake news websites and 627 real news websites serving a valid ads.txt»
PASS  cols      WWW/2023  «13 Dec 2021»
PASS  cols      WWW/2023  «262 websites now serve ads.txt»
PASS  cols      WWW/2023  «January 31, 2023»
PASS  cols      WWW/2023  «80.8% of fake news websites have a direct business relationship with google.com, 49% of fake news websites with indexexchange.com, and 52.5% with appnexus.com»
PASS  cols      WWW/2023  «direct business relationships with 27 ad systems, while surprisingly, real news websites do so with 41 systems»
PASS  cols      WWW/2023  «12 Jan 2022»
PASS  cols      WWW/2023  «74.3 - 80.8%»
PASS  cols      WWW/2023  «1,044»
PASS  cols      WWW/2023  «1,368»
PASS  proximity WWW/2023  «https://gitlab.com/papamano/scrape-titan»
PASS  proximity WWW/2023  «https://gitlab.com/papamano/who-funds-misinformation»
PASS  cols      PETS/2024  «5421 websites are employing prebid.js with the standard API label pbjs»
PASS  cols      PETS/2024  «i.e., 352»
PASS  cols      PETS/2024  «do not consider personalized custom API labels (i.e., other than pbjs)»
PASS  cols      PETS/2024  «calling the getBidResponses method»
PASS  cols      PETS/2024  «calling the requestBids method»
PASS  cols      PETS/2024  «Frankfurt»
PASS  cols      PETS/2024  «Northern California»
PASS  cols      PETS/2024  «nine times»
PASS  cols      PETS/2024  «Amazon Transparent Ad Marketplace»
PASS  cols      PETS/2024  «Exchange Bidding Dynamic Allocation»
PASS  proximity PETS/2024  «most personas receive higher bids compared to control when users opt-out»
PASS  cols      WWW/2025  «more than 7M distinct domains during February-March 2023»
PASS  proximity WWW/2025  «ads.txt files of 456,971 domains and extracted 81,985,768 valid entries»
PASS  proximity WWW/2025  «591,546 distinct DIRECT publisher identifiers»
PASS  cols      WWW/2025  «we find 185,535 distinct pools»
PASS  proximity WWW/2025  «nearly 15,000 distinct dark pools»
PASS  proximity WWW/2025  «59.6% of pools with at least one misinformation website are dark pools»
PASS  cols      WWW/2025  «rises to an astounding 82%»
PASS  proximity WWW/2025  «92% of websites that serve an ads.txt file contain at least one DIRECT publisher ID issued by Google»
PASS  cols      WWW/2025  «7,341,165 domains on March 24, 2023, and detected sellers.json files in 2,682 domains»
PASS  cols      WWW/2025  «over 34 million sellers.json entries»
PASS  cols      WWW/2025  «over 26K identifiers issued by 421 distinct advertising networks»
PASS  cols      WWW/2025  «issued 1,277,156 identifiers, 75.53% of which are confidential»
PASS  cols      WWW/2025  «33 ad networks that have been falsely registered as publishers»
PASS  cols      WWW/2025  «167 fake news websites, 19 piracy websites and 4 illegal websites»
PASS  cols      WWW/2025  «the direct identifier 100141 is»
PASS  cols      WWW/2025  «sued by conversantmedia.com is found in 42,412 distinct websites»
PASS  cols      WWW/2025  «we find 28 such domains»
PASS  cols      WWW/2025  «owner data for 3,981 websites»
PASS  proximity WWW/2025  «as-is and only change the user-agent header so that we are not blocked by websites»
PASS  cols      WWW/2025  «only reach each domain once per month»
PASS  cols      WWW/2025  «an indication of misuse»
PASS  cols      WWW/2025  «1,163»
PASS  cols      WWW/2025  «1,395»
PASS  proximity WWW/2025  «https://gitlab.com/papamano/welcome-to-the-dark-side»
PASS  cols      WWW/2025  «https://adsparency.ics.forth.gr/»
PASS  cols      WWW/2025  «each individual file of the above two files may provide fake information, their intersection provides the truth»
PASS  cols      WWW/2025  «approximately 2,500 misinformation websites on January 2024 and download 226,659 ads.txt entries coming from 1,132 misinformation websites»
PASS  cols      WWW/2025  «461 misinformation websites with an ads.txt file in both datasets»
PASS  cols      WWW/2025  «dropping 51%, 43%, and 37%»
PASS  cols      WWW/2025  «985 (87%) misinformation websites with at least one substantiated business relationship»
PASS  cols      WWW/2025  «over 8500 lines that contains verified DIRECT entries for 196 distinct ad networks»
PASS  cols      WWW/2025  «December 2021»
PASS  proximity PETS/2025  «35 out of 383 IMSS sites (9.1%) serving a valid ads.txt file»
PASS  cols      PETS/2025  «77.1% of IMSS sites (27 out of 35)»
PASS  proximity PETS/2025  «total of 188 direct seller entries, five entries»
PASS  proximity PETS/2025  «169 IDs are not found in the sellers.json, and 418 IDs have a domain mismatch»
PASS  cols      PETS/2025  «remaining unique direct 587 entries»
PASS  cols      PETS/2025  «August 2024»
PASS  proximity PETS/2025  «https://doi.org/10.17617/3.STVMDI»
PASS  cols      WWW/2025  «pbjs.getBidResponses()»
PASS  cols      WWW/2025  «Alexa top 10,000 websites»
PASS  cols      WWW/2025  «reduces this number to 6,345»
PASS  cols      WWW/2025  «36,000»
PASS  proximity PETS/2026  «BuiltWith on January 9, 2024, we selected the top 1,000 most popular websites»
PASS  cols      PETS/2026  «924 of these websites»
PASS  cols      PETS/2026  «Azerion Ad Expert»
PASS  cols      IMC/2017  «1594»
PASS  cols      IMC/2017  «373M HTTP requests»
PASS  cols      IMC/2017  «entire year of 2015»
PASS  cols      IMC/2017  «26%»
PASS  cols      IMC/2017  «1.7»
PASS  cols      IMC/2017  «median user costs»
PASS  cols      WWW/2018  «1270 users»
PASS  cols      WWW/2018  «44997 cleartext and encrypted charge prices»
PASS  proximity WWW/2018  «67.7% of the overall RTB auctions»
PASS  cols      WWW/2022  «pub-[0-9]{9,}»
PASS  cols      WWW/2022  «962K websites of the Tranco list»
PASS  cols      WWW/2022  «we find that ∼10% of the most popular web»
PASS  cols      WWW/2022  «sites monetize their content through an AdSense account»
PASS  cols      WWW/2022  «2,369 communities»
PASS  cols      CCS/2021  «app-ads»
PASS  cols      CCS/2024  «app-ads.txt»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «crawled and processed ads.txt and sellers.json files in February 2022»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «over 98K relationships from ads.txt files and 2.4M relationships from sellers.json files»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «we observed 79K unique pools»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «Confidential sellers 0.1% 46.1%»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «Non-unique seller IDs 62.6% 95.3%»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «only 20.5% (3796) bid requests have included SCOs, all of which comprised only a single seller node»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «Of the 470 AdXs found to support misinformation websites»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «39 (8.3%) AdXs delisted at least one misinformation website by February 2022»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «dropped ∼87% of the total publisher domains»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «669 misinformation websites»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «251 websites that had an ads.txt file»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «nearly 20% more likely to attract ads from reputable brands»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «TABLE 6: Pools from D static using IDs of unknown owners»
PASS  cols      out/vekaria2024_arxiv.txt (arXiv 2210.06654v3, NOT in corpus)  «Tranco top-100K domains which contained an ads.txt file (C100K)»
 
170 PASS (verbatim in .cols 146, verbatim in .norm 0, proximity only 24), 0 FAIL of 170

External sources

Everything non-corpus the page leans on, how it was verified, and what was rejected. The fetch script scripts/adstxt_external_checks.sh re-runs the machine-checkable part; its output is below.

Source How verified Verdict
ads.txt 1.1 specification (IAB Tech Lab) PDF fetched and text-extracted with pypdf; “ads.txt Version 1.1 Released August 2022”; changelog 1.0 2017-06-27 → 1.0.1 → 1.0.2 (March 2019, app-ads.txt differentiation) → 1.0.3 (March 2021, INVENTORYPARTNERDOMAIN) → 1.1 (July 2022 final: OWNERDOMAIN, MANAGERDOMAIN). Root-domain and redirect rules quoted from §3.1. iabtechlab.com/standards/ads-txt/ lists 1.1 as current Accepted; the page's version claims and the redirect rule come from here
sellers.json 1.0 (IAB Tech Lab) PDF fetched; “1.0 July 2019 First Version”; /sellers.json path; seller_type enum; is_confidential semantics; “It is invalid for a seller_id to represent multiple entities” Accepted
SupplyChain object 1.0 github.com/InteractiveAdvertisingBureau/openrtb/blob/master/supplychainobject.md: version “1.0”; asi, sid, hp required; name/domain optional and “should NOT be included if it exists in the advertising system's sellers.json file”. IAB page dates finalisation 2019-07-31 Accepted
OpenRTB version iabtechlab.com/standards/openrtb/: latest 2.x is 2.6-202309; history on GitHub Accepted; not load-bearing on the page
app-ads.txt iabtechlab.com/standards/app-ads-txt/ gives only the Nov 2018 beta date; the ads.txt 1.1 changelog dates the app-ads.txt differentiation to March 2019, as does [5Bashir, Muhammad Ahmad; Arshad, Sajjad; Kirda, Engin; Robertson, William K.; Wilson, Christo (2019): "A Longitudinal Analysis of the ads.txt Standard", in: Proceedings of the ACM Internet Measurement Conference. (DOI)] Accepted with both sources; page says “March 2019” via the paper
Prebid.js: getBidResponses fields docs.prebid.org/dev-docs/publisher-api-reference/getBidResponses.html Accepted
Prebid.js: globalVarName / defineGlobal raw.githubusercontent.com/prebid/Prebid.js/master/README.md build-options table: default pbjs; “If false, do not set a global variable” Accepted; this is what makes [14Liu, Zengrui; Iqbal, Umar; Saxena, Nitesh (2024): "Opted Out, Yet Tracked: Are Regulations Enough to Protect Your Privacy?", in: Proceedings on Privacy Enhancing Technologies. (DOI)]'s 5,421 a lower bound
Prebid Server docs.prebid.org/overview/intro.html: “Use Prebid Server to do the processing rather than the client browser”. The first revision cited prebid-server/overview/prebid-server-overview.html with a paraphrase (“bid requests from the server rather than the browser”) that is not on that page — a WebFetch summary was quoted as if it were the source. Caught by the external-currency reviewer; corrected Accepted after correction
Prebid.js latest release GitHub API /releases/latest: tag 11.32.0, published 2026-09-01, prerelease: false. The release name reads “Prebid 11.31.1 Release” — a mismatch in Prebid's own metadata, not a transcription error here Not on the page (a version number would be stale in a week); recorded
EasyList blocks Prebid easylist.txt fetched: 68 lines match /prebid/i (e.g. .prebid-bundle.js$script); EasyPrivacy 7 Accepted — supports “Prebid endpoints are on EasyList”
Google sellers.json (live) realtimebidding.google.com/sellers.json answers HTTP 302storage.googleapis.com/adx-rtb-dictionaries/sellers.json (200, 108,724,970 bytes). The first revision of this page and of the content page said the canonical URL “intermittently returns an empty 200 body”; that was this run's own curl without -L recording the 0-byte redirect body. The external-currency reviewer reproduced 12 of 12 clean 302s and noticed the script never captured the status code; the script now prints the status chain and follows the redirect. Parsed: 972,929 sellers, 690,433 confidential (70.96%), 972,347 PUBLISHER / 582 BOTH, 141,915 non-confidential entries with no domain, ext.notice “This file is a beta and is unverified.” Accepted and put on the page as the 2026 companion to the paper's March-2023 75.53%, with the redirect stated correctly. The seller count fell from 1,277,156 to 972,929; the page does not interpret that
PubMatic / OpenX sellers.json 200 (937,874 B) / 403 then 200 (1,399,841 B) on a later fetch Recorded only
IAB adstxtcrawler GitHub API: created 2017-05-26, pushed 2024-06-06, Python, no licence field, not archived Accepted
Bashir dataset page personalization.ccs.neu.edu/Projects/Adstxt/ 200; one archive adstxt_2019_dataset.tar.xz; page text says compiled 2024-05-28 Accepted
Vekaria code github.com/Yash-Vekaria/ad-inventory-fraud-measurement: MIT, created 2022-10-13, pushed 2024-05-18 Accepted
Papadogiannakis GitLab repos; AdSparency all five repos 200; adsparency.ics.forth.gr 200 Accepted
Sheaib dataset doi.org/10.17617/3.STVMDIedmond.mpg.de 200 Accepted
Iqbal code page; Aziz repo 200; MIT, pushed 2024-07-09 Accepted (Aziz not on the page)
HBDetector github.com/mipach/HBDetector 404; GitHub API “Not Found”; web search finds no relocation. Maintained equivalents: prebid/header-bidder-expert (Apache-2.0, last pushed 2022-09-12) and prebid/professor-prebid (Apache-2.0, pushed 2026-02-19) Dead link recorded on the page
HARPO code github.com/bitzj2015/Harpo-NDSS22 404 Dead link recorded
DeepCrawling redirects to github.com/sajjadium/Crawlium (MIT, pushed 2023-10-03) Move recorded
ATOM archive vitalstatistix.cs.uiowa.edu:2443/… connection failed (curl exit, status 000) Not on the page's tools table; the paper's extraction lists it
Vekaria, Nithyanand, Shafiq — notification paper arXiv 2406.06958 v1 2024-06-11, v2 2026-04-02; listed on eurosp2026.ieee-security.org/program.html (Lisbon, 6–10 July 2026) with the three authors. The external-currency reviewer found the IEEE Xplore record: DOI 10.1109/EuroSP68448.2026.00061ieeexplore.ieee.org/document/11624241 (302 confirmed here). Added to the footnote Accepted, footnoted; EuroS&P is outside the corpus
Johnson & Neumann 2024 PDF fetched from pep.gmu.edu and text-extracted: “March 21, 2024, Work in progress”; Prebid-configuration scans on a panel from a Tranco top-100K list (October 2022) Footnoted only as a working paper
Alexa retirement Not re-verified here; the page links website_selection, which carries the dated sources Delegated
Search-surfaced explainers and trackers: verve.com, setupad.com, adtelligent.com, indexexchange.com, advelize.com, admetricspro.com, pixalate.com blog, tradehouse.media, publift.com, redvolcano.io, 6sense.com, headerbidding.co, adpushup.com, playwire.com, bidmatic.io, Statista header-bidding pages Vendor or SEO material; adoption numbers without denominators or methods Rejected. Do not re-add.
adstxt_external_checks-output.txt
run: 2026-09-02T17:17Z
 
== Google sellers.json (live) ==
canonical realtimebidding.google.com/sellers.json (no follow): HTTP 302, redirect_url=https://storage.googleapis.com/adx-rtb-dictionaries/sellers.json, body 0 bytes
followed: HTTP 200, final https://storage.googleapis.com/adx-rtb-dictionaries/sellers.json, 108724970 bytes
file size: 108724970 bytes (about 109 MB)
version 1.0; ext.notice: This file is a beta and is unverified.
sellers 972929; is_confidential=1: 690433 (70.96%)
seller_type: {'PUBLISHER': 972347, 'BOTH': 582}
non-confidential entries with no domain: 141915
 
== other sellers.json locations (HTTP status, bytes) ==
https://www.google.com/sellers.json                                    404 1573
https://storage.googleapis.com/adx-rtb-dictionaries/sellers.json       200 108724970
https://pubmatic.com/sellers.json                                      200 937874
https://openx.com/sellers.json                                         200 1399841
 
== artifact URLs cited by the measuring papers (HTTP status after redirects, final URL) ==
https://personalization.ccs.neu.edu/Projects/Adstxt/                        200 https://personalization.ccs.neu.edu/Projects/Adstxt/
https://github.com/sajjadium/DeepCrawling                                   200 https://github.com/sajjadium/Crawlium
https://www.github.com/mipach/HBDetector                                    404 https://github.com/mipach/HBDetector
https://github.com/bitzj2015/Harpo-NDSS22                                   404 https://github.com/bitzj2015/Harpo-NDSS22
https://gitlab.com/papamano/welcome-to-the-dark-side                        200 https://gitlab.com/papamano/welcome-to-the-dark-side
https://gitlab.com/papamano/who-funds-misinformation                        200 https://gitlab.com/papamano/who-funds-misinformation
https://gitlab.com/papamano/scrape-titan                                    200 https://gitlab.com/papamano/scrape-titan
https://gitlab.com/papamano/before-after-data                               200 https://gitlab.com/papamano/before-after-data
https://gitlab.com/papamano/website-administration-graphs                   200 https://gitlab.com/papamano/website-administration-graphs
https://adsparency.ics.forth.gr/                                            200 https://adsparency.ics.forth.gr/
https://doi.org/10.17617/3.STVMDI                                           200 https://edmond.mpg.de/citation?persistentId=doi:10.17617/3.STVMDI
https://privsec-research.github.io/alexaechos                               200 https://privsec-research.github.io/alexaechos/
https://github.com/Yash-Vekaria/ad-inventory-fraud-measurement              200 https://github.com/Yash-Vekaria/ad-inventory-fraud-measurement
https://github.com/InteractiveAdvertisingBureau/adstxtcrawler               200 https://github.com/InteractiveAdvertisingBureau/adstxtcrawler
https://vitalstatistix.cs.uiowa.edu:2443/maaz/atom-archive                  000 https://vitalstatistix.cs.uiowa.edu:2443/maaz/atom-archive
curl failed
 
== GitHub API: repository state ==
InteractiveAdvertisingBureau/adstxtcrawler: ok; created 2017-05-26T14:45:39Z; pushed 2024-06-06T04:34:04Z; licence None; archived False
Yash-Vekaria/ad-inventory-fraud-measurement: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
mipach/HBDetector: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
bitzj2015/Harpo-NDSS22: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
sajjadium/Crawlium: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
prebid/header-bidder-expert: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
prebid/professor-prebid: API rate limit exceeded for 82.220.84.43. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.); created None; pushed None; licence None; archived None
 
== Prebid.js latest release (GitHub API /releases/latest) ==
tag None; name "None"; published None; prerelease None
 
== EuroS&P 2026 notification paper: DOI resolution ==
HTTP/2 302 
location: https://ieeexplore.ieee.org/document/11624241/
 
== EasyList / EasyPrivacy rules naming prebid ==
easylist.txt lines: 80932; lines matching /prebid/i: 68
easyprivacy.txt lines: 56775; lines matching /prebid/i: 7
  /ads/gam_prebid-$script
  ! prebid scripts
  .prebid-bundle.js$script
  .prebid.$domain=~prebid.org
  /ads/prebid8-$script
 
== IAB spec PDFs: version lines ==
out/adstxt_spec_1_1.pdf
  [found] ads.txt Version 1.1 Released August 2022
  [found] 1.1 April 2022 public comment July 2022 final release Added the “managerdomain” and “ownerdomain” variables (more details in 3
  [found] if and only if the redirect is within scope of the original root domain
  [found] Crawlers should incorporate Public Suffix list
out/sellersjson_spec.pdf
  [found] 1.0 July 2019 First Version
  [found] It is invalid for a seller_id to represent multiple entities
  [found] is_confidential

Bibliography

Checked against a fresh export of bibliography (373,499 bytes, 816 entries) immediately before appending. Key-string, DOI and title-fragment collision scans all clean. 10 entries added; 8 keys reused (cook2020_headerbidding, zeng2022_factors, musa2022_atom, iqbal2023_tracking, liu2024_opted, lukic2026_mv3, papadogiannakis2025_before, papadopoulos2018_cost).

  • bibgen.mjs failed loudly on the PoPETs slug (no authors in the index); authors taken from the PoPETs landing page petsymposium.org/popets/2025/popets-2025-0053.php (Sheaib, Feldmann, Dao).
  • HARPO has no DOI in the index; cited by the NDSS URL, as bibgen does for NDSS. Its index record lists four authors (Zhang, Psounis, Haroon, Shafiq) where the PDF header the child agent saw named two; the index is the publisher's metadata and was kept.
  • vekaria2024_darkpooling written by hand (not in the index's extracted set, but the index record supplied the DOI 10.1109/sp54263.2024.00003); its note field says it is cited from arXiv v3.
  • lukic2026_mv3 lists a second author (“Papadopoulos, Lazaros”) whom the .cols header does not show; the citations reviewer confirmed the author from paper.norm.txt and the PoPETs landing page. The entry is correct; the doubt was a rendering artefact.
  • A first attempt to generate the entries in a shell loop produced an empty file — zsh does not word-split $kv — and was re-run one call per key. Recorded because “the file was empty” is a failure mode that looks like “no output yet”.
bib_additions_ads_txt.bib
@inproceedings{pachilakis2019_waterfalls,
  author        = {Pachilakis, Michalis and Papadopoulos, Panagiotis and Markatos, Evangelos P. and Kourtellis, Nicolas},
  title         = {No More Chasing Waterfalls: A Measurement Study of the Header Bidding Ad-Ecosystem},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2019},
  series        = {IMC 2019},
  doi           = {10.1145/3355369.3355582},
}
 
@inproceedings{bashir2019_adstxt,
  author        = {Bashir, Muhammad Ahmad and Arshad, Sajjad and Kirda, Engin and Robertson, William K. and Wilson, Christo},
  title         = {A Longitudinal Analysis of the ads.txt Standard},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2019},
  series        = {IMC 2019},
  doi           = {10.1145/3355369.3355603},
}
 
@inproceedings{papadogiannakis2023_whofunds,
  author        = {Papadogiannakis, Emmanouil and Papadopoulos, Panagiotis and Markatos, Evangelos P. and Kourtellis, Nicolas},
  title         = {Who Funds Misinformation? A Systematic Analysis of the Ad-related Profit Routines of Fake News Sites},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2023},
  series        = {TheWebConf 2023},
  doi           = {10.1145/3543507.3583443},
}
 
@inproceedings{papadogiannakis2025_darkside,
  author        = {Papadogiannakis, Emmanouil and Kourtellis, Nicolas and Papadopoulos, Panagiotis and Markatos, Evangelos P.},
  title         = {Welcome to the Dark Side: Analyzing the Revenue Flows of Fraud in the Online Ad Ecosystem},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2025},
  series        = {TheWebConf 2025},
  doi           = {10.1145/3696410.3714899},
}
 
@inproceedings{liu2025_fingerprinting,
  author        = {Liu, Zengrui and Dani, Jimmy and Cao, Yinzhi and Wu, Shujiang and Saxena, Nitesh},
  title         = {The First Early Evidence of the Use of Browser Fingerprinting for Online Tracking},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2025},
  series        = {TheWebConf 2025},
  doi           = {10.1145/3696410.3714548},
}
 
@inproceedings{zhang2022_harpo,
  author        = {Zhang, Jiang and Psounis, Konstantinos and Haroon, Muhammad and Shafiq, Zubair},
  title         = {HARPO: Learning to Subvert Online Behavioral Advertising},
  booktitle     = {Proceedings of the Network and Distributed System Security Symposium},
  year          = {2022},
  series        = {NDSS 2022},
  url           = {https://www.ndss-symposium.org/ndss-paper/auto-draft-209/},
}
 
@inproceedings{papadopoulos2017_paying,
  author        = {Papadopoulos, Panagiotis and Rodríguez, Pablo Rodríguez and Kourtellis, Nicolas and Laoutaris, Nikolaos},
  title         = {If you are not paying for it, you are the product: how much do advertisers pay to reach you?},
  booktitle     = {Proceedings of the ACM Internet Measurement Conference},
  year          = {2017},
  series        = {IMC 2017},
  doi           = {10.1145/3131365.3131397},
}
 
@inproceedings{papadogiannakis2022_publisherids,
  author        = {Papadogiannakis, Emmanouil and Papadopoulos, Panagiotis and Markatos, Evangelos P. and Kourtellis, Nicolas},
  title         = {Leveraging Google's Publisher-Specific IDs to Detect Website Administration},
  booktitle     = {Proceedings of the ACM Web Conference},
  year          = {2022},
  series        = {TheWebConf 2022},
  doi           = {10.1145/3485447.3512124},
}
 
@inproceedings{sheaib2025_unmasking,
  author        = {Sheaib, Hussein and Feldmann, Anja and Dao, Ha},
  title         = {Unmasking the Shadows: A Cross-Country Study of Online Tracking in Illegal Movie Streaming Services},
  booktitle     = {Proceedings on Privacy Enhancing Technologies},
  year          = {2025},
  series        = {PoPETs 2025},
  doi           = {10.56553/popets-2025-0053},
}
 
@inproceedings{vekaria2024_darkpooling,
  author        = {Vekaria, Yash and Nithyanand, Rishab and Shafiq, Zubair},
  title         = {The Inventory is Dark and Full of Misinformation: Understanding Ad Inventory Pooling in the Ad-Tech Supply Chain},
  booktitle     = {Proceedings of the IEEE Symposium on Security and Privacy},
  year          = {2024},
  series        = {IEEE S\&P 2024},
  doi           = {10.1109/SP54263.2024.00003},
  note          = {Not in the site's publication corpus (screened out at abstract stage); cited from the arXiv version 2210.06654v3},
}

What could not be established

  • How much of header bidding is still client-side. The only split is February 2019 (17.3 / 34.7 / 48). Every later bids paper is conditioned on the sites that expose the auction, and none reports what fraction of its candidates that was. The page names this as the top open question rather than guessing.
  • Adoption of OWNERDOMAIN / MANAGERDOMAIN. Zero papers; not measured here either (it would need a crawl, not a corpus query). Left as the page's “cheapest open measurement”.
  • Whether the arXiv v3 figures match the S&P camera-ready. Not checked.
  • app-ads.txt. Nothing in the seven venues; the page says so and does not reach outside for it.
  • Precision of the candidate threshold. 18 of 20 candidates were substantive (2 of the 3 “cites” were above threshold on mention count alone: the security.txt paper and the CCS 2021 paper). Recall below the threshold is unknown for 18 papers; their per-term counts are printed so a later run can read them.
  • Why Google's sellers.json count fell from 1,277,156 (March 2023, per the paper) to 972,929 (this run). Not investigated; the page states both numbers without a trend claim.

Mistakes caught during the run

  • A child agent's quotation of a Cook et al. footnote could not be found as given; the sentence exists, spliced across columns. The checker's proximity level was added because of this, and 27 of 167 checks rely on it — which is a statement about .cols rendering, not about the quotes.
  • The published “empty 200 body” claim about Google's sellers.json was wrong. The run's curl did not follow redirects; the canonical URL is a 302, and the 0-byte redirect body was read as an empty file — first blamed on the User-Agent, then on the URL, then published. The external-currency reviewer reproduced clean 302s and pointed out the script recorded byte counts but no status codes. Both pages, the script and the run's memory note were corrected. Lesson: record %{http_code} and %{redirect_url}, never a byte count alone.
  • A WebFetch summary was quoted as a primary source. The Prebid Server sentence on the first revision was the fetch tool's paraphrase, attributed to a page that does not contain it. Replaced with the sentence that exists, on the page where it exists.
  • The quote checker's first proximity test was too weak (any-order tokens in a 500-character window). The figures reviewer mutation-tested it: 82 of 509 small numeric mutations passed. Tightened to in-order whole tokens with ≤120 characters between them; three quotes then failed and were re-located as split words across column splices.
  • One probe regex carried a case-sensitive flag over a whole alternation, undercounting the phrase real-time bidding (64 → 73 papers). Context-only term; no page count depended on it except the reach table's context row, now corrected.
  • The first draft's by-venue sentence claimed the three venues “split it by observable”; counting the labels showed 3 of 7 bids papers at PoPETs, not most. Rewritten with the counts.
  • The first draft said “100× lower” for 0.031 vs 4.16 CPM (it is ~134×); now “more than a hundred times”.
  • The first draft said two below-threshold papers were read; three were. The report script now prints which.
  • The check_page_numbers whole-page pass initially flagged the live Google figures and a URL path fragment (“2022/04/”) as unaccounted; the figures were moved into the external-check script's output and the footnote now cites the standards page rather than the PDF path.

Review

Four reviewers, all told the context might not be exhaustive and all handed the page text, the report script, its unedited output, the quote-check and external-check scripts with their outputs, and this log. The three focused ones ran in parallel on the frozen first revision (rev 1788368710); their accepted fixes were applied and republished before the generic pass.

Reviewer Finding Action
figures-vs-script (sonnet) Report script and quote-check reproduce their committed outputs byte-for-byte. Every corpus figure on the page (5,869 / 41 / 18 / 20 / 16 / 13, the venue and year tables including the 1,047 bucket, the six-family table, the crawl-config, population-source, vantage and artifact counts, the live sellers.json figures) matches the output. The nine-row method table's paper counts and year ranges are derivable from the script's LABELS plus the label table here. No figure names a population other than the one the script computes. Noted; no change
figures-vs-script (sonnet) Defect. The quote checker's proximity fallback (any-order tokens in a 500-character window) was mutation-tested on a sandboxed copy: 82 of 509 ±1 / ±10% numeric mutations of real quoted figures still passed, including some whose originals are verbatim .cols matches. So “167 of 167 pass” was weaker evidence than it read. Accepted. Tightened to in-order whole tokens with ≤120 characters between consecutive tokens; 169 of 169 now pass, 24 by proximity, and the three quotes that the tighter test rejected were re-located as words split by column splices and are checked as their two halves
figures-vs-script (sonnet) Defect (context term). The real-time bidding / RTB regex carried one case-sensitive flag over the whole alternation; the phrase was undercounted, 64 papers instead of 73 (≥5: 19 → 21). Not a CORE term; no candidate, family, venue or year figure depends on it. Accepted. Split into a case-insensitive phrase regex and a case-sensitive acronym regex; reach table and Q2 corrected
external-currency (sonnet) Wrong citation. “bid requests from the server rather than the browser” does not appear on the Prebid Server overview page cited (nor in five Wayback snapshots). The sentence that exists is on overview/intro.html: “Use Prebid Server to do the processing rather than the client browser”. Accepted. Quote and URL replaced on the page; the first revision had quoted a WebFetch paraphrase as if it were the page
external-currency (sonnet) Not reproducible. “Google's canonical sellers.json URL intermittently returns an empty 200 body”: 12 of 12 fetches returned a clean HTTP 302 to the Cloud Storage copy. The external-check script captured byte counts but never a status code, so it could not tell an empty body from an unfollowed redirect. Accepted — the page was wrong. The run's curl had no -L. Footnote, crawl-configuration bullet, tools-table cell, this page and the run's memory note corrected; the script now prints the status chain and follows the redirect
external-currency (sonnet) Everything else current as of 2026-09-02: ads.txt 1.1 with no 1.2, sellers.json 1.0, SupplyChain 1.0, app-ads.txt 1.0, root-domain / redirect / 7-day cache text verbatim in the spec, buyers.json and ads.cert dormant, Prebid getBidResponses fields, globalVarName / defineGlobal, Prebid.js 11.32.0 with the “11.31.1” release-name mismatch, 68 EasyList prebid rules, HBDetector and HARPO dead with no relocation found by GitHub search, all live tool URLs, Alexa retirement dated on website_selection, Protected Audience withdrawal correctly hedged. Noted; no change
external-currency (sonnet) Supersession. The EuroS&P 2026 notification paper now has an IEEE Xplore DOI, 10.1109/EuroSP68448.2026.00061. Accepted. Added to the footnote (DOI resolution to Xplore document 11624241 confirmed here)
external-currency (sonnet) Johnson & Neumann: no peer-reviewed version; a 2025 Crossref record from a research-video platform 404s and is not a supersession. Noted; the “working paper” framing stands
citations-and-quotes (sonnet) Misattribution. The page said [1Cook, 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)] and [2Musa, Maaz Bin; Nithyanand, Rishab (2022): "ATOM: Ad-network Tomography", in: Proceedings on Privacy Enhancing Technologies. (DOI)] “disabled protections in OpenWPM and say so”; only ATOM does. Cook et al. discuss browsers' default anti-tracking protection as a caveat and never state they disabled it. Accepted. Sentence rewritten to attribute the statement to ATOM alone
citations-and-quotes (sonnet) Denominator splice. “Of 188 DIRECT entries, 5 could be confirmed; 169 IDs were absent and 418 had a domain mismatch” welds two counts the paper keeps apart (5 of 188 verified; 169 + 418 = 587 “remaining unique direct” entries) and the arithmetic does not close. Confirmed against a clean pypdf extraction: the paper's own wording is the source of the confusion. Accepted. The page now gives both totals and says the paper does not reconcile them
citations-and-quotes (sonnet) The tightened quote checker produced 3 FAILs at review time where this page claimed 0; the reviewer verified all three as genuine quotes broken by hyphenation merges (“under”+“has” → “underhas”) in the column-repaired text. Accepted. Those three are now checked as their two verbatim halves; 170 of 170 pass on the final run, 24 by proximity
citations-and-quotes (sonnet) All 18 keys resolve exactly once; no DOI or title duplicates; every added entry's authors and DOI verified. The three author-list doubts recorded above — HARPO's four authors, Lukić's second author (Papadopoulos), Sheaib's hand-filled list — are all correct as published (side-by-side bylines in paper.norm.txt and the PoPETs landing page). check_attributions –prose reproduces the four false-positive SUSPECTs. Sampled figures and denominators in the Pick the Unit and Three Observables tables and all 15 dark-pooling citations check out. Noted; the “pre-existing hygiene issue” wording about lukic2026_mv3 under Bibliography is withdrawn
generic (fable) not yet run

Report output, unedited

report_ads_txt-output.txt
=== PASS A — corpus reach ===
papers with a readable paper.cols.txt: 5869   <-- denominator for pass A
 
  term                              >=1 papers   >=5 papers
  ads.txt                             12   0.2%      8   0.1%
  app-ads.txt                          3   0.1%      1   0.0%
  sellers.json                         5   0.1%      4   0.1%
  header bidding                      24   0.4%      7   0.1%
  prebid                              11   0.2%      6   0.1%
  openrtb                             13   0.2%      2   0.0%
  schain / supply chain object         0   0.0%      0   0.0%
  buyers.json                          0   0.0%      0   0.0%
  ads.cert                             2   0.0%      0   0.0%
  nURL / win notice                    4   0.1%      2   0.0%
  real-time bidding (incl. RTB)       73   1.2%     21   0.4%
  dark pool(ing)                       8   0.1%      4   0.1%
 
  any CORE term (ads.txt, app-ads.txt, sellers.json, header bidding, prebid, openrtb, schain / supply chain object) at least once: 41 (0.7%)
  CORE terms summed >= 5:                 18 (0.3%)
 
=== PASS A — by year, CORE terms (2025 thin at the edges; 2026 provisional: CCS/IMC 2026 not held, IEEE S&P/WWW 2026 incompletely indexed) ===
  year  papers  core>=1  core>=5  ads.txt>=1  sellers.json>=1  header-bidding>=1
  2010–2016 bucket (as printed on the page): 1047 papers, 0 with any core mention
  2010     118        0        0           0                0                  0
  2011     116        0        0           0                0                  0
  2012     151        0        0           0                0                  0
  2013     125        0        0           0                0                  0
  2014     165        0        0           0                0                  0
  2015     190        0        0           0                0                  0
  2016     182        0        0           0                0                  0
  2017     232        1        0           0                0                  0
  2018     254        2        1           0                0                  0
  2019     402        4        2           1                1                  2
  2020     402        5        1           0                0                  4
  2021     380        3        2           2                0                  1
  2022     546        8        3           2                0                  6
  2023     720        4        2           1                1                  3
  2024     701        6        2           2                0                  3
  2025     770        7        4           4                3                  4
  2026     415        1        1           0                0                  1
 
=== PASS A — by venue (denominator: that venue's papers with full text) ===
  CCS        989 papers    3 core>=1 (0.3%)    2 core>=5 (0.2%)
  IEEE-SP    779 papers    1 core>=1 (0.1%)    0 core>=5 (0.0%)
  IMC        637 papers    9 core>=1 (1.4%)    5 core>=5 (0.8%)
  NDSS       701 papers    1 core>=1 (0.1%)    1 core>=5 (0.1%)
  PETS       510 papers   12 core>=1 (2.4%)    5 core>=5 (1.0%)
  USENIX    1410 papers    2 core>=1 (0.1%)    0 core>=5 (0.0%)
  WWW        843 papers   13 core>=1 (1.5%)    5 core>=5 (0.6%)
 
=== PASS B — candidate set and hand labels ===
candidates (CORE terms summed >= 5, plus 2 forced in): 20
  labelled "measures" (reads ads.txt/sellers.json or observes bids): 16
  labelled "related" (sibling method, no ads.txt):                  1
  labelled "cites only":                                            3
  UNLABELLED RESIDUE:                                               0
  labels written for papers NOT in the candidate set: 0
 
=== PASS B — below-threshold residue: papers with 1–4 CORE mentions ===
  21 papers; 3 of them read (all passing mentions), 18 NOT read for this page.
  Columns: ads.txt | app-ads.txt | sellers.json | header bidding | prebid | openrtb
  not read  IMC/2018/tracing-cross-border-web-tracking  0 | 0 | 0 | 0 | 0 | 2
  not read  WWW/2019/before-and-after-gdpr-the-changes-in-third-party-presence-at-public-and-private  0 | 0 | 0 | 4 | 0 | 0
  not read  WWW/2019/nameles-an-intelligent-system-for-real-time-filtering-of-invalid-ad-traffic  0 | 0 | 0 | 0 | 0 | 4
  not read  IEEE-SP/2020/do-cookie-banners-respect-my-choice-measuring-legal-compliance-of-banners-from-i  0 | 0 | 0 | 0 | 0 | 4
  not read  PETS/2020/the-price-is-not-right-comparing-privacy-in-free-and-paid-apps  0 | 0 | 0 | 1 | 0 | 0
  read      WWW/2020/apophanies-or-epiphanies-how-crawlers-impact-our-understanding-of-the-web  0 | 0 | 0 | 2 | 0 | 0
  not read  WWW/2020/stop-tracking-me-bro-differential-tracking-of-user-demographics-on-hyper-partisa  0 | 0 | 0 | 2 | 0 | 0
  not read  WWW/2021/user-tracking-in-the-post-cookie-era-how-websites-bypass-gdpr-consent-to-track-u  0 | 0 | 0 | 1 | 0 | 0
  not read  CCS/2022/cart-ology-intercepting-targeted-advertising-via-ad-network-identity-entanglemen  0 | 0 | 0 | 1 | 0 | 0
  read      PETS/2022/setting-the-bar-low-are-websites-complying-with-the-minimum-requirements-of-the  3 | 0 | 0 | 0 | 0 | 0
  not read  USENIX/2022/khaleesi-breaker-of-advertising-and-tracking-request-chains  0 | 0 | 0 | 1 | 0 | 0
  not read  WWW/2022/investigating-advertisers-domain-changing-behaviors-and-their-impacts-on-ad-bloc  0 | 0 | 0 | 1 | 0 | 0
  not read  PETS/2023/usability-and-enforceability-of-global-privacy-control  0 | 0 | 0 | 0 | 0 | 3
  not read  WWW/2023/the-hitchhikers-guide-to-facebook-web-tracking-with-invisible-pixels-and-click-i  0 | 0 | 0 | 1 | 0 | 0
  not read  PETS/2024/client-side-and-server-side-tracking-on-meta-effectiveness-and-accuracy  0 | 0 | 0 | 0 | 1 | 0
  not read  PETS/2024/interest-disclosing-mechanisms-for-advertising-are-privacy-exposing-not-preservi  0 | 0 | 0 | 1 | 0 | 0
  read      PETS/2024/johnny-still-cant-opt-out-assessing-the-iab-ccpa-compliance-framework  2 | 0 | 0 | 0 | 2 | 0
  not read  USENIX/2024/fledging-will-continue-until-privacy-improves-empirical-analysis-of-googles-priv  0 | 0 | 0 | 3 | 0 | 0
  not read  IMC/2025/cookieguard-characterizing-and-isolating-the-first-party-cookie-jar  0 | 0 | 0 | 1 | 0 | 0
  not read  IMC/2025/somesite-i-used-to-crawl-awareness-agency-and-efficacy-in-protecting-content-cre  2 | 0 | 0 | 0 | 0 | 0
  not read  PETS/2025/echoes-of-privacy-uncovering-the-profiling-practices-of-voice-assistants  0 | 0 | 0 | 2 | 0 | 0
 
=== PASS B — the 16 measuring papers, by family ===
    7  43.8%  hb-instrument
    3  18.8%  adstxt-instrument
    2  12.5%  rtb-price
    2  12.5%  adstxt-object
    1   6.3%  hb-object
    1   6.3%  hb-sampling
 
=== PASS B — the same set, by year and family (core mentions in brackets) ===
  2017 IMC      rtb-price          [  4]  if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to
  2018 WWW      rtb-price          [  6]  the-cost-of-digital-advertisement-comparing-user-and-advertiser-views
  2019 IMC      adstxt-object      [249]  a-longitudinal-analysis-of-the-ads-txt-standard
  2019 IMC      hb-object          [ 64]  no-more-chasing-waterfalls-a-measurement-study-of-the-header-bidding-ad-ecosyste
  2020 PETS     hb-instrument      [ 37]  inferring-tracker-advertiser-relationships-in-the-online-advertising-ecosystem-u
  2022 IMC      hb-instrument      [ 41]  what-factors-affect-targeting-and-bids-in-online-advertising-a-field-measurement
  2022 NDSS     hb-instrument      [  5]  auto-draft-209
  2022 PETS     hb-instrument      [ 27]  atom-ad-network-tomography
  2023 IMC      hb-instrument      [ 20]  tracking-profiling-and-ad-targeting-in-the-alexa-echo-smart-speaker-ecosystem
  2023 WWW      adstxt-instrument  [ 43]  who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines
  2024 PETS     hb-instrument      [ 56]  opted-out-yet-tracked-are-regulations-enough-to-protect-your-privacy
  2025 PETS     adstxt-instrument  [ 31]  unmasking-the-shadows-a-cross-country-study-of-online-tracking-in-illegal-movie
  2025 WWW      adstxt-instrument  [ 75]  before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation
  2025 WWW      hb-instrument      [ 30]  the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin
  2025 WWW      adstxt-object      [164]  welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e
  2026 PETS     hb-sampling        [  7]  privacy-vs-profit-the-impact-of-googles-manifest-version-3-mv3-update-on-ad-bloc
 
=== PASS B — first / most recent year of each family (in the seven venues) ===
  rtb-price          first 2017, most recent 2018, papers 2
  adstxt-object      first 2019, most recent 2025, papers 2
  hb-object          first 2019, most recent 2019, papers 1
  hb-instrument      first 2020, most recent 2025, papers 7
  adstxt-instrument  first 2023, most recent 2025, papers 3
  hb-sampling        first 2026, most recent 2026, papers 1
 
=== PASS C — extraction fields for the 16 measuring papers ===
  of which have a crawlConfig record: 13  (the others: real-user extensions, passive proxies, industrial logs)
 
  crawlConfig.statefulness  (denominator: 13 measuring papers that crawled)
      6  46.2%  stateless
      5  38.5%  stateful
      1   7.7%  not-stated   <-- sentinel, not an answer
      1   7.7%  both
 
  crawlConfig.consentAction  (denominator: 13 measuring papers that crawled)
      5  38.5%  no-interaction
      3  23.1%  not-stated   <-- sentinel, not an answer
      2  15.4%  accept-all
      1   7.7%  accept-and-reject
      1   7.7%  cmp-specific-choices
      1   7.7%  not-applicable   <-- sentinel, not an answer
 
  crawlConfig.interactionDepth  (denominator: 13 measuring papers that crawled)
      4  30.8%  landing-plus-subpages
      4  30.8%  landing-page-only
      3  23.1%  single-target-page
      2  15.4%  not-stated   <-- sentinel, not an answer
 
  crawlConfig.headless  (denominator: 13 measuring papers that crawled)
     10  76.9%  not-stated   <-- sentinel, not an answer
      2  15.4%  headful
      1   7.7%  headless
 
  temporal.mode  (denominator: 16 measuring papers)
     14  87.5%  live-crawl
      4  25.0%  active-probing
      2  12.5%  passive-collection
      2  12.5%  existing-dataset
      1   6.3%  web-archive
 
  artifacts.availability  (denominator: 16 measuring papers)
     10  62.5%  public
      4  25.0%  none-mentioned   <-- sentinel
      2  12.5%  promised-not-yet-available
 
=== PASS C — population source lists named by the measuring papers (free text, paper-counted, folded by a short alias rule; residue printed) ===
      8  Alexa
      5  Tranco
      3  MediaBias/FactCheck
      2  NextDNS piracy list
      1  Prolific
      1  BuiltWith
  unmapped residue (30):
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: custom volunteer proxy dataset
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: custom volunteer proxy dataset
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: controlled ad-campaigns in Spain
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: controlled ad-campaign A1
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: controlled ad-campaign A2
    !! WWW/2018/the-cost-of-digital-advertisement-comparing-user-and-advertiser-views: 1270 volunteering users
    !! WWW/2018/the-cost-of-digital-advertisement-comparing-user-and-advertiser-views: 1270 volunteering users' mobile HTTP traffic
    !! NDSS/2022/auto-draft-209: AOL dataset
    !! NDSS/2022/auto-draft-209: TrackThis
    !! NDSS/2022/auto-draft-209: custom synthetic persona generator
    !! NDSS/2022/auto-draft-209: custom synthetic persona generator
    !! NDSS/2022/auto-draft-209: AOL dataset
    !! PETS/2022/atom-ad-network-tomography: custom curated interest-group website lists
    !! PETS/2022/atom-ad-network-tomography: custom persona set
    !! PETS/2022/atom-ad-network-tomography: custom ATOM test-deployment personas
    !! IMC/2023/tracking-profiling-and-ad-targeting-in-the-alexa-echo-smart-speaker-ecosystem: dataset released in [30]
    !! WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines: Columbia Journalism Review (CJR)
    !! WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines: Golbeck et al.
    !! WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines: Zhou et al.
    !! WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines: sources of Section 3.1
    !! PETS/2025/unmasking-the-shadows-a-cross-country-study-of-online-tracking-in-illegal-movie: Piracy Megathread on Reddit
    !! WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation: previous academic work [45]
    !! WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation: previous academic work [55]
    !! WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation: FakeNewsNet
    !! WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation: custom merged list
    !! WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation: Science Feedback
    !! WWW/2025/the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin: Google search results
    !! WWW/2025/the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin: custom seed list
    !! WWW/2025/welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e: WHOIS records from domains inside pools
    !! WWW/2025/welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e: hidden-intermediary client websites
 
=== PASS C — vantage locations, folded (geo.mjs); residue printed ===
  measuring papers stating at least one vantage location: 11 of 16
      6  United States
      3  Europe
      3  Germany
      2  Spain
      1  Australia
      1  Brazil
      1  India
      1  South Africa
      1  Sweden
      1  Netherlands
      1  Greece
  unmapped residue (1):
    !! IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to: same country
 
=== PASS C — measured results: detection[].prevalence on tuples naming an observable ===
  The denominator is NOT in this field: it has to be read out of the paper.
 
  -- IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to
     [RTB price notifications] share of mobile RTB ads => approximately 26% used encrypted price nURLs
     [Encrypted RTB prices] relative median price => encrypted prices were approximately 1.7× higher than cleartext prices
     [User advertising cost] annual cumulative CPM per user => median user cost was approximately 25 CPM; 73% cost under 100 CPM
     [RTB traffic composition] share by operating system => (none reported)
 
  -- WWW/2018/the-cost-of-digital-advertisement-comparing-user-and-advertiser-views
     [RTB advertiser costs] cost per impression and total CPM => 44,997 charge prices across users and over 770 advertisers and ad-networks
     [User versus advertiser monetary cost] average cost per impression => median user paid 0.0022 Euros per ad versus 0.00071 Euros for advertisers
     [RTB market concentration] portion of RTB auctions won => top five companies won 67.7% of auctions
 
  -- IMC/2019/a-longitudinal-analysis-of-the-ads-txt-standard
     [ads.txt adoption] share of websites adopting ads.txt => 20% of Alexa Top-100K websites; 62% of RTB-ad publishers by April 2019
     [ads.txt record errors] share of publishers with invalid records => 10% of publishers had at least one invalid record
     [RTB advertisements] number of RTB ad inclusion chains => 135M RTB ad inclusion chains
     [ads.txt compliance] weighted and unweighted non-compliant tuple percentage => Percentage of completely compliant publishers rose from 46% in April 2018 to 77% in April 2019
     [ad-exchange domains] unique valid seller domains => 1,035 unique seller domains
 
  -- IMC/2019/no-more-chasing-waterfalls-a-measurement-study-of-the-header-bidding-ad-ecosyste
     [Header-bidding adoption] share of crawled websites => 14.28% of top websites
     [Header-bidding auctions] number of auctions => 798,629 auctions detected
     [Received bids] number of bids => 241,392 bids detected
     [Header-bidding latency] median latency and percentiles => median about 600ms; 10% exceed 3 seconds
     [Late bids] share of bids arriving too late => 10% of auctions have 80% or more late bids
     [Ad-slot bid prices] CPM bid price => 300x250 median cost 0.031 CPM
 
  -- PETS/2020/inferring-tracker-advertiser-relationships-in-the-online-advertising-ecosystem-u
     [advertiser bidding behavior] median CPM bid values and intent/no-intent bid ratios => (none reported)
     [tracker–advertiser relationships] classification accuracy => 75–83% accuracy; 15 relationships inferred, including 11 not detected by cookie syncing
     [zero bidding] percentage of zero bids => over 22% of all bids; 24.21% for no-intent and 19.44% for intent personas
 
  -- IMC/2022/what-factors-affect-targeting-and-bids-in-online-advertising-a-field-measurement
     [winning bid values] mean and median CPM => Mean $5.47 CPM; median $4.16 CPM across rendered winning bids
     [demographic effects on bids] estimated CPM difference and significance => Male participants received $0.58 CPM lower bids than women
     [self-reported retargeting] share of ads reporting prior visit => Participants answered “Yes” for 18.3% of ads
     [retargeting-associated bid premiums] estimated CPM increase => Prior-visit “yes” responses increased bids by $1.07 CPM
     [extreme bid outliers] share of ads above threshold => 127 ads, or the top 1.8% by bid value, exceeded $20 CPM
 
  -- NDSS/2022/auto-draft-209
     [ad-targeting bid distortion] L3 increase in high bids; L4 average bid-value ratio => H ARPO increased high bids by 43.30% and bid values by 6.28×.
 
  -- PETS/2022/atom-ad-network-tomography
     [validation of inferred sharing relationships] validated relationships => 9 of 11 inferred relationships were validated.
 
  -- IMC/2023/tracking-profiling-and-ad-targeting-in-the-alexa-echo-smart-speaker-ecosystem
     [Cookie syncing] number of advertisers and third parties => 41 advertisers synced cookies with Amazon and 247 other third parties
     [Ad bid targeting] relative CPM bid values => Bids reached 30× the vanilla mean for Health & Fitness and 27× for Fashion & Style
 
  -- WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines
     [direct ad-network relationships] share of fake news websites => 80.8% Google, 49% IndexExchange, and 52.5% AppNexus
     [seller relationships] share of fake news websites => 67.71–73.73% had reseller relationships with major ad networks
 
  -- PETS/2024/opted-out-yet-tracked-are-regulations-enough-to-protect-your-privacy
     [Advertiser data usage after opt-out] advertiser bid CPM distributions => Most personas received higher bids than control after opting out under GDPR and CCPA.
     [Server-side data sharing] mean bid CPM relative to control => Advertisers not explicitly leaked user interests often still bid higher than control.
     [Pre-opt-out tracking] bids and cookie syncing events => Advertisers continued using data and syncing cookies after pre-opt-out.
     [CMP and prebid deployment] number of websites => 352 websites supported selected CMPs and client-side header bidding.
 
  -- PETS/2025/unmasking-the-shadows-a-cross-country-study-of-online-tracking-in-illegal-movie
     [Shared website administration] shared identifiers and site pairs => 17 IDs shared among multiple IMSS sites
     [Authorized digital sellers] share of sites serving valid ads.txt => 35 sites (9.1%); 27 of 35 list Google DIRECT
 
  -- WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation
     [direct ad-network relationships] number and percentage of websites with verified relationships => 461 misinformation websites had at least one relationship in the longitudinal intersection.
 
  -- WWW/2025/the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin
     [fingerprinting-based ad tracking] bid values, trends, means, medians, and maxima => Substantial bid-value differences after changing browser fingerprints.
 
  -- WWW/2025/welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e
     [identifier pooling] number of pools and pool size => 185,535 distinct pools
     [dark pools] share of objectionable-content pools => 59.6% of misinformation pools and 82% of piracy pools were dark pools
     [identifier pooling involving misinformation] participating websites and pools => 211 fake-news websites participated in pools; over 5,000 pools contained misinformation websites
     [identifier pooling involving piracy] participating websites and pools => 121 piracy websites participated in pools; over 2,000 pools contained piracy websites
     [hidden intermediaries] number of verified ad networks => 33 ad networks were falsely registered as publishers
     [hidden-intermediary clients] number of client websites => 167 fake-news, 19 piracy, and 4 illegal websites
     [ads.txt relationship mismatches] mismatched identifiers and networks => over 26,000 identifiers issued by 421 advertising networks
 
  -- PETS/2026/privacy-vs-profit-the-impact-of-googles-manifest-version-3-mv3-update-on-ad-bloc
     (no matching detection tuple)
 
=== PASS C — artifact links the measuring papers say are their own (artifacts.links[].belongsToAuthors) ===
  IMC/2017/if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to
     (none flagged as the authors' own)
  WWW/2018/the-cost-of-digital-advertisement-comparing-user-and-advertiser-views
     (none flagged as the authors' own)
  IMC/2019/a-longitudinal-analysis-of-the-ads-txt-standard
     dataset          https://personalization.ccs.neu.edu/Projects/Adstxt/
     source-code      https://github.com/sajjadium/DeepCrawling
  IMC/2019/no-more-chasing-waterfalls-a-measurement-study-of-the-header-bidding-ad-ecosyste
     source-code      https://www.github.com/mipach/HBDetector
  PETS/2020/inferring-tracker-advertiser-relationships-in-the-online-advertising-ecosystem-u
     (none flagged as the authors' own)
  IMC/2022/what-factors-affect-targeting-and-bids-in-online-advertising-a-field-measurement
     (none flagged as the authors' own)
  NDSS/2022/auto-draft-209
     source-code      https://github.com/bitzj2015/Harpo-NDSS22
  PETS/2022/atom-ad-network-tomography
     dataset          https://vitalstatistix.cs.uiowa.edu:2443/maaz/atom-archive
  IMC/2023/tracking-profiling-and-ad-targeting-in-the-alexa-echo-smart-speaker-ecosystem
     code-and-data    https://privsec-research.github.io/alexaechos
  WWW/2023/who-funds-misinformation-a-systematic-analysis-of-the-ad-related-profit-routines
     source-code      https://gitlab.com/papamano/scrape-titan
     code-and-data    https://gitlab.com/papamano/who-funds-misinformation
  PETS/2024/opted-out-yet-tracked-are-regulations-enough-to-protect-your-privacy
     (none flagged as the authors' own)
  PETS/2025/unmasking-the-shadows-a-cross-country-study-of-online-tracking-in-illegal-movie
     code-and-data    https://doi.org/10.17617/3.STVMDI
  WWW/2025/before-after-the-effect-of-eus-2022-code-of-practice-on-disinformation
     dataset          https://gitlab.com/papamano/before-after-data
  WWW/2025/the-first-early-evidence-of-the-use-of-browser-fingerprinting-for-online-trackin
     dataset          https://tamucs-my.sharepoint.com/:f:/g/personal/lzr_tamu_edu/EtA94fEfURxHsH6Qixvrvn4BnLJWHzMoM_EHeF4Vx3n78A?e=xhavnq
  WWW/2025/welcome-to-the-dark-side-analyzing-the-revenue-flows-of-fraud-in-the-online-ad-e
     code-and-data    https://gitlab.com/papamano/welcome-to-the-dark-side
     web-demo-or-service https://adsparency.ics.forth.gr/
  PETS/2026/privacy-vs-profit-the-impact-of-googles-manifest-version-3-mv3-update-on-ad-bloc
     (none flagged as the authors' own)
 
=== PASS D — the IEEE S&P 2024 dark-pooling paper: in the venue index, screened out, not in the corpus ===
  venue index (corpus2/.meta/IEEE-2024.json): PRESENT — The Inventory is Dark and Full of Misinformation: Understanding Ad Inventory Pooling in the Ad-Tech Supply Chain. — doi 10.1109/sp54263.2024.00003
  screening label (labels/run1/labels.jsonl): {"securityMeasurement":false,"privacyMeasurement":false,"manualAnalysis":false,"domains":[],"crawlers":[],"laws":[],"darkPatterns":false,"model":"gpt-5.6-luna"}
  extraction record: ABSENT;  full text on disk: ABSENT
  => every field of the label is false/empty, so the selection rule ("any field set") excluded it. Cited on the page from the arXiv text (2210.06654v3), not from the corpus.

References

[1]
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)
[2]
Musa, Maaz Bin; Nithyanand, Rishab (2022): "ATOM: Ad-network Tomography", in: Proceedings on Privacy Enhancing Technologies. (DOI)
[3]
Papadopoulos, Panagiotis; Rodríguez, Pablo Rodríguez; Kourtellis, Nicolas; Laoutaris, Nikolaos (2017): "If you are not paying for it, you are the product: how much do advertisers pay to reach you?", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[4]
Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2022): "Leveraging Google's Publisher-Specific IDs to Detect Website Administration", in: Proceedings of the ACM Web Conference. (DOI)
[5]
Bashir, Muhammad Ahmad; Arshad, Sajjad; Kirda, Engin; Robertson, William K.; Wilson, Christo (2019): "A Longitudinal Analysis of the ads.txt Standard", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[6]
Papadogiannakis, Emmanouil; Kourtellis, Nicolas; Papadopoulos, Panagiotis; Markatos, Evangelos P. (2025): "Welcome to the Dark Side: Analyzing the Revenue Flows of Fraud in the Online Ad Ecosystem", in: Proceedings of the ACM Web Conference. (DOI)
[7]
Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2023): "Who Funds Misinformation? A Systematic Analysis of the Ad-related Profit Routines of Fake News Sites", in: Proceedings of the ACM Web Conference. (DOI)
[8]
Papadogiannakis, Emmanouil; Papadopoulos, Panagiotis; Kourtellis, Nicolas; Markatos, Evangelos P. (2025): "Before & After: The Effect of EU's 2022 Code of Practice on Disinformation", in: Proceedings of the ACM Web Conference. (DOI)
[9]
Sheaib, Hussein; Feldmann, Anja; Dao, Ha (2025): "Unmasking the Shadows: A Cross-Country Study of Online Tracking in Illegal Movie Streaming Services", in: Proceedings on Privacy Enhancing Technologies. (DOI)
[10]
Pachilakis, Michalis; Papadopoulos, Panagiotis; Markatos, Evangelos P.; Kourtellis, Nicolas (2019): "No More Chasing Waterfalls: A Measurement Study of the Header Bidding Ad-Ecosystem", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[11]
Zeng, Eric; McAmis, Rachel; Kohno, Tadayoshi; Roesner, Franziska (2022): "What Factors Affect Targeting and Bids in Online Advertising? A Field Measurement Study", in: Proceedings of the ACM Internet Measurement Conference, pp. 210-229. (DOI)
[12]
Zhang, Jiang; Psounis, Konstantinos; Haroon, Muhammad; Shafiq, Zubair (2022): "HARPO: Learning to Subvert Online Behavioral Advertising", in: Proceedings of the Network and Distributed System Security Symposium. (Link)
[13]
Iqbal, Umar; Bahrami, Pouneh Nikkhah; Trimananda, Rahmadi; Cui, Hao; Gamero-Garrido, Alexander; Dubois, Daniel J.; Choffnes, David R.; Markopoulou, Athina; Roesner, Franziska; Shafiq, Zubair (2023): "Tracking, Profiling, and Ad Targeting in the Alexa Echo Smart Speaker Ecosystem", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[14]
Liu, Zengrui; Iqbal, Umar; Saxena, Nitesh (2024): "Opted Out, Yet Tracked: Are Regulations Enough to Protect Your Privacy?", in: Proceedings on Privacy Enhancing Technologies. (DOI)
[15]
Liu, Zengrui; Dani, Jimmy; Cao, Yinzhi; Wu, Shujiang; Saxena, Nitesh (2025): "The First Early Evidence of the Use of Browser Fingerprinting for Online Tracking", in: Proceedings of the ACM Web Conference. (DOI)
[16]
Lukić, Karlo; Papadopoulos, Lazaros (2026): "Privacy vs. Profit: The Impact of Google's Manifest Version 3 (MV3) Update on Ad Blocker Effectiveness", in: Proceedings on Privacy Enhancing Technologies. (Link)
[17]
Papadopoulos, Panagiotis; Kourtellis, Nicolas; Markatos, Evangelos P. (2018): "The Cost of Digital Advertisement: Comparing User and Advertiser Views", in: Proceedings of the ACM Web Conference. (DOI)
[18]
Poteat, Tara; Li, Frank (2021): "Who You Gonna Call? An Empirical Evaluation of Website security.txt Deployment", in: Proceedings of the ACM Internet Measurement Conference. (DOI)
[19]
Vekaria, Yash; Nithyanand, Rishab; Shafiq, Zubair (2024): "The Inventory is Dark and Full of Misinformation: Understanding Ad Inventory Pooling in the Ad-Tech Supply Chain", in: Proceedings of the IEEE Symposium on Security and Privacy. Not in the site's publication corpus (screened out at abstract stage); cited from the arXiv version 2210.06654v3 (DOI)
provenance/privacy/ads_txt.1788369587.txt.gz · Last modified: by karel.kubicek.claude

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