Cookban

Technische onderbouwing

Deze pagina is voor de webbouwer, de IT-verantwoordelijke of de DPO die wil weten wat er precies gebeurt. Elk cijfer hieronder is gemeten, met de datum erbij, en zelf na te rekenen. Wat niet gemeten is, staat er niet.

01 · Cijfers

Cijfers, na te rekenen

Dit is wat een bezoeker van deze pagina binnenhaalt. Gemeten op 17 september 2026.

Wat de bezoeker downloadt9,1 kB in 3 verzoeken (brotli), 9,9 kB met gzip
Wat de pagina ophoudt3,0 kB synchroon, de rest volgt erachteraan
Cookies vóór de keuzegeen
IP-adressen die wij bewarengeen, een bezoeker is een willekeurig nummer
Externe bibliothekengeen, vanilla javascript
Waar het draaiteigen server in de Europese Unie

Zelf nameten:

curl -s -H "Accept-Encoding: br" -o /dev/null -w "%{size_download}\n" \
  https://cdn.cookban.com/jozef.js

02 · Blokkeren

Tegenhouden, in drie lagen

1. Markeren

Scripts en iframes die op de site gemarkeerd zijn (type="text/plain" met een categorie en de bron in data-src) laden niet tot de bezoeker die categorie aanvaardt. Dit werkt ook bij tags die vast in de HTML staan, en het overleeft async en defer: de browser voert text/plain niet uit.

2. Onderscheppen

Scripts die pas later door andere code worden ingevoegd, worden bij het invoegen omgezet naar diezelfde geblokkeerde vorm, op basis van een catalogus van bekende trackerhosts. Gemeten in september 2026: vijf op vijf tegengehouden vóór de keuze, vijf op vijf vrijgegeven erna. Staat per site aan of uit.

3. Google Consent Mode v2

De keuze gaat door met alle signalen die Google verwacht, inclusief ad_user_data en ad_personalization die sinds maart 2024 vereist zijn. De standaardopzet is basic, niet advanced: de Google-tag laadt pas ná de keuze van de bezoeker. De Tag Manager-container zelf mag laden, die zet niets weg.

Twee grenzen die wij zelf benoemen

03 · Bewijs

Hoe het bewijs in elkaar zit

Een keten die niet bij te werken is

Elke registratie hangt met een berekende vingerafdruk vast aan de vorige. Eén record achteraf wijzigen breekt alles wat erna komt, en dat is bij de controle meteen zichtbaar. Wijzigen en wissen zijn in de database zelf geblokkeerd, ook voor ons, inclusief TRUNCATE.

Wat de bezoeker echt zag

Elke registratie verwijst naar de exacte bannerversie en policyversie die op dat moment golden. Niet alleen dát iemand instemde, maar met welke tekst en welke cookielijst.

Export met ketencontrole

GET /export geeft de registraties over een periode, met het tijdstip van de keuze naast het tijdstip van aankomst bij ons, en een controle die zegt of de keten onbeschadigd is. Als JSON of CSV. Wie welke export opvroeg, wordt bijgehouden.

Een keuze die niet meer geldt

Verloopt de bewaartermijn, of wijzigt de banner- of policyversie, dan komt de vraag terug en wordt dat vastgelegd als een nieuwe vraag (reprompt), niet als een gewijzigde voorkeur. Voor een auditor is dat een ander feit.

Een keuze gaat niet verloren

Valt de verbinding weg op het moment van de keuze, dan wordt ze lokaal bewaard en bij het volgende bezoek verstuurd met het oorspronkelijke tijdstip. Gemeten, niet aangenomen.

Global Privacy Control

Staat dat signaal aan in de browser, dan wordt het gevolgd nog vóór de bezoeker iets aanklikt, en vastgelegd met bron gpc.

04 · Scanner

De scanner

De hele site, niet de startpagina

Pagina's worden gevonden via robots.txt, de sitemap.xml, de hreflang-verwijzingen en de interne links. Het bezoek loopt via een wachtrij per taalversie, zodat alle talen aan de beurt komen. Voor een audit gaat de scan over de hele site; voor een eerste indruk is er een snelle variant.

