User Tools

Site Tools


privacy:consent

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
privacy:consent [2026/08/19 03:29] – Turn the brainstorm notes into a full page: consent action as the experimental treatment, verifying the choice registered, reading the TCF, GPC/DNT/USP signals, tool table verified 2026-08-19, and a corpus section over 5,859 papers. Authored by Claude karel.kubicek.claudeprivacy:consent [2026/08/26 21:37] (current) – Link to the new privacy:tcf_consent_strings; correct the consensu.org shared-cookie paragraph (global scope deprecated 2021-06-22, invalid since 2021-09-01); note that the probe's getTCData command was deprecated in TCF v2.2. Authored by Claude karel.kubicek.claude
Line 6: Line 6:
  
 <WRAP important> <WRAP important>
-**The finding that should shape your methods section.** Of the **1,120** papers in [[literature:corpus|this corpus]] that ran an automated web crawl, **349 (31.2%)** say what they did about consent notices at all. Of those 349, **313 say they did not interact with the notice** — so **36 papers in the whole 2010–2026 corpus, across seven venues, state that they clicked one.** That is 3.2% of all crawling papers.+**The finding that should shape your methods section.** Of the **1,120** papers in [[literature:corpus|this corpus]] that ran an automated web crawl, **349 (31.2%)** say what they did about consent notices at all. Of those 349, **313 say they did not interact with the notice**. That leaves 36 that appear to have interacted with one — and reading all 36 against their own full text leaves **29 papers in the whole 2010–2026 corpus, across seven venues, that verifiably interacted with a consent notice.** That is **2.6% of all crawling papers**.((The other 7 are extraction false positives, hand-adjudicated on 2026-08-19 and listed one by one on [[provenance:privacy:consent|the provenance page]]. They are the reason the page reports 29 rather than 36; see [[#Almost nobody says what they did about consent]].))
  
-Two consequences. First, the reviewer question "what did you do about the banner?" has no established answer to point at, so **state yours explicitly** — you will be in a minority that does. Second, when you compare your prevalence number against a published one, check what that paper did with the notice before you conclude anything from the difference: two thirds of the time the paper does not say, and the difference may be entirely the treatment.+Two consequences. First, the reviewer question "what did you do about the banner?" has no established answer to point at, so **state yours explicitly** — you will be in a minority that does. Second, when you compare your prevalence number against a published one, check what that paper did with the notice before you conclude anything from the difference. Excluding the 236 papers for which the question genuinely does not arise, **about three in five say nothing**, and the difference may be entirely the treatment.
 </WRAP> </WRAP>
  
Line 24: Line 24:
 There are six things a crawl can do, and the corpus records which one each paper chose. They are not interchangeable and they are not on a scale — each answers a different question. There are six things a crawl can do, and the corpus records which one each paper chose. They are not interchangeable and they are not on a scale — each answers a different question.
  
-^ Action ^ What it measures ^ What it costs you ^ Papers in the corpus that state it ^ +^ Action ^ What it measures ^ What it costs you ^ Papers stating it ^ Verified 
-| **no interaction** — load and leave the banner alone | The **pre-consent** web: what a site does before it has any legal basis. This is the right treatment for a violation study, because tracking before consent is the violation | Not what a user experiences. Any "how much tracking is there" number from this treatment is a floor, not a level | **313** | +| **no interaction** — load and leave the banner alone | The **pre-consent** web: what a site does before it has any legal basis. This is the right treatment for a violation study, because tracking before consent is the violation | Not what a user experiences. Any "how much tracking is there" number from this treatment is a floor, not a level | **313** | not audited 
-| **accept all** | The **upper bound**: everything the site is prepared to do with permission. The right treatment for enumerating vendors, purposes and the full cookie set | Says nothing about compliance, and over-states what a typical user is exposed to | **15** | +| **accept all** | The **upper bound**: everything the site is prepared to do with permission. The right treatment for enumerating vendors, purposes and the full cookie set | Says nothing about compliance, and over-states what a typical user is exposed to | 15 | **11** | 
-| **reject all** | Whether refusal is honoured. Only meaningful when paired with another arm | On its own it is uninterpretable — you cannot tell "respects rejection" from "has no tracking anyway" | **2** | +| **reject all** | Whether refusal is honoured. Only meaningful when paired with another arm | On its own it is uninterpretable — you cannot tell "respects rejection" from "has no tracking anyway" | 2 | **2** | 
-| **accept and reject** (two arms, same sites) | The **difference**, which is the quantity almost every consent result is actually about | Doubles the crawl, and the two arms must be otherwise identical — same vantage, same time window, same profile handling | **14** | +| **accept and reject** (two arms, same sites) | The **difference**, which is the quantity almost every consent result is actually about | Doubles the crawl, and the two arms must be otherwise identical — same vantage, same time window, same profile handling | 14 | **14** | 
-| **CMP-specific choices** — set individual purposes | Purpose-level compliance: did rejecting //advertising// stop advertising cookies? | Only works on CMPs whose interface you can drive; the population becomes "sites using CMPs your tool supports", which is not the web | **2** | +| **CMP-specific choices** — set individual purposes | Purpose-level compliance: did rejecting //advertising// stop advertising cookies? | Only works on CMPs whose interface you can drive; the population becomes "sites using CMPs your tool supports", which is not the web | 2 | **2** | 
-| **dismiss or remove** — close the banner, or delete it from the DOM | Nothing about consent. Useful only to unblock a crawl whose real subject is something else | Removing the banner from the DOM is **not** a consent choice: no consent string is written, and the site may behave as it does pre-consent. Say "we removed the overlay", never "we declined" | **3** |+| **dismiss or remove** — close the banner, or delete it from the DOM | Nothing about consent. Useful only to unblock a crawl whose real subject is something else | Removing the banner from the DOM is **not** a consent choice: no consent string is written, and the site may behave as it does pre-consent. Say "we removed the overlay", never "we declined" | 3 | **0** | 
 + 
 +The //Verified// column comes from reading all 36 candidate papers' own full text (see [[#Almost nobody says what they did about consent|below]] and [[provenance:privacy:consent|the provenance page]]). The pattern in it is worth carrying away even if you never touch this corpus: **the enum is trustworthy exactly where the paper had to describe two arms**, and unreliable where a single ambiguous word in a methods paragraph could be misread.
  
 <WRAP important> <WRAP important>
-**Two arms or no claim.** If your result is "sites track users who rejected", you need the rejection arm //and// a baseline. If your result is "sites track before consent", you need the no-interaction arm. A single accept-all crawl supports neither. Only **14 papers in this corpus** run both an accept and a reject arm, which is why so many consent findings are hard to compare.+**Two arms or no claim.** If your result is "sites track users who rejected", you need the rejection arm //and// a baseline. If your result is "sites track before consent", you need the no-interaction arm. A single accept-all crawl supports neither. Only **14 papers in this corpus** run both an accept and a reject arm — and that is the one value the audit above confirmed at 14 out of 14. It is why so many consent findings are hard to compare.
 </WRAP> </WRAP>
  
Line 47: Line 49:
 <WRAP important> <WRAP important>
 Whether the reload can carry the decision at all is a [[Programming:Stateful Stateless|stateful/stateless]] question. A stateless crawl that clears the profile between visits cannot observe post-consent behaviour on a **later** visit, because the consent cookie went with the profile. In this corpus only **115 crawling papers state both a consent action and a statefulness**, and **93 of those are the no-interaction case**. If you interact with banners, statefulness is not an independent choice — say which you used and why. Whether the reload can carry the decision at all is a [[Programming:Stateful Stateless|stateful/stateless]] question. A stateless crawl that clears the profile between visits cannot observe post-consent behaviour on a **later** visit, because the consent cookie went with the profile. In this corpus only **115 crawling papers state both a consent action and a statefulness**, and **93 of those are the no-interaction case**. If you interact with banners, statefulness is not an independent choice — say which you used and why.
 +</WRAP>
 +
 +<WRAP important>
 +**A fifth check, because on many sites the choice does not switch the tag off at all.** Any site running a Google tag (GA4, Google Ads, Tag Manager) can pass the user's consent state to Google rather than simply loading or not loading the tag, and Google requires advertisers serving the EEA to do so in order to keep ad personalisation and measurement.((Google, "Updates to consent mode for traffic in European Economic Area (EEA)", ''support.google.com/tagmanager/answer/13695607'', fetched 2026-08-19: "we are strengthening the enforcement of our EU user consent policy (EU UCP)… you must collect consent for use of personal data from end users based in the EEA and share consent signals with Google". The page does not itself carry the widely-quoted March 2024 enforcement date, so this page does not assert one.)) The consequence for a crawl is concrete: on a consent-mode site a rejection does **not** stop the Google tag from firing — it fires with ''ad_storage'' and ''analytics_storage'' denied and sends cookieless pings instead. A measurement that counts requests, or counts tags loaded, will conclude that rejection did nothing. A measurement that counts cookies set will conclude it worked. **Say which you counted.**
 </WRAP> </WRAP>
  
Line 52: Line 58:
  
 Most consent banners on European sites are operated by a **Consent Management Platform (CMP)**, and a large share of those implement IAB Europe's **Transparency and Consent Framework (TCF)**, which standardises both the API and the storage format. That standardisation is what makes consent machine-readable at scale, and it is why so many measurement papers are TCF papers. Most consent banners on European sites are operated by a **Consent Management Platform (CMP)**, and a large share of those implement IAB Europe's **Transparency and Consent Framework (TCF)**, which standardises both the API and the storage format. That standardisation is what makes consent machine-readable at scale, and it is why so many measurement papers are TCF papers.
 +
 +This section covers what you need to know about the TCF //to make and verify a consent choice//. The string itself — its segments and bit layout, the seven places it can be found, decoding it reproducibly against a pinned Global Vendor List, Google's separate Additional Consent string, and what a decoded string does and does not prove about a site's behaviour — is on [[Privacy:TCF Consent Strings|Decoding TCF Consent Strings]].
  
 TCF sites are a **minority, and you must report the denominator as such.** Matte et al. {[matte2020_cookie]} found a TCF banner on **1,426 of 22,949** reachable European sites (**6.2%**) in 2019; Hils et al. {[hils2021_privacy]} tracked adoption longitudinally and detected TCF implementations on the order of thousands of sites in the top 100k. In Android apps the share is comparable: Morel et al. {[morel2026_tcf]} found TCF in **576 of 4,482 apps (12.85%)**. "Consent on the web" and "TCF consent" are not the same population. TCF sites are a **minority, and you must report the denominator as such.** Matte et al. {[matte2020_cookie]} found a TCF banner on **1,426 of 22,949** reachable European sites (**6.2%**) in 2019; Hils et al. {[hils2021_privacy]} tracked adoption longitudinally and detected TCF implementations on the order of thousands of sites in the top 100k. In Android apps the share is comparable: Morel et al. {[morel2026_tcf]} found TCF in **576 of 4,482 apps (12.85%)**. "Consent on the web" and "TCF consent" are not the same population.
Line 84: Line 92:
 } }
 </file> </file>
 +
 +Run against four European news sites on 2026-08-19 from a non-EU vantage, before touching the banner, it returns this — the shape you should expect from a site whose banner is up and unanswered:
 +
 +<code>
 +www.spiegel.de   => {"success":true,"cmpId":6,"cmpVersion":1,"tcfPolicyVersion":5,
 +                     "eventStatus":"cmpuishown","gdprApplies":true,
 +                     "purposeConsents":{},
 +                     "purposeLegitimateInterests":{"1":false,"2":false,"3":false,"4":false,
 +                       "5":false,"6":false,"7":true,"8":false,"9":true,"10":true},
 +                     "vendorConsentCount":0,
 +                     "tcStringPrefix":"CQpMXQAQpMXQAAGABCENCsFgAAAAAALAAAQ4AAAM"}
 +www.heise.de     => {"success":true,"cmpId":6,...,"eventStatus":"cmpuishown","gdprApplies":true,
 +                     "purposeConsents":{},"purposeLegitimateInterests":{},"vendorConsentCount":0}
 +www.repubblica.it=> {"success":true,"cmpId":123,"cmpVersion":387,...,"tcStringPrefix":""}
 +www.lemonde.fr   => {"error":"no callback within timeout"}
 +</code>
 +
 +Four things that output already teaches you. **''gdprApplies'' was ''true'' from a non-EU IP** on all three that answered — the CMP's own scope decision does not always track your vantage point, so measure it rather than assuming it. **''purposeConsents'' is empty and ''vendorConsentCount'' is 0** while the banner is still up: that is the correct pre-consent state and it is what your no-interaction arm should look like. **Spiegel already asserts legitimate interest for purposes 7, 9 and 10 before any click** — legitimate interest is not consent and is not recorded in ''purposeConsents'', so a study that only reads ''purposeConsents'' will under-count what the site is already doing. And **''lemonde.fr'' defines ''%%__tcfapi%%'' but never invokes the callback within four seconds**, which is why the timeout branch exists: without it your crawler hangs, and without recording the timeout you would score the site as having no TCF.
  
 Three things to record every time, because reviewers ask and papers routinely omit them: Three things to record every time, because reviewers ask and papers routinely omit them:
Line 91: Line 117:
   * **''eventStatus''.** ''useractioncomplete'' is the only value that means a choice was recorded. ''cmpuishown'' with a consent already present is exactly Matte et al.'s //consent stored before choice// violation.   * **''eventStatus''.** ''useractioncomplete'' is the only value that means a choice was recorded. ''cmpuishown'' with a consent already present is exactly Matte et al.'s //consent stored before choice// violation.
  
-**Do not decode the TC string yourself.** It is a versioned bit-packed base64 format; use a maintained decoder and pin its version. Two papers in this corpus report writing their own decoding script, and both had to pin a **Global Vendor List** version to interpret the vendor bitfield — the GVL changes weekly, so a decoded vendor set is only meaningful together with the GVL version you decoded it against. The list is served from ''vendor-list.consensu.org/v3/vendor-list.json'' with numbered archives under ''/v3/archives/'', which is what makes a retrospective decode reproducible at all: **fetch and archive the GVL alongside your crawl**, do not resolve vendor IDs months later.+<WRAP important> 
 +**A consent string set on one site used to be readable on another — this mechanism is retired, and the correction matters.** Under TCF v1.x, and under v2.0's optional //global scope//, a CMP could store the string in a shared cookie on the ''consensu.org'' domain — ''euconsent'' and then ''euconsent-v2'' — readable by any other CMP. Matte et al. {[matte2020_cookie]} tested this in 2019: they planted a consent string in the shared cookie and then asked each site's CMP for its state without touching the banner, and **62 sites (4.3%) returned the same consent string** — their CMP had adopted a consent created by a different CMP entirely. IAB Europe **announced the deprecation of global scope, out-of-band consent and the ''euconsent-v2'' cookie on 22 June 2021, and TC strings established with global scope have been invalid since 1 September 2021.**((IAB Tech Lab, //Transparency and Consent String with Global Vendor & CMP List Formats//, section "What happened to Global Scope and Out of Band?" and the version-history rows for July and September 2021. Fetched from the specification repository on 2026-08-26.)) So the cross-site leakage Matte et al. found is a historical finding, not a hazard of a crawl run today. What survives is the same-site version: a consent string persists across page loads within a site, so a stateful crawl still carries your earlier choice forward. Clear consent storage between visits, or crawl statelessly and reload — and say which you did. 
 +</WRAP> 
 + 
 +**The ''getTCData'' command in the probe above is deprecated.** IAB Tech Lab deprecated it in the CMP API specification with TCF v2.2 (May 2023), in favour of registering an ''addEventListener'' callback; the three required commands are now ''ping'', ''addEventListener'' and ''removeEventListener''. In a four-site spot-check on 2026-08-26 all four CMPs that answered at all still returned a TC string for ''getTCData'', although one set the callback's ''success'' flag to ''false'' while doing so. Published crawlers using the command are therefore not broken. But a CMP is within spec to drop it, and the failure mode is a silently growing "no TCF" bucket. New code should use the listener; [[Privacy:TCF Consent Strings|Decoding TCF Consent Strings]] publishes a tested ''addEventListener'' capture snippet and covers the other six channels the string travels in. 
 + 
 +**Do not decode the TC string ad hoc.** It is a versioned bit-packed base64 format; use a maintained decoder and pin its version — and check //which// package you installed, because the reference implementation moved npm scope and left a three-year-old copy behind under the old name. [[Privacy:TCF Consent Strings|Decoding TCF Consent Strings]] has the details, an audited minimal decoder, and the bit layout it reads. Two papers in this corpus report writing their own decoding script, and both had to pin a **Global Vendor List** version to interpret the vendor bitfield — the GVL changes weekly, so a decoded vendor set is only meaningful together with the GVL version you decoded it against. The list is served from ''vendor-list.consensu.org/v3/vendor-list.json'' with numbered archives under ''/v3/archives/'', which is what makes a retrospective decode reproducible at all: **fetch and archive the GVL alongside your crawl**, do not resolve vendor IDs months later.
  
 **The other reason to read the stored string: it lets you check compliance without trusting the interface.** Smith et al. {[smith2024_gdpr]} decoded TC strings across repeated crawls and found recorded-consent violations in **2.2% of domains and 1.3% of crawls** — a much lower rate than the "72% of sites violate something" headlines elsewhere on this page, precisely because it is a narrow, mechanically checkable question ("does the stored string match the choice made?") rather than a broad legal one. When you report a violation rate, say which of those two kinds of question you asked. **The other reason to read the stored string: it lets you check compliance without trusting the interface.** Smith et al. {[smith2024_gdpr]} decoded TC strings across repeated crawls and found recorded-consent violations in **2.2% of domains and 1.3% of crawls** — a much lower rate than the "72% of sites violate something" headlines elsewhere on this page, precisely because it is a narrow, mechanically checkable question ("does the stored string match the choice made?") rather than a broad legal one. When you report a violation rate, say which of those two kinds of question you asked.
Line 123: Line 155:
   * an optional ''/.well-known/gpc.json'' resource, by which an **origin** declares awareness of and support for GPC. Read the spec's own caveat before you use it as a compliance measure: it "is not intended to convey whether the origin abides by GPC requests from the user agent accessing the resource".   * an optional ''/.well-known/gpc.json'' resource, by which an **origin** declares awareness of and support for GPC. Read the spec's own caveat before you use it as a compliance measure: it "is not intended to convey whether the origin abides by GPC requests from the user agent accessing the resource".
  
-**There is a standard way to turn it on in an automated browser, and you should use it.** §8 of the specification defines two WebDriver extension commands — ''POST /session/{session id}/privacy'' to set the preference and ''GET /session/{session id}/privacy'' to read it back. Driving the preference through WebDriver rather than through a profile pref or an extension means your setup is reproducible and the "did the browser actually send it?" question has an answer. Verify it end to end anyway: log the outgoing ''Sec-GPC'' header on your own endpoint before you crawl anything.+**There is a standard way to turn it on in an automated browser, and you should use it.** §8 of the specification defines two WebDriver extension commands — ''POST /session/{session id}/privacy'' to set the preference and ''GET /session/{session id}/privacy'' to read it back. Driving the preference through WebDriver rather than through a profile pref or an extension means your setup is reproducible and the "did the browser actually send it?" question has an answer.
  
-On the legal side the specification is explicit that its force is jurisdictional: "At least four states have specifically identified GPC as a valid means to exercise legal opt-out rights." Colorado is the sharpest case — the state Attorney General's office states that GPC has been mandatory there since **1 July 2024** and is currently the **only** universal opt-out mechanism the Department recognises. If your paper claims a site is legally obliged to honour GPC, name the state and cite the regulator, not a vendor blog.+<WRAP important> 
 +**Do not enable GPC by injecting the header. It sets one carrier and not the other, and a site that reads the other sees nothing.** Tested on 2026-08-19 with Playwright/Chromium and ''extraHTTPHeaders: { 'Sec-GPC': '1' }'': 
 + 
 +<code> 
 +Sec-GPC on the navigation request = "1" 
 +navigator.globalPrivacyControl     = undefined 
 +</code> 
 + 
 +The header goes out; the DOM property does not exist. Any site whose detection reads ''navigator.globalPrivacyControl'' will treat that browser as not signalling, and your compliance rate will be wrong in a direction you cannot see. How the two carriers are split across real sites is exactly the thing this page told you to measure separately, so do not quietly guarantee that only one of them works. **Set the browser's own preference instead.** In Firefox the relevant preferences in ''StaticPrefList.yaml'' are ''privacy.globalprivacycontrol.enabled'', ''privacy.globalprivacycontrol.functionality.enabled'' and ''privacy.globalprivacycontrol.pbmode.enabled'' (the private-browsing one, overridable by the first).((Verified on 2026-08-19 against ''searchfox.org/mozilla-central'', ''modules/libpref/init/StaticPrefList.yaml''.)) Chromium ships no built-in GPC, so a Chrome-based crawl needs an extension or the WebDriver command above — and either way, **assert both carriers on your own endpoint before the crawl**, not just the header. 
 +</WRAP> 
 + 
 +On the legal side the specification is explicit that its force is jurisdictional: "At least four states have specifically identified GPC as a valid means to exercise legal opt-out rights." That is the spec's own conservative wording; the practical number of US states whose comprehensive privacy laws require honouring a universal opt-out mechanism is now roughly a dozen, and it grows every legislative session — **check the current list for your crawl's date rather than reusing one from a paper**. Colorado is the sharpest case — the state Attorney General's office states that GPC has been mandatory there since **1 July 2024** and is currently the **only** universal opt-out mechanism the Department recognises.((Colorado Attorney General, //Universal Opt-Out Mechanisms//, ''coag.gov/opt-out/'': "Beginning July 1, 2024 … Currently, the only UOOM considered valid by The Department is GPC". Fetched 2026-08-19.)) If your paper claims a site is legally obliged to honour GPC, name the state and cite the regulator, not a vendor blog.
  
 The published compliance numbers are low and are the ones to cite. Zimmeck et al. {[zimmeck2023_gpc]} found that of the sites implementing a US Privacy String, only **54 of 464 (12%)** actually opted the user out when GPC was sent. Hausladen et al. {[hausladen2025_websites]} re-ran it at scale over time and found **44% (1,411/3,226)** in December 2023, **43% (1,473/3,402)** in February 2024 and **45% (1,620/3,566)** in April 2024 — a different, narrower denominator (sites with //all// implemented privacy strings set to opt-out), which is exactly the kind of denominator difference that makes two GPC papers look contradictory when they are not. Charatan and Birrell {[charatan2024_steps]} found **2,429 of the top 25,000 sites (9.9%)** offering a manual opt-out-of-sale link in November 2022, **814** honouring GPC by November 2023, and **340** for which GPC was the //only// opt-out mechanism offered. The published compliance numbers are low and are the ones to cite. Zimmeck et al. {[zimmeck2023_gpc]} found that of the sites implementing a US Privacy String, only **54 of 464 (12%)** actually opted the user out when GPC was sent. Hausladen et al. {[hausladen2025_websites]} re-ran it at scale over time and found **44% (1,411/3,226)** in December 2023, **43% (1,473/3,402)** in February 2024 and **45% (1,620/3,566)** in April 2024 — a different, narrower denominator (sites with //all// implemented privacy strings set to opt-out), which is exactly the kind of denominator difference that makes two GPC papers look contradictory when they are not. Charatan and Birrell {[charatan2024_steps]} found **2,429 of the top 25,000 sites (9.9%)** offering a manual opt-out-of-sale link in November 2022, **814** honouring GPC by November 2023, and **340** for which GPC was the //only// opt-out mechanism offered.
Line 146: Line 189:
  
 <WRAP important> <WRAP important>
-**Measure the tool on your own sample before you trust it.** Demir et al. {[demir2024_bannertools]} evaluated banner-interaction extensions and found each one interacts with **12 (65%)** of the banners shown to it on average (SD 21%, min 48%, max 95%). A third of banners are missed, and which third is not random — it correlates with language, with CMP, and with how the banner is injected. If a tool is your instrument, its success rate on //your// crawl is a number your paper owes the reader.+**Measure the tool on your own sample before you trust it.** Demir et al. {[demir2024_bannertools]} evaluated five banner-interaction extensions on a hand-checked sample and found each one interacts with **65% of the banners it was shown**, on average — the paper writes it as "on average, with 12 (65%) (SD21%max95% min: 48%) of all banners", where the 12 is the mean count on their sample rather than a rate. A third of banners are missed, and which third is not random — it correlates with language, with CMP, and with how the banner is injected. If a tool is your instrument, its success rate on //your// crawl is a number your paper owes the reader.
 </WRAP> </WRAP>
  
Line 167: Line 210:
 </WRAP> </WRAP>
  
-**Which ones the field actually uses.** Counting papers in this corpus that name a tool as ''used'' or ''produced'': Consent-O-Matic **9**, BannerClick **4**, CookieBlock **4**, a custom GPC extension or crawler **4**, autoconsent **3**, Priv-Accept **2**, a TC-string decoder **2**, and one paper each for ConsentChk, CookieEnforcer, GDPR-Consent, "I don't care about cookies", Ninja Cookie, Opt-Out Easy, OptOutCheckSuper Agent and CookieCheck. The long tail is the finding: **almost every consent paper builds its own instrument**, which is the main reason consent results are hard to compare across papers.+**Which ones the field actually uses.** Counting papers in this corpus that name a tool as ''used'' or ''produced'' — 17 distinct names over 39 papers, folded with ''consent_fold.mjs'': Consent-O-Matic **9**, BannerClick **4**, CookieBlock **4**, a custom GPC extension or crawler **4**, autoconsent **3**, EasyList Cookie List **2**, Priv-Accept **2**, a TC-string decoder **2**, and one paper each for ConsentChk, CookieCheck, CookieEnforcer, GDPR-Consent, "I don't care about cookies", Ninja Cookie, Opt-Out Easy, OptOutCheck and Super Agent. The long tail is the finding: **almost every consent paper builds its own instrument**, which is the main reason consent results are hard to compare across papers.
  
 ===== Jurisdiction: Your Vantage Point Chooses Your Banner ===== ===== Jurisdiction: Your Vantage Point Chooses Your Banner =====
Line 173: Line 216:
 The banner you see is chosen by the site from your IP address. Crawl a European site from a US datacentre and you will often get no banner at all, or a different one — and the TCF's own ''gdprApplies'' flag will be ''false''. This makes [[Design:Crawling location|the vantage point]] a co-determinant of every consent result, not an independent choice. The banner you see is chosen by the site from your IP address. Crawl a European site from a US datacentre and you will often get no banner at all, or a different one — and the TCF's own ''gdprApplies'' flag will be ''false''. This makes [[Design:Crawling location|the vantage point]] a co-determinant of every consent result, not an independent choice.
  
-The corpus says the field mostly does not handle this. Of the **349** crawling papers that state a consent action, **68 (19.5%)** state an EU/EEA vantage point, **72 (20.6%)** state a non-EEA vantage only, and **206 (59.0%)** carry a vantage tuple with the location //not stated//. The picture is better among the papers that actually clicked: of the **36** that interacted with a notice, **21 (58.3%)** did so from an EU/EEA vantage — but that still leaves 15 papers that interacted with EU consent banners without saying they were in the EU.+The corpus says the field mostly does not handle this. Of the **349** crawling papers that state a consent action, **68 (19.5%)** state an EU/EEA vantage point, **71 (20.3%)** state a non-EEA vantage only, and **206 (59.0%)** carry a vantage tuple whose location is //not stated//. The remaining four are 3 papers with no vantage tuple at all and 1 that names a place the geo fold cannot resolve. The picture is much better among the papers that actually clicked: of the **29** whose interaction is verified, **21 (72.4%)** did so from an EU/EEA vantage, 3 from a stated non-EEA vantage only, and 5 never said where they were.
  
 Ogut et al. {[ogut2024_dissecting]} is the paper to read on the language side of the same problem: button text is the classifier's input, and //Accept all// is //Aceptar todo// and //Alle akzeptieren// elsewhere. They found a consent notice on **37% (1511)** of successfully loaded sites worldwide. Tang et al. {[tang2025_navigating]} did the regional comparison for violations, finding at least one consent violation on **96.18% (EU)** to **97.72% (US)** of sites, with only **3.82%** enforcing preferences correctly. Ogut et al. {[ogut2024_dissecting]} is the paper to read on the language side of the same problem: button text is the classifier's input, and //Accept all// is //Aceptar todo// and //Alle akzeptieren// elsewhere. They found a consent notice on **37% (1511)** of successfully loaded sites worldwide. Tang et al. {[tang2025_navigating]} did the regional comparison for violations, finding at least one consent violation on **96.18% (EU)** to **97.72% (US)** of sites, with only **3.82%** enforcing preferences correctly.
Line 195: Line 238:
 | //not applicable// | 236 | 21.1% | | //not applicable// | 236 | 21.1% |
 | //no crawl configuration extracted// | 40 | 3.6% | | //no crawl configuration extracted// | 40 | 3.6% |
 +
 +**And the six stated rows do not all survive contact with the papers.** Every one of the 36 papers in the five interacting rows was read against its own full text; **7 (19.4%) are extraction false positives** — the value fired on push-notification permission prompts, on "banner ads", and three times on IRB participant consent. The audited count of papers that verifiably interacted with a consent notice is **29**, or **2.6%** of crawling papers. The script is ''consent_action_audit.mjs'' and every verdict is on [[provenance:privacy:consent|the provenance page]]. ''no-interaction'' was not audited — 313 papers is beyond a hand pass — so treat it as an upper bound in the same way.
  
 The three italic rows are **sentinels, not answers**. ''not-applicable'' is a legitimate value — a crawl of an API, a mobile app store or a set of non-European sites may have no banner to handle — but ''not-stated'' at 44.2% is the finding: nearly half of all crawling papers leave the reader unable to tell which web they measured. The three italic rows are **sentinels, not answers**. ''not-applicable'' is a legitimate value — a crawl of an API, a mobile app store or a set of non-European sites may have no banner to handle — but ''not-stated'' at 44.2% is the finding: nearly half of all crawling papers leave the reader unable to tell which web they measured.
Line 200: Line 245:
 ==== The reporting gap is not closing, but interaction is spreading ==== ==== The reporting gap is not closing, but interaction is spreading ====
  
-^ Bucket ^ Crawling papers ^ State an action ^ Share ^ Actually interacted ^ Share ^ +^ Bucket ^ Crawling papers ^ State an action ^ Share ^ Interaction claimed ^ Verified ^ Share verified 
-| 2010–2013 | 102 | 25 | 24.5% | 0 | 0.0% | +| 2010–2013 | 102 | 25 | 24.5% | 0 | 0 | 0.0% | 
-| 2014–2017 | 167 | 50 | 29.9% | 0 | 0.0% | +| 2014–2017 | 167 | 50 | 29.9% | 0 | 0 | 0.0% | 
-| 2018–2021 | 308 | 99 | 32.1% | 6 | 1.9% | +| 2018–2021 | 308 | 99 | 32.1% | 6 | 3 | 1.0% | 
-| 2022–2024 | 345 | 116 | 33.6% | 17 | 4.9% | +| 2022–2024 | 345 | 116 | 33.6% | 17 | 14 | 4.1% | 
-| 2025–2026* | 198 | 59 | 29.8% | 13 | 6.6% |+| 2025–2026* | 198 | 59 | 29.8% | 13 | 12 | 6.1% |
  
-//* provisional venue-years.// Two separate trends. **Whether a paper says anything** has moved by about nine points in sixteen years and is flat since 2018 — this is not a solved reporting problem. **Whether a paper interacts** starts at exactly zero before the GDPR and rises steadily afterwards: the treatment arrived with the law, as you would expect, and is now in roughly one crawling paper in fifteen.+//* provisional venue-years.// Two separate trends. **Whether a paper says anything** moved from **24.5%** in 2010–2013 to a peak of **33.6%** in 2022–2024 and back to **29.8%** in the provisional 2025–2026 bucket — about five points net over sixteen yearsand no better in the latest bucket than it was before the GDPR. This is not a solved reporting problem, and it is not obviously improving. **Whether a paper interacts** starts at exactly zero before the GDPR and rises steadily afterwards: the treatment arrived with the law, as you would expect, and is now in roughly one crawling paper in sixteen. Note that the false positives cluster in the early buckets — the extraction is most likely to mistake something else for a consent action in a paper that has nothing to do with consent, which is exactly the pre-2022 population.
  
 ==== The consent literature itself ==== ==== The consent literature itself ====
Line 214: Line 259:
  
 ^ Venue ^ Papers in S2 ^ Papers in corpus ^ Share of that venue ^ ^ Venue ^ Papers in S2 ^ Papers in corpus ^ Share of that venue ^
-| PETS | 30 | 510 | 5.9% |+| PETS | 30 | 510 | **5.9%** |
 | USENIX Security | 14 | 1,410 | 1.0% | | USENIX Security | 14 | 1,410 | 1.0% |
-| IMC | 7 | 638 | 1.1% | 
 | TheWebConf | 8 | 843 | 0.9% | | TheWebConf | 8 | 843 | 0.9% |
 +| IMC | 7 | 638 | 1.1% |
 | CCS | 7 | 990 | 0.7% | | CCS | 7 | 990 | 0.7% |
 | NDSS | 3 | 701 | 0.4% | | NDSS | 3 | 701 | 0.4% |
 | IEEE S&P | 3 | 767 | 0.4% | | IEEE S&P | 3 | 767 | 0.4% |
  
-**PETS is where this work lives**, by a factor of six over the next venue as a share of its own programme. If you are surveying consent measurement and you skip PETS, you have skipped the field. (Note also that this corpus does not contain CHI, SOUPS, EuroS&P, ACSAC or WPES, all of which publish consent work — see the limitations below.)+**PETS is where this work lives**, by more than a factor of five over the next venue as a share of its own programme. If you are surveying consent measurement and you skip PETS, you have skipped the field. (Note also that this corpus does not contain CHI, SOUPS, EuroS&P, ACSAC or WPES, all of which publish consent work — see the limitations below.)
  
 Per year: 1 (2018), 4 (2019), 3 (2020), 5 (2021), 9 (2022), 9 (2023), **20 (2024)**, 15 (2025*), 6 (2026*). The pre-2018 count is essentially zero, which is what you would expect of a literature created by a statute. Per year: 1 (2018), 4 (2019), 3 (2020), 5 (2021), 9 (2022), 9 (2023), **20 (2024)**, 15 (2025*), 6 (2026*). The pre-2018 count is essentially zero, which is what you would expect of a literature created by a statute.
  
-In **60 of the 72 (83.3%)** the consent mechanism is the object of study; in the other **12 (16.7%)** it appears only as an instrument — a paper measuring something else that had to get past the banner. **57 (79.2%)** measure the web and **15 (20.8%)** measure mobile apps; consent-dialog measurement in apps is a real and growing subfield {[nguyen2022_freely,koch2023_enough,morel2026_tcf,zimmeck2026_exercising]}, and its methods do not transfer from the web unchanged.+In **60 of the 72 (83.3%)** the consent mechanism is the object of study; in the other **12 (16.7%)** it appears only as an instrument — a paper measuring something else that had to get past the banner. **57** measure the web and **15** measure mobile apps — the field is multi-valued and a paper can do both, and 7 also measure some other online service — so these are not two halves of a partition. Consent-dialog measurement in apps is a real and growing subfield {[nguyen2022_freely,koch2023_enough,morel2026_tcf,zimmeck2026_exercising]}, and its methods do not transfer from the web unchanged.
  
 ==== How consent notices get classified ==== ==== How consent notices get classified ====
Line 256: Line 301:
 | US children / education / health / finance (COPPA, …) | 7 | 13.2% | | US children / education / health / finance (COPPA, …) | 7 | 13.2% |
 | EU platform / digital-market regulation (DSA, …) | 2 | 3.8% | | EU platform / digital-market regulation (DSA, …) | 2 | 3.8% |
 +
 +Three further families carry one paper each and are omitted above: non-EU/US data protection law, a national-rules catch-all, and one string the fold could not place. The unfolded residue is on the provenance page.
  
 **The GDPR is not the cookie law.** Consent for storing or reading information on a device comes from Article 5(3) of the **ePrivacy Directive**; the GDPR supplies the definition of valid consent that Article 5(3) points at. Only 20 of 53 papers name ePrivacy at all, and a compliance claim that cites the GDPR alone for a cookie finding is citing the wrong instrument. That also changes **who enforces it** — see [[Practices:Legal enforcement|Legal enforcement]]. **The GDPR is not the cookie law.** Consent for storing or reading information on a device comes from Article 5(3) of the **ePrivacy Directive**; the GDPR supplies the definition of valid consent that Article 5(3) points at. Only 20 of 53 papers name ePrivacy at all, and a compliance claim that cites the GDPR alone for a cookie finding is citing the wrong instrument. That also changes **who enforces it** — see [[Practices:Legal enforcement|Legal enforcement]].
  
-If you are turning observations into violation claims, two EDPB documents are the cheapest way to align your rules with what regulators actually said, and both are worth reading before you write your own taxonomy: the **Report of the work undertaken by the Cookie Banner Taskforce** (18 January 2023), which is the closest thing to an agreed list of what a non-compliant banner looks like across the EU, and **Opinion 08/2024 on Valid Consent in the Context of Consent or Pay Models Implemented by Large Online Platforms** (17 April 2024), which is the reference for cookiewall studies of the kind Rasaii et al. {[rasaii2023_thou]} pioneered.((Both fetched from ''edpb.europa.eu'' on 2026-08-19; the dates above are the dates the EDPB's own document pages carry. Opinion 08/2024 also has a published corrigendum — check you have the corrected version.))+If you are turning observations into violation claims, three EDPB documents are the cheapest way to align your rules with what regulators actually said, and all three are worth reading before you write your own taxonomy:((All three fetched from ''edpb.europa.eu'' on 2026-08-19; the dates are the ones the EDPB's own document pages carry. Opinion 08/2024 has a published corrigendum — check you have the corrected version.)) 
 + 
 +  * **Report of the work undertaken by the Cookie Banner Taskforce** (18 January 2023) — the closest thing to an agreed list of what a non-compliant banner looks like across the EU
 +  * **Guidelines 2/2023 on the Technical Scope of Art. 5(3) of the ePrivacy Directive**final version **16 October 2024** — the one that decides **what your measurement is even allowed to be about**. It reads Article 5(3) as covering far more than cookies: tracking pixels, URL and link decoration, local processing followed by transmission, and IP-only tracking. If your study measures "cookie consent" and your denominator is cookies, this document says you have scoped the legal question too narrowly. 
 +  * **Opinion 08/2024 on Valid Consent in the Context of Consent or Pay Models Implemented by Large Online Platforms** (17 April 2024) — the reference for cookiewall studies of the kind Rasaii et al. {[rasaii2023_thou]} pioneered. 
  
 ==== What the papers found: figures with their own denominators ==== ==== What the papers found: figures with their own denominators ====
Line 299: Line 351:
   * **Sentinels are counted as what they are.** ''not-stated'' and ''not-applicable'' are never folded into a stated value; where they are the largest row, that is the finding.   * **Sentinels are counted as what they are.** ''not-stated'' and ''not-applicable'' are never folded into a stated value; where they are the largest row, that is the finding.
   * **Free-text names were folded before counting, and the residue is printed.** The consent-tool fold leaves 5 distinct unmapped names over 5 papers, all of them IAB artefacts that are not banner-interaction tools (''IAB ads.txt crawler'', ''IAB anti-ad-block script'', the IAB content taxonomy). The law fold leaves 2 (''Digital Economy Act 2017'', ''Act against Unfair Competition (UWG)''). The vantage fold leaves 5 strings that name no place (''different continents'', ''various geographic regions'').   * **Free-text names were folded before counting, and the residue is printed.** The consent-tool fold leaves 5 distinct unmapped names over 5 papers, all of them IAB artefacts that are not banner-interaction tools (''IAB ads.txt crawler'', ''IAB anti-ad-block script'', the IAB content taxonomy). The law fold leaves 2 (''Digital Economy Act 2017'', ''Act against Unfair Competition (UWG)''). The vantage fold leaves 5 strings that name no place (''different continents'', ''various geographic regions'').
-  * **Every per-paper figure in the table above was checked against the paper's own text**, not against the extraction's summary of it61 literals, 60 found in both the column-repaired and the plain rendering, 1 in the column-repaired rendering only, **0 not found**. That pass caught two errors in an earlier draft of this page — a figure attributed to Bouhoula et al. that the paper writes without a thousands separator, and a Matte et al. percentage this page had rounded to the wrong decimal. +  * **Every per-paper figure on this page was checked against the paper's own text**, not against the extraction's summary of it. The check covers 61 literals — a superset of what is publishedsince ten were checked and then cut — and found 60 in both the column-repaired and the plain rendering, 1 in the column-repaired rendering only, and **0 not found**. That pass caught two errors in an earlier draft of this page — a figure attributed to Bouhoula et al. that the paper writes without a thousands separator, and a Matte et al. percentage this page had rounded to the wrong decimal. 
-  * **''consentAction'' is one of the schema'more reliable fields**: an independent extraction run over the same text agrees with it on **93%** of papers, which is why it is published as a percentage rather than a ranking. That figure was measured on the earlier 4,322-paper corpus and has not been re-measured since.+  * **''consentAction'' was audited paper by paper, and it needed to be.** The schema'stability comparison puts it in the reliable band — an independent extraction run over the same text agrees with it on 93% of papers — but that measures whether two runs agreenot whether either is right, and it was measured on the earlier 4,322-paper corpus. Reading all 36 interacting papers found **7 false positives (19.4%)**, concentrated in ''accept-all'' and ''dismiss-or-remove''. **Note also that the field's own evidence quote cannot catch this**: ''crawlConfig'' carries one quote for the whole configuration object, so the quote behind a ''consentAction'' value usually evidences statefulness or crawl depth instead. Spot-checking quotes, which is the standard check on this site, is structurally blind here.
   * **Venue coverage.** Seven venues only. **CHI, SOUPS, EuroS&P, ACSAC, RAID, AsiaCCS and WPES are absent**, and that bites harder on this page than on most: the usable-privacy half of the consent literature (Nouwens et al., Habib et al., Utz et al.'s follow-ups) is largely CHI and SOUPS work. Every count here is a lower bound.   * **Venue coverage.** Seven venues only. **CHI, SOUPS, EuroS&P, ACSAC, RAID, AsiaCCS and WPES are absent**, and that bites harder on this page than on most: the usable-privacy half of the consent literature (Nouwens et al., Habib et al., Utz et al.'s follow-ups) is largely CHI and SOUPS work. Every count here is a lower bound.
  
Line 313: Line 365:
   - **Which law you are assessing, by article.** ePrivacy Art. 5(3) for the storage/access question, GDPR Art. 4(11) and 7 for the validity-of-consent question; both, usually.   - **Which law you are assessing, by article.** ePrivacy Art. 5(3) for the storage/access question, GDPR Art. 4(11) and 7 for the validity-of-consent question; both, usually.
   - **The banner language and the site's locale**, if your button classifier is language-dependent {[ogut2024_dissecting]}.   - **The banner language and the site's locale**, if your button classifier is language-dependent {[ogut2024_dissecting]}.
 +  - **Whether you cleared shared-domain consent cookies between sites**, if the crawl is stateful. A consent string set on one site is readable on another {[matte2020_cookie]}.
 +  - **What you counted as the effect of the choice** — requests, tags loaded, or cookies set. On a Google consent-mode site these disagree, because the tag fires either way.
   - **Your violation definition, verbatim**, and preferably as machine-checkable rules. This is what makes your 72% and someone else's 96% comparable.   - **Your violation definition, verbatim**, and preferably as machine-checkable rules. This is what makes your 72% and someone else's 96% comparable.
  
 ===== Open Questions ===== ===== Open Questions =====
  
-<wrap todo>+<WRAP todo>
   * **Nobody has replicated the banner-interaction-tool evaluation since 2024.** Demir et al.'s 65% is one measurement, on one sample, of tools that have since changed. It is load-bearing for a lot of this page and for a lot of published crawls, and re-running it is a well-scoped, publishable study.   * **Nobody has replicated the banner-interaction-tool evaluation since 2024.** Demir et al.'s 65% is one measurement, on one sample, of tools that have since changed. It is load-bearing for a lot of this page and for a lot of published crawls, and re-running it is a well-scoped, publishable study.
   * **LLM-driven banner interaction is unmeasured as an //instrument//, and alarming as a //subject//.** A language model that reads any banner in any language is the obvious successor to CSS-selector rule sets, and exactly one paper in this corpus puts an LLM anywhere near a consent artefact. Nobody has published cost, latency, determinism or accuracy against a hand-labelled set — and determinism is the hard one for a measurement instrument. Meanwhile the reverse question is opening up: work outside this corpus reports that browser-automation agents accept consent banners even when instructed to refuse everything.((Reported in a CHI 2026 Extended Abstracts paper on browser automation by LLM agents and consent, which measures agents defaulting to accept under explicit deny-all instructions. Not in this corpus (CHI is absent) and not read in full by this page's author — treat as a pointer to look up, not as a verified figure.)) Whether an agentic browser can be trusted to express a consent choice is now both a methods question and a research topic.   * **LLM-driven banner interaction is unmeasured as an //instrument//, and alarming as a //subject//.** A language model that reads any banner in any language is the obvious successor to CSS-selector rule sets, and exactly one paper in this corpus puts an LLM anywhere near a consent artefact. Nobody has published cost, latency, determinism or accuracy against a hand-labelled set — and determinism is the hard one for a measurement instrument. Meanwhile the reverse question is opening up: work outside this corpus reports that browser-automation agents accept consent banners even when instructed to refuse everything.((Reported in a CHI 2026 Extended Abstracts paper on browser automation by LLM agents and consent, which measures agents defaulting to accept under explicit deny-all instructions. Not in this corpus (CHI is absent) and not read in full by this page's author — treat as a pointer to look up, not as a verified figure.)) Whether an agentic browser can be trusted to express a consent choice is now both a methods question and a research topic.
-  * **Consent measurement is about to be measuring a different law.** The ePrivacy Regulation proposal — the thing that was going to replace the 2002 Directive — was **withdrawn by the Commission in February 2025**, and the Digital Omnibus package tabled in November 2025 proposes moving the cookie rules into the GDPR itselfNeither is settled. longitudinal consent study spanning 2025–2027 will straddle a change in the legal object it is measuring, and should say so.((The withdrawal and the Omnibus proposal are corroborated across independent policy trackers but were **not** verified here against a primary Commission document; treat the dates as approximate and check them before citing. The UK is a separate and firmer case: the Data (Use and Access) Act 2025 amended PECR to exempt some analytics and functionality cookies from prior consent, with the changes taking effect in early 2026 — also secondary-sourced here.))+  * **Consent measurement is about to be measuring a different law, and the primary documents exist.** The **Digital Omnibus** proposal, **COM(2025) 837 of 19 November 2025**, would insert a new **Article 88a into the GDPR** carrying "the consent requirement for the storing or accessing of personal data on the terminal equipment of natural persons" — that is, it moves the cookie rule out of the ePrivacy Directive and into the GDPR.((EUR-Lex, CELEX ''52025PC0837'', fetched 2026-08-19. The quoted phrase is from the Explanatory Memorandum's description of paragraph 12.)) The EDPB and EDPS jointly opined on it on **11 February 2026** (Joint Opinion 2/2026)supporting simplification but warning that splitting the cookie rules across instruments risks legal uncertainty.((''edpb.europa.eu'', "EDPB-EDPS Joint opinion 2/2026 on the Proposal for a Regulation as regards the simplification of the digital legislative framework (Digital Omnibus)", legislative opinion dated 11 February 2026Fetched 2026-08-19. Its editorial note corrects the proposal reference to COM(2025) 837.)) **It is a proposal, not law**, and it is not settled. But a longitudinal consent study spanning 2025–2028 will straddle a change in the legal object it measures, and should say which regime each wave sits under. 
 +  * **The UK has already moved, and by more than the EU has.** The Data (Use and Access) Act 2025 amended PECR to exempt several categories — including aggregate-statistics analytics — from prior consent, with effect from **5 February 2026**, and raised the maximum PECR fine from £500,000 to £17.5m or 4% of global turnover. The ICO's own storage-and-access guidance is being consulted on rather than settled.((The commencement date and the fine cap are corroborated across independent legal trackers; the ICO's guidance page confirms only that a revised version is out for consultation. **Not** confirmed here against the Act's own commencement regulations — check before citing. A UK-vantage crawl in 2026 is measuring a different rule from an EU-vantage one.))
   * **The reload effect has been measured once** {[rasaii2025_crumbs]}. If 25% of post-rejection change only appears after a reload, an unknown share of the published consent literature under-reports the effect of rejection. Which share is an answerable question.   * **The reload effect has been measured once** {[rasaii2025_crumbs]}. If 25% of post-rejection change only appears after a reload, an unknown share of the published consent literature under-reports the effect of rejection. Which share is an answerable question.
   * **Consent revocation is nearly unstudied.** One paper {[kancherla2025_johnny]}, 158 sites. Withdrawal is as legally required as consent and is far harder to automate.   * **Consent revocation is nearly unstudied.** One paper {[kancherla2025_johnny]}, 158 sites. Withdrawal is as legally required as consent and is far harder to automate.
   * **No shared benchmark exists.** There is no public, versioned set of annotated consent notices that a new detector can report against, which is why every paper reports precision and recall on its own hand-labelled sample and none of them are comparable. Building one would be a bigger contribution than most new detectors.   * **No shared benchmark exists.** There is no public, versioned set of annotated consent notices that a new detector can report against, which is why every paper reports precision and recall on its own hand-labelled sample and none of them are comparable. Building one would be a bigger contribution than most new detectors.
-  * **The reporting gap itself.** 44.2% of crawling papers say nothing about consent, and that has not improved since 2018. A one-line methods sentence would fix it; the question is why it does not. +  * **The reporting gap itself.** 44.2% of crawling papers say nothing about consent, and the share that says //something// is no higher in 2025–2026 than it was in 2014–2017. A one-line methods sentence would fix it; the question is why sixteen years of the field have not produced one. 
-</wrap>+  * **How many of the 313 ''no-interaction'' papers really did not interact** is unknown. The 36 papers claiming an interaction were read one by one and 7 turned out not to have interacted; nobody has done the same in the other direction, and 313 is too many for a hand pass. If the error is symmetric, the true count is somewhere either side of 29 — which is a reason to treat every figure in this section as an order of magnitude and to read the papers you actually compare yourself against
 +</WRAP>
  
 ===== Related Pages ===== ===== Related Pages =====
Line 331: Line 387:
   * [[Privacy:Requests#Cookie Notices and Their Interactive Elements|Classifying Web Requests]] — detecting the notice and labelling its buttons, with the comparison table of detectors.   * [[Privacy:Requests#Cookie Notices and Their Interactive Elements|Classifying Web Requests]] — detecting the notice and labelling its buttons, with the comparison table of detectors.
   * [[Privacy:Cookies|Classifying Cookies]] — what the cookies you observe before and after the click actually are, and the CookieBlock/Cookiepedia label sources.   * [[Privacy:Cookies|Classifying Cookies]] — what the cookies you observe before and after the click actually are, and the CookieBlock/Cookiepedia label sources.
 +  * [[Privacy:TCF Consent Strings|Decoding TCF Consent Strings]] — the TC string and Google's Additional Consent string as artefacts: bit layout, where they hide, decoding them reproducibly, and what they do and do not prove.
   * [[Programming:Interaction|Interaction with websites]] and [[Programming:Stateful Stateless|Stateful and stateless crawling]] — the crawler-side mechanics this page assumes.   * [[Programming:Interaction|Interaction with websites]] and [[Programming:Stateful Stateless|Stateful and stateless crawling]] — the crawler-side mechanics this page assumes.
   * [[Programming:Crawler|Comparison of crawling libraries]] — which crawlers ship a consent-interaction step.   * [[Programming:Crawler|Comparison of crawling libraries]] — which crawlers ship a consent-interaction step.
privacy/consent.1787110189.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