AI / GenAI·8 min·17 oktober 2026·Zo gebruik ik AI — Deel 9 van 9

Zo gebruik ik AI: een prijswacht die eerst vraagt of hij mag

Er staan vier flessen op mijn lijstje die ik alleen koop als ze in de aanbieding zijn. Handmatig controleren is precies het soort werk dat je twee weken volhoudt. Een script dat het elke ochtend doet is twintig regels code, en dat is meteen het probleem: het is zó makkelijk dat bijna niemand zich afvraagt of het mag.

Dit stuk gaat vooral over die vraag, en over de fout die ik erin maakte terwijl ik dacht dat ik het netjes deed.

De klus

Een lijstje URL’s, één keer per dag kijken wat de prijs is, en een melding als hij zakt. Draait bij mij, stuurt niets door, en gedraagt zich op andermans server zoals ik zou willen dat andermans script zich op de mijne gedraagt.

Mijn echte prompt

Schrijf een Node-script dat voor een lijst URL's de prijs ophaalt en
vergelijkt met de vorige keer.

Voordat je een pagina ophaalt: lees robots.txt van die host en kijk of het
pad is toegestaan voor onze user-agent. Is het niet toegestaan, sla de URL
dan over met een duidelijke melding. Haal hem niet alsnog op.

Minstens vijf seconden tussen twee verzoeken.
Gebruik een herkenbare user-agent, geen browser die zich voordoet als mens.

Haal de prijs uit de structured data, niet uit de opmaak.
Geen prijs gevonden is geen fout, dat meld je gewoon.

Sla de resultaten op zodat een volgende run het verschil kan tonen.

Het script staat op sparkone.nl/tools/prijswacht.mjs.

Ontleed

Zet de toestemmingscheck vóór het ophalen, niet erna. Klinkt vanzelfsprekend, en in bijna elk voorbeeld dat je online vindt staat het andersom: eerst ophalen, dan filteren. Het verschil is dat je in het tweede geval de server al hebt belast en de gegevens al hebt.

Vraag om een herkenbare user-agent. Een script dat zich voordoet als Chrome is een script dat weet dat het iets doet wat niet mag. Zet je eigen naam erin, dan kan een beheerder je blokkeren zonder gedoe, en dat is precies de bedoeling.

Structured data boven opmaak. De prijs uit een class="price-large" halen werkt tot de eerste stijlwijziging. De prijs uit de structured data halen werkt langer, want die staat er voor zoekmachines en verandert minder vaak.

Bewaar de vorige waarde. Het interessante is niet de prijs, het is het verschil. Dat is twee regels code en het is het enige dat een melding rechtvaardigt.

Wat brak

Ik testte met twee URL’s: een zoekpagina van Google en een accountpagina van bol.com. De eerste werd netjes geweigerd. De tweede haalde mijn script gewoon op.

Dat leek te kloppen tot ik zelf in de robots.txt van bol.com keek. Daar staat letterlijk Disallow: /*/rnwy/account/, en dat dekt precies de URL die ik gebruikte. Mijn script had hem moeten weigeren.

De oorzaak is dat mijn robots-lezer paden vergeleek met een simpele “begint met”-test. De standaard kent twee jokertekens: een sterretje voor een willekeurige reeks tekens, en een dollarteken voor het einde van de URL. Grote winkels gebruiken bijna niets anders. Van de 136 regels in die ene robots.txt staan er tientallen met een sterretje erin, en al die regels sloeg mijn script stilzwijgend over.

Dat is de gevaarlijkste soort fout in dit soort werk. Het script deed niets zichtbaar verkeerds. Er kwam geen foutmelding, er werd niets geblokkeerd, en de uitvoer zag er precies zo uit als de bedoeling was. Ik had het nooit gemerkt als ik het niet met de hand had nagekeken.

Na de reparatie, vijftien regels die een patroon naar een reguliere expressie omzetten, weigert hij beide URL’s. En dit is het bredere punt: bij code die namens jou het internet op gaat, is het niet genoeg dat de uitvoer klopt. Je moet controleren of de regel die je dácht te volgen ook echt is toegepast.

Kanttekening

Robots.txt is niet de enige grens, en eerlijk gezegd ook niet de belangrijkste. Het is een technisch signaal. Daarnaast staan er algemene voorwaarden, en die verbieden bij veel winkels geautomatiseerd ophalen ongeacht wat robots.txt zegt. Voor persoonlijk gebruik op vier pagina’s per dag zal niemand daar werk van maken, en het blijft goed om te weten dat “de robots.txt stond het toe” geen vrijbrief is.

Dan de omvang. Vier URL’s, één keer per dag, vijf seconden ertussen, dat is minder verkeer dan één bezoeker die even rondkijkt. Diezelfde code met tweehonderd URL’s en elk kwartier is iets anders, zeker bij een kleine importeur die zijn winkel bij een goedkope hoster heeft draaien. De code verandert nauwelijks, de impact wel, en dat is het soort grens waar geen foutmelding voor bestaat.

En de inhoudelijke kanttekening: een prijswacht maakt je een betere jager, niet een betere drinker. Ik heb mezelf de regel opgelegd dat er niets op de lijst komt wat ik niet al een keer bewust gekocht heb. Anders koop je op korting in plaats van op smaak, en dat is precies de gewoonte waar ik in het stuk over profielen tegen aanliep.

Pak ‘t zelf

Schrijf een script dat voor een lijst URL's [wat je wilt volgen] ophaalt
en vergelijkt met de vorige keer.

Lees eerst robots.txt van die host en kijk of het pad is toegestaan voor
onze user-agent, inclusief de jokertekens * en $. Niet toegestaan betekent
overslaan met een melding, niet alsnog ophalen.

Minstens vijf seconden tussen twee verzoeken, en een herkenbare user-agent.

Haal de waarde uit de structured data, niet uit de opmaak.
Sla resultaten op zodat de volgende run het verschil kan tonen.

Kleine oefening voor vandaag: open de robots.txt van een site die je regelmatig bezoekt (zet /robots.txt achter het domein) en zoek de regels met een sterretje. Dat is de helft die de meeste zelfgebouwde scripts negeren.