chter de betaalmuur van nieuwssites staan de trackers gewoon aan
Een betaalmuur is op zichzelf te verdedigen, want journalistiek kost geld. Wat ik meet is iets anders: wie betaalt, krijgt de trackers er gewoon bij. Je koopt je uit de reclame en blijft handelswaar. Dat is niet twee keer verdienen aan hetzelfde product, dat is de lezer als product houden nadat hij klant is geworden.
Een betaalmuur is te verdedigen¶
Ik heb niets tegen betalen voor journalistiek. Het kost geld om iemand een halfjaar aan een onderzoek te laten werken. Het alternatief, alles gratis en uit reclame betaald, heeft de afgelopen twintig jaar precies opgeleverd wat je zou verwachten: meer stukken, korter, sneller, en geschreven voor de klik.
Een lezer die betaalt is in theorie het herstel van een gezonde verhouding. Jij bent de klant. De krant werkt voor jou, en niet voor de adverteerder achter je rug. Dat is een goed idee en ik wil het graag zien slagen.
Dit stuk gaat daarom over wat er technisch verandert op het moment dat je die knop indrukt, en over hoe weinig dat blijkt te zijn.
Twee lagen die zelden tegelijk uit gaan¶
De advertentiekant van een nieuwssite bestaat uit twee dingen die je gemakkelijk voor één ding aanziet.
De eerste laag is de vertoning. Dat is de plek in de pagina waar een banner of een video verschijnt. Die laag is zichtbaar, en die laag is precies wat een abonnement belooft weg te nemen.
De tweede laag is de identificatie en de meting. Daar zitten de identifiers die je browser herkenbaar maken, de pixels die vertonen en klikken tellen, en de aanroepen die je aanwezigheid aanbieden aan de partijen die om je mogen bieden. Die laag draait om weten wie er kijkt. Of er daarna een banner verschijnt, is voor die laag niet doorslaggevend.
In de bouw van een site staan die lagen los van elkaar. De abonneestatus zit in de betaalmuur en in het CMS. De tweede laag hangt meestal in een tag-beheerder of in een advertentiebibliotheek die bij elke pagina start. Iemand moet een expliciete koppeling leggen tussen die twee, met een regel in de trant van "als deze bezoeker betaalt, laad dit script niet". Die koppeling is triviaal om te maken. Ze is ook triviaal om nooit te maken, want zonder die regel werkt de site prima en klaagt niemand.
Welke rol precies welke laag raakt, is de moeite van het uit elkaar houden waard. Een crash-melder is iets anders dan een identity-resolver, ook al noemen we ze allebei tracker. Dat onderscheid werk ik uit in Trackers hebben rollen, en die verwar je niet.
Wat de veiling van jouw abonnement weet¶
Het loont om de keten uit te schrijven, want daar zit het antwoord op de vraag waarom betalen zo weinig uithaalt.
Als een pagina laadt, gaat er een biedverzoek de deur uit. In de standaard die daarvoor gebruikt wordt, OpenRTB, zit een vast omlijnd pakketje: een identifier voor jou of je browser, het domein en de pagina waar je bent, je grove locatie via het IP-adres, je user agent, en soms afgeleide kenmerken. Dat verzoek gaat naar een uitwisseling, die het doorzet naar de bidders. Iedereen die meedoet ziet het, ook de partijen die niets bieden. Dat mechanisme beschrijf ik in Real-time bidding biedt jouw toestel in een veiling aan, in milliseconden, en de schakels die in verantwoordingsdocumenten meestal ontbreken staan in De advertentieketen heeft schakels die niemand in de verklaring noemt.
Kijk nu naar het OpenRTB-object en zoek het veld waarin staat dat deze bezoeker een betalende abonnee is. Dat veld bestaat niet. De standaard kent objecten voor de gebruiker, het apparaat, de site en de advertentieplek, en in geen daarvan zit een begrip dat overeenkomt met "deze persoon heeft zich vrijgekocht". Hetzelfde geldt voor de toestemmingskant. Het IAB TCF geeft een tekenreeks door waarin per doel en per leverancier uit de Global Vendor List staat wat er is toegestaan. Ook daar bestaat geen abonneeveld.
Dat is een structureel punt en het is controleerbaar zonder één meting: de infrastructuur heeft geen plek om te weten dat jij betaald hebt. De enige manier waarop een abonnement de veiling bereikt, is dat de uitgever de aanroep helemaal niet doet. Gebeurt dat niet, dan gaat het verzoek de deur uit alsof je nooit een cent hebt overgemaakt, en verspreidt het je kenmerken langs alle deelnemers. Wat er vervolgens met die stroom gebeurt is een eigen vraag, want een biedstroom kan een veiling in waar partijen uit heel andere jurisdicties meekijken, zie Een biedstroom kan een veiling ingaan waar buitenlandse partijen op meebieden.
Wat ik meet, en wat die meting niet aantoont¶
Wie op een Nederlandse nieuwssite een abonnement neemt en inlogt, blijft in veel gevallen de volle tracking-stapel meedragen. De advertentie-identificatie, de meetpixels en de partijen in de veiling verdwijnen niet omdat je betaalt. Je hebt de advertenties weggekocht die je zag. De infrastructuur die je volgt is blijven staan.
Dat komt uit een meting en het is geen indruk. Ik neem het verkeer op als een gewone bezoeker: inloggen, doorklikken, scrollen, wachten, en per toestemmingskeuze apart opnemen. Dat is nodig, want een deel van het verkeer komt pas los na een handeling, zie Niet alles vuurt bij opstart, sommige trackers wachten op jou en Meet zoals een bezoeker, niet zoals een scanner. De opname zelf is een HAR-bestand, en hoe je dat leest staat in Netwerkverkeer lezen via HAR-files.
De procedure zelf. Log in als betalende abonnee, doorloop drie of vier artikelen, en exporteer het netwerkverkeer. Daarna tel je de bestemmingen:
jq -r '.log.entries[].request.url' abonnee.har | awk -F/ '{print $3}' | sort | uniq -c | sort -rnEn daarna zoek je de aanroepen op die specifiek bij de veiling en de koppeling van identifiers horen:
jq -r '.log.entries[]
| select(.request.url
| test("openrtb|/bid|usersync|cookie.?sync|/match|/pixel"))
| .request.url' abonnee.harDe tweede lijst is de interessante. Een usersync of cookie_sync naar een derde partij dient geen enkel doel voor een lezer die geen advertenties krijgt. Die aanroepen bestaan om identifiers van verschillende partijen aan elkaar te knopen, en dat is het mechanisme dat losse waarnemingen tot een dossier smeedt, zie Cookie-sync laat losse partijen dezelfde persoon herkennen.
Wil je weten wie er dan achter zitten, dan is er een papieren spoor dat iedereen kan volgen. Haal https://<uitgever>/ads.txt op. Daarin staat per regel het advertentiesysteem, het publisher-id van de uitgever daar, en of de relatie DIRECT of RESELLER is. Neem vervolgens per genoemd systeem de sellers.json van dat domein en zoek dat id op. Daar staat wie de verkopende partij is en of die als tussenpersoon optreedt. Zo bouw je de bovenkant van de keten uit publieke bestanden op, zonder één aanname.
En dan het bewijsniveau, want zonder dat neem ik mezelf niet serieus. Ik zie verzoeken vertrekken met identifiers erin, en ik zie welke partijen erin voorkomen. Dat is gemeten. Wat er daarna met die data gebeurt, wie hem inziet en hoe lang hij bewaard blijft, zie ik niet. Dat is afgeleid, en op sommige punten vermoed. Die ladder houd ik consequent aan, zie Label elke bevinding op bewijsniveau. Er is nog een reden voor die voorzichtigheid: bij server-side tagging lijkt het op de lijn alsof er maar één, eigen bestemming is, terwijl de doorverdeling buiten mijn zicht plaatsvindt. Afwezigheid van een tracker-domein bewijst daarom niets, zie Server-side tagging verplaatst de tracking uit het zicht.
Wat wel overeind blijft is de kern van dit stuk. Je bent klant geworden en tegelijk handelswaar gebleven. Er is geen stand van de knop waarin je alleen lezer bent.
Wat de wet ervan zou moeten vinden¶
Hier wordt het juridisch scherper dan het meestal wordt gemaakt.
Het plaatsen en uitlezen van gegevens op je apparaat valt onder artikel 11.7a van de Telecommunicatiewet, en vraagt toestemming zodra het verder gaat dan strikt noodzakelijk voor de gevraagde dienst. Een advertentie-identifier is niet noodzakelijk om een artikel te tonen aan iemand die dat artikel al betaald heeft.
De verwerking daarna heeft een grondslag nodig uit artikel 6 lid 1 AVG. In de praktijk gaat het om onderdeel a, toestemming, of onderdeel f, gerechtvaardigd belang. Beide worden zwakker op het moment dat je betaalt, en dat is de omkering die zelden wordt gemaakt.
Onderdeel f vraagt een afweging tussen het belang van de verwerker en de belangen en grondrechten van de betrokkene. In die afweging wegen de redelijke verwachtingen van de betrokkene mee. Iemand die een abonnement afsluit dat wordt aangeprezen als reclamevrij, heeft een aantoonbaar andere verwachting dan een toevallige bezoeker. De betaling is zelf het bewijs van die verwachting. Daarmee wordt de afweging voor de uitgever moeilijker nadat er geld is overgemaakt, terwijl de praktijk laat zien dat er technisch niets verandert.
Onderdeel a vraagt toestemming die vrij, specifiek, geïnformeerd en ondubbelzinnig is. Artikel 7 lid 4 zegt daarbij dat je moet meewegen of de uitvoering van een overeenkomst afhankelijk is gemaakt van toestemming voor verwerkingen die voor die overeenkomst niet nodig zijn. Een abonnee die eerst moet accepteren voordat hij het artikel kan lezen waarvoor hij al betaalt, zit precies in die situatie. En geïnformeerd is die toestemming alleen als het scherm klopt over wat er gebeurt, wat ik elders juist heb zien afwijken van wat de code declareert, zie De cookiemuur toont minder partners dan de code telt.
Ik ben geen jurist en ik presenteer dit als redenering. Het is wel een redenering die de uitgever moet kunnen weerleggen, en ik heb dat nog nergens zien gebeuren.
Waarom dit precies in het patroon past¶
Dit is dezelfde beweging als overal in deze tak, alleen sneller zichtbaar.
Eerst is het gratis en goed, want er moeten lezers komen. Dan komt de betaalmuur, met als argument dat de reclame minder wordt. Dan blijft de reclame, of komt ze terug in een andere vorm, en wordt het abonnement duurder. En omdat de lezer inmiddels zijn archief, zijn account en zijn gewoonte in het platform heeft zitten, is weglopen duurder geworden dan blijven.
Dat is de vorm die Doctorow beschrijft voor platforms, toegepast op de krant. Het verschil met een gewone prijsverhoging is dat de tweede opbrengst onzichtbaar blijft. Je ziet wat je betaalt. Je ziet niet wat je afgeeft. Bij dat idee hoort wel een waarschuwing over hoe hard het is: het begrip van Doctorow is scherp en citeerbaar, de bekendste grafiek erbij is een tekening zonder dataset, zie Een curve die getekend is door een taalmodel. Dezelfde beweging in fysieke producten beschrijf ik in We worden bekwamer en de spullen worden slechter.
Er is één rem die hier ontbreekt. Een boete voor een groot mediaconcern verhoudt zich zelden tot de omzet, waardoor ze eerder als kostenpost dan als correctie werkt, zie Een boete is voor een groot bedrijf geen straf, maar een rekening. Zolang dat zo is, moet de prikkel om het anders te doen ergens anders vandaan komen, en op dit moment komt hij nergens vandaan.
Wat ik ervan vind¶
De eerlijke versie zou simpel zijn. Wie betaalt, wordt niet gevolgd. Geen advertentie-identificatie, geen veiling, geen meelezers.
Technisch is dat weinig werk. De abonneestatus is al bekend op het moment dat de pagina wordt opgebouwd, want anders kon de betaalmuur zijn werk niet doen. Op basis daarvan sla je het laden van de advertentiebibliotheek over, laat je de identifier ongezet, en start je de veiling niet. Dat is een voorwaarde in de sjabloon en een schakelaar in de tag-beheerder. Ik ken de codebases van uitgevers niet van binnen, dus ik houd het bij de vaststelling dat het patroon eenvoudig is, en niet bij een uitspraak over hoeveel uur iemand eraan kwijt zou zijn.
Waarom het toch bijna nergens zo werkt, kan ik niet met zekerheid zeggen, en ik ga geen motieven verzinnen. Wat ik wel kan vaststellen is dat de tweede geldstroom bestaat, dat er geen technische noodzaak is om hem aan te houden bij abonnees, en dat vrijwel niemand het controleert. Waar niemand kijkt, verandert er niets, en dat patroon zie ik breder, zie De sterkste bevindingen liggen achter DigiD en vitale publieke diensten.
Precies daarom meet ik het. Een abonnement is een overeenkomst waarin staat wat je krijgt. Het is redelijk om te willen weten wat je daarnaast nog afgeeft, en om dat te kunnen nakijken zonder de uitgever op zijn woord te hoeven geloven. De procedure hierboven kost een halfuur en vraagt geen bijzondere apparatuur. Daarom schrijf ik hem op in plaats van alleen de uitkomst te melden. Klagen verandert niets zolang iemand anders het niet kan overdoen, zie Apple, Google en Meta verdienen aan tracking binnen de wet.
Zie ook We worden bekwamer en de spullen worden slechter, Een curve die getekend is door een taalmodel en Real-time bidding biedt jouw toestel in een veiling aan, in milliseconden.
- Mick Beer, "101 advertentiepartners: het probleem met informed consent op Nederlandse nieuwssites"metingen op Nederlandse nieuwssites, ook achter de betaalmuur