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 downloadt | 9,1 kB in 3 verzoeken (brotli), 9,9 kB met gzip |
|---|---|
| Wat de pagina ophoudt | 3,0 kB synchroon, de rest volgt erachteraan |
| Cookies vóór de keuze | geen |
| IP-adressen die wij bewaren | geen, een bezoeker is een willekeurig nummer |
| Externe bibliotheken | geen, vanilla javascript |
| Waar het draait | eigen 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.js02 · 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
- Consent Mode stuurt betrouwbaar alleen de tags van Google aan. Een pixel of een sessieopname die als eigen HTML in een Tag Manager-container zit, vuurt gewoon, tenzij er per tag een consent check op staat. Wij auditen die container niet, dus wij kunnen er ook niet voor tekenen. Onze scan zet zulke gevallen apart in het rapport.
- Een onbekend script dat vast in de HTML staat, houdt niemand tegen. De HTML-parser start dat verzoek vóór er javascript gedraaid heeft. Dat is een eigenschap van de browser, geen implementatiekeuze. Zo'n tag kan dus alleen in de paginacode zelf opgelost worden, door het merken zoals hierboven beschreven. De scan wijst aan welke tags het betreft en op welke pagina ze staan; het aanpassen gebeurt in de site, die niet van ons is.
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
- Geen zelfbedieningsdashboard. Teksten, talen en de cookielijst beheren wij. Een klantportaal met eigen login en MFA staat op de planning; er komt geen publieke route naartoe voordat die login er is.
- Geen IAB TCF-certificering. De architectuur is erop voorbereid (de signaallaag met adapters, een
__tcfapi-stub vanaf dag één), maar het keurmerk is er niet. Voor advertentieveilingen die dat vereisen is dit vandaag geen oplossing. - De scan start met de hand. Bij de uitrol en op vraag. Periodiek en automatisch komt er aan, op aparte infrastructuur, want een browser hoort niet op de server waar het platform draait.
- Onderscheppen staat aan voor nieuwe klanten, bij bestaande klanten pas na een test. Nieuwe functies komen bij een bestaande klant nooit stilzwijgend aan.
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.