robots.txt voor Web Scraping: Wat Het Bindt, Wat Het Niet Bindt

robots.txt is een conventie, geen contract - en geen slot. Hier is wat het eigenlijk vraagt van een scraper, wat het niet kan afdwingen, en hoe je het kunt respecteren terwijl je toch data verzamelt.

Elk gesprek over scraping ethiek begint met robots.txt, en de meeste maken een fout in een van de twee richtingen - het behandelen als een wet waarvoor je gearresteerd zult worden als je het overtreedt, of als ruis die je volledig kunt negeren. Het is geen van beide. robots.txt is een vrijwillige conventie die goed gedragende bots vertelt welke paden een site liever met rust laat. Precies weten wat het wel en niet bindt, is wat een professionele data-operatie onderscheidt van een roekeloze. Dit is een gids voor de praktijk, en een opmerking vooraf: dit is informatief, geen juridisch advies.

Wat robots.txt eigenlijk is

robots.txt implementeert het Robots Exclusion Protocol, gestandaardiseerd in 2022 als RFC 9309. Het is een platte tekstbestand dat zich in de root van een domein bevindt - https://example.com/robots.txt - met één bestand per domein of subdomein. Het is optioneel: een 404 betekent simpelweg dat de site geen bestand heeft en geen voorkeur heeft uitgesproken. Cruciaal is dat het een verzoek is, geen barrière. Niets aan het serveren van een robots.txt voorkomt technisch toegang; het vertrouwt op de goede trouw van de bots die het lezen.

Het lezen ervan is een enkel verzoek - doe dit voordat je iets crawlt, elke keer:

# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@gate.quantumproxies.io:8000 https://example.com/robots.txt

De richtlijnen die ertoe doen

De woordenschat is klein. Leer deze en je kunt elke robots.txt in één oogopslag lezen:

