Technisch
How We Built a System That Scans 100,000 Websites for Cookie Consent Violations
GDPR Privacy Monitor Engineering · 2026-04-13 · 7 min leestijd
Geautomatiseerde controle van toestemmingsnaleving klinkt eenvoudig totdat u het probeert te bouwen. De naïeve aanpak -- een pagina ophalen, controleren op cookies, zoeken naar een banner -- mist het meeste van wat ertoe doet. Toestemmingsschendingen zijn gedragsmatig, niet structureel. Ze manifesteren zich in de timing van scriptuitvoering, de volgorde van netwerkverzoeken, de reactie van UI-elementen op gebruikersinteractie, en de persistentie van status over paginaladingen. U kunt niets hiervan beoordelen zonder een echte browser te draaien, met de pagina te interageren zoals een mens dat zou doen, en vast te leggen wat er daadwerkelijk op netwerkniveau gebeurt.
Dit bericht beschrijft hoe we de scannerengine achter GDPR Monitor hebben gebouwd, de technische uitdagingen die het meeste van onze tijd in beslag namen, de architectuurbeslissingen die we namen en waarom, en de beperkingen waarover we eerlijk zijn. Als u werkt aan webnaleving, browserautomatisering of grootschalige webmeting, zou u hier iets nuttigs moeten vinden.
De Pipeline-Overzicht
Elke scan doorloopt zes fasen. Het begrijpen van de pipeline is noodzakelijke context voor de specifieke uitdagingen die volgen.
Fase 1: Browserstart en isolatie. Een schone Chromium-instantie start met nul status -- geen cookies, geen localStorage, geen cache, geen service workers. Dit is de cleanroom-garantie die de meting voor toestemming zinvol maakt. We configureren een standaard viewport, realistische user-agent en Accept-Language headers die overeenkomen met het doelland, en standaard browserflags. Elke scan krijgt zijn eigen browserproces; er is geen statuslekkage tussen scans. Fase 2: Navigatie en snapshot voor toestemming. De scanner navigeert naar de doel-URL, wacht tot de pagina een stabiele status bereikt (netwerk inactief, DOM stabiel) en legt alles vast wat er is gebeurd: ingestelde cookies, gemaakte netwerkverzoeken (met volledige URL, timing en responsmetadata), gecontacteerde domeinen van derden en een schermvullend screenshot. Dit snapshot beantwoordt de fundamentele vraag: wat deed deze website voordat de gebruiker enige mogelijkheid had om toestemming te geven? Fase 3: CMP-detectie en banneridentificatie. De scanner probeert het toestemmingsbeheerplatform te identificeren en de toestemmingsbanner, accepteerknop en weigerknop te lokaliseren. Dit gebruikt een gelaagd detectiesysteem dat hieronder in detail wordt beschreven. Fase 4: Toestemmingsinteractie. De scanner interageert met de banner -- klikt op accepteren voor de standaardstroom, klikt op weigeren voor de weigerstroom-test. Het wacht tot de pagina stabiliseert na interactie, rekening houdend met animaties, scriptherevaluatie en vertraagde tagactivering. Fase 5: Snapshot na toestemming en differentiële analyse. Een tweede volledig snapshot legt de status vast na toestemmingsinteractie. Het vergelijken van snapshots voor en na toestemming onthult wat er is veranderd: nieuwe cookies, nieuwe trackingverzoeken, toestemmingsstatus in CMP-API's. Fase 6: Analyse, classificatie en rapportgeneratie. Ruwe gegevens voeden analysemodules: cookieclassificatie tegen onze database, trackervergelijking tegen bekende patronen, cookie-levensduurvaluatie, toegankelijkheidsaudit van de banner, Google Consent Mode-validatie, fingerprintsignaaldetectie en risicoscoring. De output is een gestructureerd rapport met bevindingen, bewijsartefacten en een samengestelde risicoscore.Elke fase produceert bewijs met tijdstempels dat duurzaam wordt opgeslagen. Elke bevinding kan worden herleid tot specifieke netwerkverzoeken, cookievermeldingen of screenshots.
Uitdaging 1: CMP-Detectie -- 45 Platforms, Oneindige Variaties
Toestemmingsbeheer is niet gestandaardiseerd. Er is geen universeel HTML-attribuut, geen verplichte JavaScript-API, geen consistente DOM-structuur die zegt "dit is een toestemmingsbanner." Er zijn 45 verschillende CMP's in onze detectiebibliotheek, elk met eigen DOM-structuur, scriptsignaturen, JavaScript-globale variabelen en interactiepatronen. Daarbovenop was 34,7% van de banners die we detecteerden in ons onderzoek van 97.304 sites generiek of niet-geïdentificeerd -- aangepaste implementaties, regionale aanbieders of minimale oplossingen die niet overeenkomen met enige bekende CMP-signatuur.
Onze detectie gebruikt een op vertrouwen gebaseerde, gelaagde aanpak:
Laag 1: Scriptsignatuurdetectie
De scanner controleert op de aanwezigheid van bekende CMP-scripts via URL-patronen en JavaScript-globale variabelen. Cookiebot laadt bijvoorbeeld van `consent.cookiebot.com` en exposeert `window.Cookiebot`. OneTrust laadt van `cdn.cookielaw.org` en exposeert `window.OneTrust`. Elke CMP heeft karakteristieke laadpatronen die kunnen worden gedetecteerd voordat het DOM wordt onderzocht.
Deze laag is snel en hoog vertrouwen wanneer het matcht. Maar het heeft een kritieke beperking: het vertelt u welke CMP aanwezig is op de pagina, niet noodzakelijkerwijs welke CMP verantwoordelijk is voor de toestemmingsbanner. Een site kan PiwikPRO laden voor analytics (dat een CMP-component bevat) terwijl het tarteaucitron gebruikt voor daadwerkelijk toestemmingsbeheer. Beide scripts detecteren is gemakkelijk; weten welke de banner bestuurt is moeilijker.
Laag 2: Geverifieerde selectormatch
Voor elke bekende CMP onderhouden we een gecureerde set CSS-selectors die betrouwbaar de bannercontainer, de accepteerknop en de weigerknop identificeren. Dit zijn selectors die we hebben gevalideerd over meerdere versies en configuraties van elke CMP. Wanneer een CMP wordt gedetecteerd in Laag 1 en de geverifieerde selectors overeenkomen met elementen in het DOM, hebben we hoog vertrouwen in zowel de CMP-identificatie als de bannerinteractiedoelen.
Laag 3: Compatibele selectormatch
Een bredere set selectors die werkt over veel versies van een CMP maar minder precies is. Deze behandelen gevallen waarin een CMP is aangepast, gethematiseerd of een versie draait die niet door onze geverifieerde selectors wordt gedekt. Ze ruilen precisie in voor dekking.
Laag 4: Generieke heuristieken
Voor de 34,7% van banners die niet aan een bekende CMP zijn gekoppeld, vallen we terug op heuristische detectie. De scanner zoekt naar:
- Elementen met vaste of sticky positie nabij de onder- of bovenkant van het viewport
- Elementen die toestemmingsgerelateerde zoekwoorden bevatten in meerdere talen ("cookies", "consent", "privacy", "akzeptieren", "accepter", "aceptar", enz.)
- Knoppen met veelvoorkomende toestemmingsactielabels ("Accept All", "Reject All", "Manage Preferences" en equivalenten)
- Structurele patronen typisch voor toestemmingsdialogen: overlay-achtergronden, modale containers, sluitknoppen
Deze laag vangt veel aangepaste implementaties op maar is inherent minder betrouwbaar. Een promotionele banner met vaste positie of een nieuwsbriefaanmelding kan structureel lijken op een toestemmingsdialoog.
Laag 5: CMP-API-sondering
Sommige CMP's stellen JavaScript-API's beschikbaar -- met name de IAB Transparency and Consent Framework (TCF)-API via `__tcfapi`. We sonderen deze API's om zowel CMP-detectie te verifiëren als de programmatische toestemmingsstatus te lezen, die we later vergelijken met waargenomen browsergedrag.
Het vertrouwensmodel
In plaats van detectie als binair te behandelen (gevonden/niet gevonden), kennen we vertrouwensscores toe op basis van welke lagen matchten en hoe sterk. Een site waar we een CMP-script detecteren, geverifieerde selectors matchen en een TCF-API vinden, krijgt hoog vertrouwen. Een site waar alleen generieke heuristieken afvuurden, krijgt lager vertrouwen. Deze vertrouwensscore voedt onze risicoclassificatie -- lager detectievertrouwen betekent dat bevindingen eerder als niet-conclusief dan als definitief worden geclassificeerd.
Het vertrouwensmodel is de reden waarom CMP-misidentificatie, hoewel het voorkomt, onze resultaten niet systematisch vertekent. Wanneer detectie ambigue is, zeggen we dat, in plaats van een classificatie te forceren.
Uitdaging 2: De Weigerstroom -- Waarom "Klik en Controleer" Verrassend Moeilijk Is
Het testen van een weigerknop klinkt simpel: vind hem, klik erop, controleer of cookies weg zijn. In de praktijk is elke stap vol timingproblemen, asynchroon gedrag en platformspecifieke eigenaardigheden.
De weigerknop vinden. Niet alle weigerknoppen zijn gelabeld "Weigeren." Ze kunnen zeggen "Decline All", "Refuse", "Alleen noodzakelijke cookies", "Instellingen beheren" (leidend naar een tweede laag waar weigering mogelijk is), of equivalenten in tientallen talen. Sommige CMP's plaatsen de weigeroptie op een andere visuele locatie, in een ander formaat of in een andere kleur dan de accepteeroptie. Sommige verbergen het achter een "Meer opties" of "Aanpassen" link. Onze scanner onderhoudt een meertalige set weigeractiepatronen en detecteert ook tweede-laag weigeropties waar de eerste laag alleen accepteren en aanpassen biedt. Wachten op het juiste moment. Na het klikken op weigeren kan de pagina significante veranderingen ondergaan: de banner sluit (vaak met animatie), de CMP vuurt toestemmingsstatuscallbacks af, tagmanagers herevalueren hun regels, en scripts kunnen worden geladen of ontladen. Cookies te vroeg controleren vangt de overgangsstatus op. Te laat controleren mist vergankelijke tracking die snel afvuurt en voltooit. We gebruiken een multi-signaalwacht: netwerkinactiviteit, DOM-stabiliteit en een minimale vertragingsdrempel, afgestemd door empirisch testen over honderden CMP-configuraties. De herlaadtest en toestemmingsrespawn. De herlaadstap is wat toestemmingsrespawn als fenomeen onthulde. We waren er niet op uit om het te vinden -- onze oorspronkelijke weigerstroom-test controleerde alleen de directe status na weigering. Maar tijdens ontwikkeling merkten we sites op die er schoon uitzagen na weigering maar trackingcookies hadden wanneer we opnieuw controleerden na een paginalading. Initiële debugging nam een scannertimingprobleem aan. Nader onderzoek bevestigde dat het echt was: scripts van derden die cookies opnieuw instelden bij paginalading ongeacht de toestemmingsstatus.We voegden expliciete respawndetectie toe aan de pipeline: na de weigerstroom herlaadt de scanner de pagina, wacht op stabiliteit en vergelijkt de cookie-inventaris met het snapshot na weigering. Elke cookie die door weigering was verwijderd en na herladen terugkeert, wordt gemarkeerd als respawn. Dit ving 1.642 sites op met 4.932 respawnende cookies -- een bevinding die onzichtbaar zou zijn geweest zonder de herlaadstap.
De `waitForScriptIdentifiedCMP`-poll. Sommige CMP's laden asynchroon en renderen hun banner pas enkele seconden na de initiële paginalading. Als de scanner doorgaat naar de weigerstap voordat de CMP is geïnitialiseerd, mist het ofwel de banner volledig of interageert met een gedeeltelijk geladen UI. We implementeerden een polling-mechanisme dat wacht tot de JavaScript-API van de CMP beschikbaar wordt (bijv. `__tcfapi` voor TCF-gebaseerde CMP's, het `Cookiebot`-globaal voor Cookiebot) voordat het doorgaat. Dit voegt latentie toe per scan maar vermindert valsnegatieven van asynchroon CMP-laden significant.Uitdaging 3: Pipeline-Verzadiging op Schaal
Het scannen van 97.304 websites is geen taak voor één machine. Elke scan start een Chromium-proces, navigeert naar een website, onderschept en classificeert honderden netwerkverzoeken, maakt meerdere screenshots en draait analysemodules. Een enkele scan duurt 30-90 seconden afhankelijk van de complexiteit van de site. Bij 15 gelijktijdige scans per worker wordt resourcebeheer de primaire technische zorg.
De semafoor-architectuur
We gebruiken een op semaforen gebaseerd concurrentiemodel om het aantal gelijktijdige Chromium-processen per worker te beperken. Elke worker heeft een vaste semafoor (15 slots in onze productieconfiguratie). Een scan verwerft een slot voordat hij zijn browser start en geeft het vrij bij voltooiing. Dit voorkomt geheugenuitputting -- 15 Chromium-instanties met volledige verzoekonderschepping verbruiken al aanzienlijke RAM -- en biedt tegendruk tegen de Redis-wachtrij.
De documentverzoekuitzondering
Vroeg in de ontwikkeling stuitten we op een doorvoerprobleem: onze verzoekonderscheppingslogica (die elk verzoek inspecteert voor SSRF-veiligheid -- verzoeken blokkeert naar privé-IP-bereiken, interne netwerken en andere potentieel gevaarlijke doelen) voegde latentie toe aan elke resourcelading, inclusief het hoofddocumentverzoek. Aangezien de document-URL al is gevalideerd voordat de scan begint, voegden we een snelpad-bypass toe: documenttype-verzoeken naar de voorgevalideerde doel-URL slaan de volledige onderscheppingspipeline over. Deze ogenschijnlijk kleine optimalisatie had een significant effect op de totale doorvoer omdat het documentverzoek al het andere blokkeert.
DNS-voorverwarming
Het eerste verzoek naar een nieuw domein veroorzaakt een DNS-lookup, die op onze infrastructuur 50-200ms per domein kon toevoegen. Met de gemiddelde site die 10,4 domeinen van derden contacteert (en sommige tot 171), accumuleerde de DNS-resolutietijd aanzienlijk. We implementeerden DNS-voorverwarming met een lokale Unbound DNS-resolvercache: voor elke scan lossen we het doeldomein op en verwarmen de cache. De Unbound-instantie bedient gecachte antwoorden voor volgende lookups binnen de scan, waardoor de DNS-overhead per domein wordt teruggebracht tot sub-milliseconde.
SSRF-veiligheid op schaal
Elk verzoek dat door de scanner wordt onderschept, wordt gecontroleerd tegen een set veiligheidsregels voordat het wordt toegestaan. Verzoeken naar privé-IP-bereiken (RFC 1918, RFC 4193, link-local, loopback) worden geblokkeerd. Dit voorkomt dat een kwaadaardige doelsite de scanner als SSRF-vector gebruikt om interne netwerken te sonderen.
De uitdaging op schaal was het onderscheiden van echte SSRF-blokkeringen van semafoorverzadiging. Wanneer alle 15 semafoorslots in gebruik zijn en een scan geen slot kan verwerven, lijkt de resulterende timeout oppervlakkig op een verzoek dat om veiligheidsredenen is geblokkeerd. We voegden expliciete foutcategorisering toe om "geblokkeerd omdat het doel naar een privé-IP resolveerde" te onderscheiden van "geblokkeerd omdat de scanner op capaciteit zit." Dit was essentieel voor operationele monitoring en voor nauwkeurige classificatie van scanmislukkingen.
Uitdaging 4: Bot-Ontwijkingsdetectie
Tijdens het onderzoek identificeerden we 137 websites die opzettelijk hun toestemmingsbanner lijken te verbergen voor geautomatiseerde scanners. De banner wordt aan menselijke bezoekers getoond maar onderdrukt wanneer de site kenmerken van geautomatiseerd browsen detecteert.
Het meest voorkomende mechanisme dat we identificeerden betreft de `isAcceptAllForBots`-configuratieoptie van de RCB (Real Cookie Banner) WordPress-plugin. Wanneer ingeschakeld, detecteert deze instelling geautomatiseerde browsers (via `navigator.webdriver`, user-agent heuristieken of gedragssignalen) en accepteert ofwel automatisch toestemming namens hen of verbergt de banner volledig. De bedoeling, zoals gedocumenteerd door de plugin, is te voorkomen dat geautomatiseerde bezoekers een toestemmingsdialoog krijgen waarmee ze niet zinvol kunnen interageren. Het effect is dat nalevingsscanners -- en regelgevende auditors die geautomatiseerde tools gebruiken -- een site zien die geen toestemmingsmechanisme lijkt te hebben, terwijl menselijke bezoekers een volledige toestemmingsbanner zien.
Dit is een transparantieprobleem. Als het toestemmingsmechanisme van een website alleen zichtbaar is voor menselijke bezoekers, kan het niet op schaal worden geauditeerd. We markeren deze sites apart in onze resultaten omdat de bevinding kwalitatief verschilt van "geen banner gedetecteerd." De site heeft een banner; het kiest ervoor deze niet aan ons te tonen.
We detecteren bot-ontwijking door een combinatie van signalen: de aanwezigheid van bekende botdetectieconfiguratie in CMP-instellingen (toegankelijk via JavaScript-inspectie), discrepanties tussen wat het DOM toont en wat de API van de CMP rapporteert, en in sommige gevallen door geautomatiseerde scanresultaten te vergelijken met handmatige verificatie.
Het cijfer van 137 is zeker een ondertelling. We kunnen bot-ontwijking alleen detecteren wanneer we het mechanisme kunnen identificeren. Sites die geavanceerdere of aangepaste botdetectie gebruiken, kunnen met succes zowel onze scanner als onze ontwijkingsdetectie omzeilen.
Uitdaging 5: CMP-Misidentificatie
Een site kan meerdere scripts laden die eruitzien als toestemmingsbeheerplatforms. PiwikPRO bevat een CMP-component maar is primair een analyticasuite. Sommige WordPress-sites laden Complianz naast een apart analyticsplugin dat CMP-achtige functies heeft. Enterprise-sites kunnen overblijfselen van een vorige CMP hebben die nog steeds laadt naast de huidige.
Naïeve detectie -- "als we het script zien, is het de CMP" -- produceert valse identificaties die doorwerken in onjuiste bannerinteractie. Als de scanner PiwikPRO identificeert als de CMP en probeert PiwikPRO's bannerselectors te gebruiken, kan het de eigenlijke tarteaucitron-banner missen die de toestemming op de site bestuurt.
Onze op vertrouwen gebaseerde aanpak adresseert dit door CMP-kandidaten te rangschikken. Wanneer meerdere potentiële CMP's worden gedetecteerd:
1. We controleren welke een zichtbare banner in het DOM heeft (script aanwezig maar geen banner betekent waarschijnlijk inactief of niet-CMP-gebruik).
2. We controleren welke een actieve CMP-API exposeert (bijv. een functionerende `__tcfapi` of equivalent).
3. We prefereren de CMP waarvan de geverifieerde selectors overeenkomen met zichtbare DOM-elementen boven degene die alleen via script-URL is gedetecteerd.
Deze heuristiek is niet perfect, maar loste de meest voorkomende misidentificatiegevallen op die we tegenkwamen tijdens ontwikkeling en testen.
Beperkingen
Geen enkele geautomatiseerde scanner repliceert perfect elke menselijke browse-ervaring. Dit zijn de bekende beperkingen:
GeoIP-afhankelijke banners. Sommige CMP's, met name CookieYes, serveren verschillende toestemmingservaringen op basis van de IP-geolocatie van de bezoeker. Onze scans komen van specifieke netwerklocaties in Europa. Een site die een toestemmingsbanner toont aan bezoekers uit Frankrijk maar niet aan bezoekers van buiten de EU zal verschillende resultaten tonen afhankelijk van de scanherkomst. We scannen momenteel niet elke site vanuit elk EU-land. Gesloten shadow DOM. Sommige CMP's renderen hun banner in een gesloten shadow DOM, die ontoegankelijk is voor standaard DOM-query's via `document.querySelector`. De CMP van Transcend gebruikt deze aanpak. Onze scanner kan het shadow-hostelement detecteren maar kan de inhoud niet inspecteren om accepteer-/weigerknoppen te vinden. Deze sites eindigen typisch als niet-conclusief in onze resultaten. Dynamische klassenamen en obfuscatie. Sommige CMP's, met name Admiral, gebruiken dynamisch gegenereerde klassenamen die bij elke paginalading veranderen. Op selectors gebaseerde detectie faalt hiervoor omdat de selectors niet stabiel zijn tussen bezoeken. We vallen terug op generieke heuristieken, maar het vertrouwen is lager. Single-page-applicaties. SPA's die toestemmingsstatus volledig in client-side JavaScript beheren en het toestemmingsmechanisme laden na initiële routewijzigingen (in plaats van bij initiële paginalading) zijn moeilijker te beoordelen. Onze scanner navigeert naar de URL en wacht tot de pagina stabiliseert, maar simuleert geen in-app navigatie. Een toestemmingsbanner die alleen verschijnt nadat de gebruiker binnen de SPA navigeert, kan worden gemist. Taaldekking. Onze weigerknopdetectie gebruikt tekstmatching over een set ondersteunde talen, maar we dekken niet elke EU-taal gelijkmatig. Een banner in het Maltees of Estlands kan weigerknoplabels hebben die onze tekstmatching niet herkent, wat leidt tot een gemiste weigerstroom-test (hoewel de banner zelf mogelijk nog wordt gedetecteerd door structurele heuristieken). Timing-randgevallen. Een script dat 30 seconden na paginalading afvuurt, wordt gemist door een scan die 15 seconden wacht op netwerkinactiviteit. We gebruiken ruime timeouts, maar de lange staart van asynchroon gedrag is inherent moeilijk volledig vast te leggen.Deze beperkingen dragen bij aan ons niet-conclusief percentage van 14,9%.
De Infrastructuur
De productie-scaninfrastructuur bestaat uit:
- Scannerengine: Een Go-applicatie die chromedp gebruikt als CDP-client voor Chromium-automatisering. Go werd gekozen vanwege het concurrentiemodel (goroutines en channels mappen natuurlijk op parallelle scanorkestratie), de prestatiekenmerken en de eenvoud van deployment (enkel statisch binair bestand).
- Browserruntime: Headless Chromium gestart per scan via CDP. Elke scan krijgt een vers browserproces met nul gedeelde status.
- Wachtrij: Redis-backed werkwachtrij die URL's distribueert naar scannerworkers. Redis handelt jobdistributie, voortgangsregistratie en snelheidsbeperking af.
- Database: PostgreSQL voor duurzame scanresultaten, bevindingen, bewijsmetadata en alle gestructureerde gegevens. Scans, bevindingen, cookies, verzoeken en analyse-outputs worden allemaal relationeel opgeslagen.
- DNS-cache: Lokale Unbound-resolver die gecachte DNS-lookups en SSRF-veilige resolutie biedt.
- Bewijsopslag: Screenshots, HAR-bestanden en PDF-rapporten worden opgeslagen als duurzame artefacten gekoppeld aan scanrecords.
Voor het onderzoek van 97.304 sites verwerkten we 114.748 kandidaat-URL's (97.304 succesvol voltooid) in ongeveer 2,5 dagen met 3 serverinstanties die scannerworkers parallel draaiden. Elke server draaide meerdere workerprocessen met elk 15 gelijktijdige scanslots. Piekdoorvoer was ongeveer 25-30 voltooide scans per minuut per server.
Het primaire knelpunt was niet CPU of geheugen maar netwerk: elke scan genereert honderden uitgaande verzoeken (naar de doelsite en de bronnen van derden), en de geaggregeerde bandbreedte en het aantal verbindingen over alle gelijktijdige scans verzadigden de beschikbare netwerkcapaciteit voordat andere bronnen uitgeput raakten.
Open Uitdagingen en Toekomstig Werk
Verschillende problemen blijven onopgelost of gedeeltelijk opgelost:
Lokalisatie van toestemmingsbanners. Onze tekstmatching dekt de belangrijkste EU-talen maar is onvolledig voor kleinere taalgemeenschappen. Uitbreiding van de dekking vereist niet alleen het toevoegen van vertalingen maar ook het valideren dat de selectors en interactiepatronen correct werken met gelokaliseerde CMP-versies. Longitudinale monitoring. Onze huidige architectuur is geoptimaliseerd voor eenmalige scanning. Het detecteren van veranderingen in toestemmingsgedrag over tijd -- verbeterde een site na handhaving? Loste een CMP-update een klasse van weigerstroom-fouten op? -- vereist herhaalde scans met differentiële analyse, wat architecturaal verschilt van eenmalige beoordeling. CMP-nalevingsbenchmarking. We hebben de gegevens om nalevingspercentages per CMP te beoordelen (is Cookiebot geassocieerd met betere naleving dan OneTrust?), maar het onderscheiden van CMP-kwaliteit van configuratiekwaliteit van de sitebeheerder is methodologisch complex. Een CMP die vaker wordt ingezet door grote ondernemingen met toegewijde privacyteams zal er in totaal beter uitzien, zelfs als het hulpmiddel zelf niet meer conform is. Real-time toestemmingsstatusverificatie. De huidige scanner werkt in batchmodus. Het integreren van toestemmingsverificatie in CI/CD-pipelines of real-time monitoring vereist een snellere, lichtere scanmodus die enige bewijsdiepte opoffert voor snelheid. We verkennen dit.De API
Dezelfde scannerengine die in dit bericht wordt beschreven, is beschikbaar via de publieke API van GDPR Monitor. U kunt programmatisch scanaanvragen indienen, resultaten opvragen en gestructureerde bevindingen en bewijsartefacten ophalen. De API retourneert dezelfde gegevens die onze UI toont: snapshots voor toestemming, cookie-inventarissen, CMP-detectieresultaten, weigerstroom-uitkomsten, risicoscores en volledige bewijsketens.
Als u nalevingstools bouwt, privacycontroles integreert in CI/CD-pipelines, uw eigen onderzoek uitvoert of monitoring inbouwt in een privacyprogramma, biedt de API toegang tot gedragsmatige toestemmingsanalyse zonder de noodzaak om uw eigen Chromium-automatiseringsinfrastructuur te bouwen en te onderhouden.
Probeer het zelf. API-documentatie is beschikbaar op gdprprivacymonitor.eu/developers/api. Dien een enkele URL in of integreer geautomatiseerde privacymonitoring in uw workflow.
Controleer uw website
Voer een gratis AVG-compliancescan uit — geen registratie vereist.
Scan uw website gratis