Ik legde een doodgewone sessie op www.anwb.nl vast, twee keer: een keer met cookies geweigerd en een keer met alles geaccepteerd, allebei tot en met een iDEAL-betaling. Twee dingen springen eruit. De iDEAL-betaalpagina vuurt 353 verzoeken naar poorten op je eigen computer, en dat gebeurt ongeacht je cookiekeuze. En ANWB stuurt al gedrag naar Google voordat je iets hebt aangeklikt. De zware advertentiepixels respecteren je weigering wel. Hieronder wat er vertrekt, waarheen, en wat hard gemeten is en wat niet.
Je verlengt je lidmaatschap, je regelt een verzekering, je rekent af. Een vertrouwde Nederlandse club, een vertrouwd betaalmerk. Niets aan de hand, zou je denken. Maar onder de motorkap gebeuren in diezelfde seconden dingen die niemand je heeft uitgelegd, en eentje daarvan raakt niet ANWB maar het hart van het Nederlandse betaalverkeer.
Ik heb het netwerkverkeer van een ingelogde sessie vastgelegd in vijf HAR-bestanden, samen ongeveer 83 megabyte, en daar regel voor regel doorheen gewerkt. Geen aannames vooraf: gewoon kijken wat het toestel verstuurt, naar wie, en op welk moment.
“Laat Mick maar praten, het is gewoon een betaalpagina.” Tot je ziet wat die pagina naar je eigen computer stuurt.
| Wie | Wat | Waarheen |
|---|---|---|
| iDEAL / Currence (de betaalpagina) | 353 verbindingspogingen naar zeven poorten op 127.0.0.1, je eigen computer, tijdens het betalen. Ongeacht je cookiekeuze. | Blijft op je toestel (de poorten antwoorden niet). Doel is vrijwel zeker detectie van software op afstand. |
| ANWB (vóór toestemming) | Gedragsgebeurtenissen zoals page_view, login en scroll, plus advertentiepings. | Via het eigen subdomein sst.anwb.nl server-naar-server naar Google, en direct naar Google Ads. |
| ANWB (ná toestemming) | Het volledige pakket: remarketing, een klantprofiel met je IP-adres, en sessie-opname. | Google, Meta, Microsoft, en BlueConic op een eigen subdomein. |
De korte versie
- De iDEAL-betaalpagina (
pay.ideal.nl, gebouwd door Payconiq voor Currence) stuurt tijdens het betalen 353 verzoeken naar poorten op je eigen computer. Dat is gemeten, en het staat zwart op wit in de beveiligingsregels van die pagina dat het mag. - Die scan negeert je cookiekeuze volledig: 177 keer toen ik weigerde, 176 keer toen ik accepteerde. Het is geen marketing, het is vrijwel zeker fraudedetectie. Maar je weet er niets van.
- ANWB stuurt gedrag naar Google voordat je toestemming geeft. Met cookies geweigerd vertrokken er tóch analytics-gebeurtenissen, waaronder een
login-event, via een eigen ANWB-subdomein dat trackerblokkers omzeilt. - De advertentiepixels respecteren je weigering wel. Meta, Microsoft, DoubleClick, remarketing, het klantprofiel met je IP-adres en de sessie-opname kwamen pas ná “alles accepteren”. Dat hoort zo, en dat zeg ik er eerlijk bij.
- Wat je kunt doen: weiger cookies (het scheelt aantoonbaar veel), en weet dat de iDEAL-scan losstaat van die keuze. Verderop staat meer.
Wat ik onderzocht, en hoe
Ik heb met de browser het volledige netwerkverkeer opgenomen van een ingelogde sessie op www.anwb.nl, doorlopend tot een echte iDEAL-betaling. Dat levert een HAR-bestand op: een letterlijk logboek van elk verzoek dat de browser doet, met adressen, kopteksten en, waar de browser ze bewaart, de inhoud.
Het belangrijkste in de opzet: ik heb het twee keer gedaan. Eén keer met de cookiebanner op weigeren, en één keer met alles accepteren. Zo kun je precies zien wat er afhangt van je toestemming en wat niet. Dat de twee echt verschillen, is geen interpretatie: ANWB’s eigen toestemmingscookie legt het vast.
| Modus | Cookie cookie-policy-agreement | Google-signaal gcs |
|---|---|---|
| ZONDER (geweigerd) | {"REVISION":20,"consentLevel":1} | G100 (analytics + ads geweigerd) |
| MET (geaccepteerd) | {"REVISION":20,"consentLevel":3} | G111 (beide toegestaan) |
Deel 1 · Je betaalpagina scant je eigen computer
Dit is de vondst die er het meest uitspringt, en die niet over ANWB gaat maar over iDEAL zelf.
Op het moment dat de iDEAL-betaalpagina laadt, begint je browser verbindingen op te zetten naar je eigen computer. Niet naar internet: naar 127.0.0.1, het adres dat altijd “deze machine hier” betekent. In totaal 353 keer, verdeeld over zeven vaste poorten, telkens met het pad /initiate.
De poorten zijn 666, 6039, 7070, 9527, 9528, 37014 en 37114. Poort 666 wordt het vaakst geprobeerd (88 keer), de rest elk een stuk of vijftien keer. De verzoeken zijn van het type no-cors, wat een belangrijk detail is: de pagina mag het antwoord niet lezen, maar kan wel detecteren of er iets antwoordt. Dat is precies de techniek waarmee je van buitenaf kunt vaststellen of er op je computer een bepaald programma draait, zonder dat je het kunt zien.
Waarom doet iDEAL dit? Het eerlijke antwoord: het meest waarschijnlijke doel is het opsporen van software waarmee iemand je computer op afstand overneemt of meekijkt. Dat is een bekende anti-fraudetechniek tegen oplichting waarbij een crimineel je tijdens een betaling aan de lijn houdt en het scherm overneemt. De zeven poorten passen bij dat soort programma’s. Maar let op het bewijsniveau: de scan zelf heb ik gemeten, het doel is een gefundeerde gevolgtrekking. De code die de exacte poort-naar-programma-vertaling maakt, zit in een bestand van 1,64 megabyte dat de browser bij het opslaan op precies 1,0 megabyte heeft afgekapt. Ik kan die code dus niet letterlijk citeren, alleen het gedrag dat eruit voortkomt. (Inmiddels achterhaald, zie de update direct hieronder.)
| Poort | Label in de config | Programma |
|---|---|---|
6039 | TEAMVIEWER HASH | TeamViewer |
7070 | ANYDESK HASH | AnyDesk |
9527 | STSTREAMER_HASH | Splashtop Streamer |
9528 | STSOS_HASH | Splashtop SOS |
37014 · 37114 | TV_ACTIVE_HASH | TeamViewer (actief) |
666 | csdTestObject | ijk-/controlepoort, geen programma |
Dezelfde module doet trouwens meer dan poorten scannen: ze leest ook het betaalbedrag en de begunstigde uit de pagina (data-testid=payment-amount-euros en …-creditor) en let op of de pagina onderweg gewijzigd wordt. Het resultaat gaat eerste-partij terug naar iDEAL (PUT pay.ideal.nl/api/v1/transactions/initiate). Wie de module precies levert, is uit de sterk versluierde code niet hard vast te stellen; dat houd ik bij de feiten weg.
Technisch: de bouwers en de telemetrie van de betaalpagina
De betaalpagina pay.ideal.nl draagt de titel "iDEAL | Wero" en is gebouwd door @payconiq (Payconiq International, de partij achter de nieuwe iDEAL). De pagina meet zichzelf met twee telemetriesystemen: Elastic APM (apm.idealapi.nl, agent rum-js 5.16.0, service ideal-payment-page-frontend) en AWS CloudWatch RUM. In de telemetrie staat onder meer "referer":"https://www.anwb.nl/", de winkel waar de betaling vandaan komt. Naast de localhost-scan deed de pagina ook twee echte, normale verzoeken aan pay.ideal.nl/api/v1/.../initiate (de transactie zelf, status 200): die horen er gewoon bij en zijn iets anders dan de localhost-pogingen.
En het venijn: deze scan trekt zich niets aan van je cookiekeuze. In de geweigerde run gebeurde het 177 keer, in de geaccepteerde run 176 keer. Logisch, want het is geen marketing. Maar het betekent ook dat je er op geen enkele knop “nee” tegen kunt zeggen.
Deel 2 · Wat vuurt er vóór je iets aanklikt
Nu naar ANWB zelf. De grote vraag bij elke website: wat gebeurt er als je de cookies weigert? Het korte antwoord hier: minder dan met accepteren, maar niet niets.
ANWB gebruikt server-side tagging. Op een eigen subdomein, sst.anwb.nl, draait een kopie van Google Tag Manager. Je gegevens gaan eerst naar dat ANWB-adres, en van daaruit server-naar-server door naar Google. Het effect: voor je browser en voor trackerblokkers ziet het eruit als “gewoon ANWB”, terwijl het in werkelijkheid het doorgeefluik naar Google is. Dat heet first-party cloaking, en het is precies waarom dit soort verkeer zo lastig te zien is.
Met cookies geweigerd (gemeten) vertrok er tóch:
- Analytics naar Google via
sst.anwb.nl(18 keer): gebeurtenissenpage_view,login,scroll,user_interaction,user_engagementenview_experiment. Dus ook dát je inlogt werd geregistreerd, terwijl analytics geweigerd was. - Directe advertentiepings naar Google (
pagead2.googlesyndication.com, 9 keer). - Sentry (27 keer, foutopname inclusief de sessie-opname-module, daarover verderop).
En wat respecteerde de weigering wel? Een hoop, en dat hoort gezegd te worden. In de geweigerde run zag ik geen Meta, geen Microsoft Bing, geen DoubleClick, geen remarketing, geen BlueConic-klantprofiel en geen Contentsquare. Die kwamen allemaal pas ná “alles accepteren”. Op dat punt doet ANWB het dus zoals het hoort.
| Dienst | ZONDER (geweigerd) | MET (geaccepteerd) |
|---|---|---|
| Vuurt ondanks weigering | ||
iDEAL localhost-scan (127.0.0.1/initiate) | 177× | 176× |
sst.anwb.nl server-side GA4 | 18× | 14× |
Google Ads-pings (ccm/collect) | 9× | 0× |
| Sentry (fouten + replay) | 27× | 13× |
| LivePerson chat / Expoints feedback | 26× / 24× | 20× / 13× |
| Pas ná toestemming | ||
| BlueConic klantprofiel (met je IP) | 0× | 22× |
Google-remarketing (ads/ga-audiences) | 0× | 10× |
| DoubleClick / Meta / Bing / Contentsquare | 0× | 4× / 2× / 2× / 2× |
Deel 3 · Waar je gegevens heen gaan
Als je wél accepteert, ontvouwt zich het complete beeld. Het mooie nieuws eerst: ik heb gecontroleerd of je identiteit (e-mailadres, account-id, IP-adres, betaaltoken) ergens naar een derde partij vertrekt, en dat heb ik in deze opnames niet gevonden. Je persoonsgegevens blijven binnen de ANWB-subdomeinen. Het gaat dus niet om een directe verkoop van je naam aan adverteerders, maar om gedrag, een IP-adres, en de timing rond je toestemming.
sst.anwb.nl. De betaalpagina staat los, met de localhost-scan.De opvallendste verwerker is BlueConic, een klantdataplatform, verstopt op het ANWB-subdomein t066.anwb.nl. Dat platform kreeg je echte IP-adres te zien (het kaatste het netjes terug in zijn antwoord) en draagt een rijke lijst gedragslabels: of je op het punt staat weg te klikken, of je inactief bent, of je een route plant, en, veelzeggend, Lidnummer bekend, plus verzekeringstrechters met namen als Woonverzekering vragenlijst. Dit is profilering, gekoppeld aan je lidmaatschap. Belangrijk en eerlijk: dit vuurde alleen ná toestemming. Weiger je, dan blijft BlueConic stil.
Deel 4 · Sentry en sessie-opname
Op de site zit Sentry, een dienst voor foutmeldingen. Twee aparte Sentry-projecten, en ze vuren ook al voordat je toestemming geeft. Goed nieuws voor de datasoevereiniteit: deze Sentry draait op de Europese omgeving (Frankfurt), niet in de VS.
Wat ik wel kan vaststellen: de ANWB-code laadt naast foutopname ook de sessie-opname-module van Sentry (de zogeheten Replay, die letterlijk je schermgedrag kan terugspelen). Wat ik niet kan vaststellen uit deze opnames: hoe vaak die opname aanstaat en of er gevoelige gegevens in worden vastgelegd. De inhoud van die Sentry-verzoeken heeft de browser namelijk niet bewaard, de verzoeken zijn leeg in mijn log. Ik laat dat hier nadrukkelijk open: de mogelijkheid zit aantoonbaar in de code, het bewijs van wat er wordt opgenomen ontbreekt. Daarnaast staan er nog Contentsquare (sessie-opname, pas ná toestemming) en LivePerson (chat, met de mogelijkheid tot meekijken) op de site.
Wat hard is, en wat niet
Dit hoort er bij elk eerlijk onderzoek bij. Tijdens het graven ben ik ook een paar dingen tegengekomen die er op het eerste gezicht erger uitzagen dan ze zijn. Die corrigeer ik liever zelf dan dat ik ze laat staan.
- De localhost-scan komt van iDEAL, niet van ANWB. ANWB’s eigen code noemt
127.0.0.1ook, maar alleen om te herkennen of de site in een testomgeving draait. Dat is geen scan. - Het is geen “Google Tag Manager die je poorten scant”. De poortnummers kwamen toevallig ook voor in een groot Google-bestand, maar zonder de bijbehorende scan-code. De scan zit echt op de betaalpagina.
- Ik heb geen IP-lek naar derden gevonden. Een paar getallen die op IP-adressen leken, bleken bij nader inzien coördinaten uit een tekening (een SVG-pictogram) te zijn. Die heb ik niet meegeteld.
- Ik beweer niet dat de sessie-opname jouw gevoelige gegevens vastlegt. De module is aanwezig, de inhoud is onbewezen.
Eén kanttekening over hygiëne aan ANWB’s kant: in de publieke Google-configuratie van de site staat een intern e-mailadres van een ANWB-medewerker hardcoded. Dat is niet jouw data, maar het hoort niet in code die aan iedereen wordt uitgeleverd.
Wat je kunt doen
- Weiger de cookies. Het scheelt aantoonbaar veel: de remarketing, het klantprofiel met je IP-adres, Meta, Microsoft en de sessie-opname blijven dan uit. Dat het analytics-restje en de iDEAL-scan blijven, is vervelend, maar je vermindert het meeste.
- Weet dat de iDEAL-scan losstaat van je keuze. Je kunt hem niet uitzetten via een cookiebanner. Wil je hem helemaal kwijt, dan kom je uit bij browser-extensies die
127.0.0.1-verzoeken blokkeren, met het risico dat een legitieme fraudecheck dan ook sneuvelt. - Vraag het na. Je hebt recht op inzage (AVG, artikel 15). Vraag ANWB welke gedragsgegevens ze vóór je toestemming naar Google sturen, en vraag Currence waarom de betaalpagina je localhost scant en hoe lang ze de uitkomst bewaren. Dat zijn precies de vragen waar dit dossier de feiten voor levert.