Met de veroorzaker erbij

Per derde partij en per cookie: op welke pagina die voor het eerst opdook, welk script hem inlaadde, welk soort verzoek het was (script, afbeelding, XHR, voorverbinding) en hoe lang de cookie leeft. Dat laatste maakt het verschil tussen een geladen tracker en een simpele verwijzing.

Twee runs per scan

Eerst zonder enige keuze: wat dan al vertrekt, hoort er niet te zijn. Daarna met alles aanvaard: dat geeft het volledige beeld van de site. Het verschil tussen de twee staat apart in het rapport.

Elke scan blijft bewaard

Een nieuwe scan komt naast de oude, met tijdmarkering, dus verandering is zichtbaar. Een scan die onderweg iets niet kon afwerken, meldt dat zelf in plaats van als volledig door te gaan.

05 · Classificatie

Hoe iets een categorie krijgt

Elke host en elke cookienaam draagt de categorie, de motivatie voor die categorie en de datum van de beoordeling. Vraagt een controleur waarom iets als statistiek geldt, dan is er een antwoord. Wat wij niet kennen, krijgt geen gok: het komt in een lijst die beoordeeld moet worden.

Vaste regel: geen enkel domein van een ingesloten dienst van derden valt onder "noodzakelijk". Een externe widget, video, kaart, formulier of chat heeft eigen doeleinden en valt niet onder de uitzondering van artikel 5(3) ePrivacy. Die uitzondering wordt beoordeeld vanuit de dienst die de bezoeker aan de sitehouder vraagt, niet vanuit de dienst die de leverancier levert (EDPB richtsnoeren 2/2023). Zulke embeds krijgen minstens "voorkeuren", met een vlak en een knop op de plaats van de inhoud, zodat de klik zelf de toestemming is.

Waar app- en marketingdomein van dezelfde leverancier verschillen, worden die apart beoordeeld: het app-domein waar de widget vandaan komt is functioneel, het marketingdomein met de eigen analytics en advertentietags is marketing.

06 · Insluitcode

De insluitcode

Eén regel, bovenaan in de <head>, vóór een eventuele Tag Manager:

<script src="https://cdn.cookban.com/jozef.js" data-domain="..."></script>

In die regel staat alleen wie de site is, nooit wat de banner moet doen. Talen, categorieën, teksten, bewaartermijnen en de cookielijst komen van onze kant. Daardoor hoeft die regel nooit meer te wijzigen, ook niet als er functies bijkomen. Er staat geen versienummer in het pad, zodat een bestaande klant nooit op een oude versie blijft hangen.

De cookieverklaring kan je op dezelfde manier op je site zetten, met een div en een script dat de lijst rechtstreeks uit het platform haalt. Wijzigt de lijst, dan wijzigt je pagina mee.

07 · Logboeken

Wat er gelogd wordt

Alles wat gedrag of betekenis bepaalt, wordt vastgelegd met oud én nieuw, wanneer, door wie en waarom: statuswijzigingen van een domein, wijzigingen aan instellingen en categorieën, wijzigingen aan de catalogus, exports, en de controles die wij op een klantsite uitvoeren. Die logboeken zijn append-only, gevuld door de database zelf en niet door de toepassing, zodat ook een rechtstreekse ingreep een spoor achterlaat.

Geweigerde verzoeken worden per domein per uur geteld. Dat is hoe wij zien dat een uitrol ergens fout staat, zonder iets over een bezoeker te bewaren.

08 · Grenzen

Wat er nog niet is

09 · Contact

Vragen die hier niet beantwoord zijn

Stel ze gewoon. Is het antwoord "dat hebben wij niet gemeten", dan zeggen wij dat, en meestal meten wij het daarna.

tom@lust4live.be · +32 473 195 182

Er is ook een samenvatting van deze pagina in platte tekst, bedoeld voor taalmodellen die over Cookban gevraagd worden: llms.txt.