Eén kanttekening over syntax: de wildcards * en $ in padpatronen zijn niet in de oorspronkelijke standaard, maar elke grote engine honoreert ze, dus Disallow: /*.pdf$ is gebruikelijk en effectief in de praktijk.

import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
Twee-kolom diagram dat contrasteert wat robots.txt is (een conventie, een snelheidssignaal) versus wat het niet is (een contract, een toegangscontrole)
robots.txt is een signaal om te respecteren, geen slot dat je stopt of een contract dat je op zichzelf bindt.

Wat het bindt - en wat het niet bindt

Dit is het deel dat mensen het meest verduidelijkt moeten hebben. robots.txt is op zichzelf niet juridisch bindend, en het is geen technische toegangscontrolemechanisme - het vergrendelt niets. Rechtbanken hebben over het algemeen bekende openbare gegevens als openbaar behandeld. Maar 'niet op zichzelf een wet' is niet hetzelfde als 'geen gevolgen'. Het negeren van de uitgesproken wensen van een site kan een factor worden in argumenten over gebruiksvoorwaarden, inbreuk of computermisbruik, het nodigt uit tot blokkades en extra controle, en het is simpelweg slecht burgerschap. De pragmatische houding: behandel robots.txt als een ethische ondergrens die je eert, en behandel de daadwerkelijke juridische vragen - persoonlijke gegevens, contracten, jurisdictie - als een aparte zaak om goed te krijgen. Ons overzicht van web scraping legaliteit in 2026 behandelt die apart.

De AI-crawler verschuiving

robots.txt heeft een tweede leven gekregen als het opt-out kanaal voor AI-training. Sites voegen nu expliciete regels toe voor AI user agents - GPTBot, Google-Extended, CCBot, ClaudeBot, PerplexityBot en anderen - om te zeggen 'indexeer mij, maar train niet op mij'. Dit is waarom onderzoekers nu beweren dat robots.txt niet langer genoeg is op zichzelf om openbare gegevens uit modellen te houden: het hangt volledig af van elke crawler die ervoor kiest om te gehoorzamen, en het spreekt alleen tot verklaarde, goed gedragende agents. Als je een crawler beheert, is het verklaren van een eerlijke User-Agent en het respecteren van deze opt-outs de basislijn. Het opkomende begeleidende bestand voor de tegenovergestelde intentie - AI-tools uitnodigen - is llms.txt, dat we behandelen in onze gids voor llms.txt.

# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
Stroomdiagram van een conforme crawl: haal robots.txt op, match user agent, eer crawl-delay, scrape toegestane openbare paden
Een conforme crawl leest eerst het bestand, eert de snelheid richtlijnen, en raakt alleen toegestane openbare paden aan.

Een goede burger zijn terwijl je toch data verzamelt

Het respecteren van robots.txt en het verzamelen van de openbare gegevens die je nodig hebt, zijn niet in conflict. De disciplines die je welkom houden zijn dezelfde die je ongeblokkeerd houden: eer Crawl-delay en doseer je verzoeken, identificeer je bot eerlijk, cache agressief zodat je nooit dezelfde pagina opnieuw ophaalt, en vermijd de dure eindpunten die een site probeert te beschermen. De gemeenschapsnorm, goed verwoord op forums, is dat robots.txt er vooral is om bots te ontmoedigen die verpletterend verkeer genereren - dus wees die bot niet. Onze beleefde scraping gids vertaalt dit in concrete pacing regels.

Voor teams die willen dat naleving standaard wordt afgehandeld, kan een Scraper API robots.txt lezen en respecteren als onderdeel van het verzoek, samen met verstandige snelheidsbeperkingen - zodat goed burgerschap het standaardgedrag van het hulpmiddel is, niet een vinkje dat je zou kunnen vergeten. Het houdt ook een schoon, verklaard voetafdruk in plaats van een ruwe script die vanaf één IP hamert.

Verzamel openbare gegevens op de conforme manier

Veelgestelde vragen

Is robots.txt juridisch van toepassing op web scraping?

Niet op zichzelf. robots.txt is een vrijwillige conventie (RFC 9309), geen wet of contract, en het blokkeert technisch geen toegang. Maar het negeren ervan kan bijdragen aan claims over gebruiksvoorwaarden, inbreuk of computermisbruik en nodigt uit tot blokkades en controle. Behandel het als een ethische ondergrens om te eren, en behandel de echte juridische vragen - persoonlijke gegevens, contracten - apart. Dit is geen juridisch advies.

Hoe lees ik de robots.txt van een website?

Stuur een HTTP GET naar de domeinroot met /robots.txt eraan toegevoegd, bijvoorbeeld https://example.com/robots.txt. curl of elke HTTP-client werkt; in Python parseert urllib.robotparser het en beantwoordt can_fetch() voor een gegeven user agent en URL. Een 404 betekent dat de site geen robots.txt heeft en geen crawlvoorkeur heeft uitgesproken.

Wat betekent Disallow: /?

Het vraagt alle overeenkomende bots om geen enkel pad op de site te crawlen - het hele domein is op verzoek verboden terrein. Een lege Disallow: betekent het tegenovergestelde: alles is toegestaan. Vergeet niet dat dit verzoeken zijn aan goed gedragende crawlers, geen afgedwongen barrières, en dat padwaarden hoofdlettergevoelig zijn terwijl richtlijnnamen dat niet zijn.

Kan ik robots.txt negeren als de gegevens openbaar zijn?

Technisch gezien kan dat, aangezien het niet wordt afgedwongen, maar je zou het over het algemeen niet moeten doen. Het negeren ervan is slecht burgerschap, zorgt ervoor dat je sneller geblokkeerd wordt, en kan het argument van een site tegen je versterken in een geschil. De professionele benadering is om het te respecteren, alleen toegestane openbare paden te scrapen, je verzoeken te doseren, en persoonlijke gegevens volledig buiten scope te houden.

robots.txt is een klein bestand dat een groot signaal draagt: hier is hoe deze site gecrawld wil worden. Lees het eerst, eer de paden en de pacing, verklaar wie je bent, en je kunt de openbare gegevens verzamelen die je nodig hebt terwijl je stevig aan de juiste kant van zowel etiquette als risico blijft.

Probeer de Scraper API met robots-bewust crawlen