Robots.txt-parser

Plak een robots.txt en lees hem zoals een crawler dat doet, volgens RFC 9309 (het Robots Exclusion Protocol, in 2022 gestandaardiseerd): user-agentgroepen, Allow/Disallow-regels, sitemaps en onbekende richtlijnen, alles overzichtelijk weergegeven — plus een controle op de klassieke fouten (lege disallow-regels, onbekende richtlijnen, te grote bestanden). De matcher beantwoordt daarna de echte vraag: plak een user-agent en een pad, en krijg het oordeel toegestaan/geweigerd met de exacte regel die besliste — langste overeenkomst, jokerteken *, eindanker $ en groepssamenvoeging, precies zoals de standaard voorschrijft. Alles draait in uw browser.
Nog niets verwerkt. Plak hierboven een robots.txt en druk op Bestand verwerken, of laad een voorbeeld.
De matcher werkt op de tekst die nu in het vak hierboven staat (u hoeft niet eerst op Verwerken te drukken). De user-agent wordt gematcht zoals RFC 9309 bepaalt: de User-agent-waarde in het bestand moet een hoofdletterongevoelige deelreeks zijn van wat u hier invoert — dus het typen van ExampleBot/1.0 matcht een groep die als ExampleBot is aangegeven. Een volledige URL wordt als pad geaccepteerd.
User-agent (een echte UA-string werkt) Pad, of volledige URL
Nog geen oordeel. Druk op Machtiging testen.
Zo haalt u uw bestand op:openenhttps://your-domain.example/robots.txtin een browser: alles selecteren, kopiëren en hier plakken — ofcurl -s https://your-domain.example/robots.txtin een terminal. Deze pagina haalt zelf nooit iets op: hij leest alleen wat u plakt. Om de antwoordheaders te bekijken die het bestand hebben meegestuurd, haalt u ze door deHTTP-headerparser.
Zelftest
Voert de parser en de matcher opnieuw uit tegen de referentievectoren van RFC 9309: voorrang van de langste overeenkomst (inclusief de gelijkspel-regel waarbij allow voor disallow gaat en het geval van het diepe pad), groepssamenvoeging, de*terugvalgroep, hoofdlettergevoeligheid van paden en user-agents, jokertekens, de$anker, de impliciete toestemming van/robots.txt, normalisatie van procentcodering, het uitlezen van sitemaps en de negatieve paden. Er wordt niets ergens naartoe gestuurd.
Wat is robots.txt?
In één zin: robots.txt is een platte tekstbestand in de hoofdmap van een site dat goedwillende crawlers vertelt welke paden ze mogen ophalen — een vrijwillige afspraak, in 2022 gestandaardiseerd als RFC 9309, die elke grote crawler respecteert.
De opbouw van een bestand

Een bestand is een reeks records. Een groep begint met een of meer User-agent-regels, gevolgd door Allow- en Disallow-regels die voor die crawlers gelden. Een nieuwe User-agent-regel na regels begint een nieuwe groep; meerdere User-agent-regels achter elkaar delen één groep (een crawler met twee namen heeft dit nodig). Losse records zoals Sitemap kunnen overal voorkomen. # start een commentaar overal in een regel. Veldnamen zijn hoofdletterongevoelig; paden niet.

LijnBetekent
User-agent: foobotDe onderstaande regels gelden voor crawlers waarvan de naam foobot bevat (hoofdletterongevoelig)
User-agent: *De onderstaande regels gelden voor elke crawler zonder een specifiekere groep
Disallow: /private/Haal geen paden op die beginnen met /private/
Allow: /private/public/Uitzondering die de disallow hierboven voor deze paden overtreft (langste overeenkomst)
Disallow: (leeg)Niets wordt geweigerd — de klassieke "alles toestaan"-formulering
Sitemap: https://…/sitemap.xmlWaar uw sitemap staat; crawlers kunnen er meerdere verzamelen
Crawl-delay: 30Niet in RFC 9309 — een verouderde uitbreiding; grote crawlers negeren die of interpreteren hem zelf
Hoe een oordeel tot stand komt (RFC 9309 §2.2.2)

1. Zoek de groep waarvan de User-agent-waarde een deelreeks is van de naam van de crawler; voeg alle overeenkomende groepen samen. Als er geen is, gebruik de *-groep; als ook die ontbreekt, is alles toegestaan. 2. Test het pad tegen elke regel: matching is op basis van voorvoegsels, hoofdlettergevoelig, en */$ werken als jokertekens. 3. De langste overeenkomende regel wint; bij gelijke lengte wint Allow van Disallow. Geen overeenkomende regel betekent toegestaan. En wat de regels ook zeggen, /robots.txt zelf is impliciet toegestaan — een crawler zou de regels anders niet kunnen lezen.

Veelgemaakte fouten
  • Denken dat robots.txt toegang blokkeert. Het is een verzoek aan beleefde crawlers, geen muur: schurkachtige scrapers negeren het volledig, en het heeft geen effect op wat een browser kan openen. Voor echte bescherming gebruikt u authenticatie; om alleen zoekmachines te sturen, is robots.txt het juiste hulpmiddel.
  • Verwachten dat Disallow: / een pagina uit de zoekresultaten haalt. Het stopt het crawlen, niet het indexeren: als andere pagina's naar de uwe linken, kan een zoekmachine de URL nog steeds tonen (zonder beschrijving). De noindex-metatag of responsheader is het verwijderinstrument.
  • Vertrouwen op volgorde in plaats van lengte. De eerste overeenkomende regel wint niet — de meest specifieke (langste) regel wint. Regels herschikken om het gedrag te "repareren" heeft geen effect; maak de bedoelde regel langer.
  • CSS en JS blokkeren. Het uitsluiten van /*.css$ en /*.js$ was vroeger een gebruikelijke "optimalisatie"; renderers hebben die bestanden nu nodig om de pagina te zien zoals bezoekers dat doen, en een half gerenderde pagina kan slechter scoren.
  • Eén grote groep als documentatie behandelen. Commentaarregels binnen een groep zijn prima, maar een alinea proza vóór de eerste User-agent-regel zonder # is een parseerfout die toegiftige parsers in verwarring kan brengen.
Veelgestelde vragen

Ondersteunen alle crawlers Allow, * en $? De grote wel, en RFC 9309 standaardiseert alle drie. Sommige kleinere of oudere crawlers begrijpen alleen Disallow en lezen * letterlijk — een reden om regels eenvoudig te houden wanneer dat kan.

Wat betekent een lege Disallow:? "Niets weigeren" — de groep staat uitdrukkelijk alles toe. Dit komt meestal voor wanneer iemand een sjabloon bewerkt en het pad verwijdert maar de richtlijn laat staan; de controle wijst er op.

Hoe groot mag het bestand zijn? RFC 9309 vereist dat parsers minstens 500 KiB aankunnen; daarboven kan een crawler stoppen met lezen en de rest als geweigerd beschouwen. Blijf er ruim onder, en als het enorm groeit, overweeg dan of crawlbeheer niet beter in paginaheaders hoort.

Waarom zegt de matcher dat /robots.txt is toegestaan, zelfs onder Disallow: /? Omdat de standaard dat letterlijk zo zegt: het robotsbestand zelf is impliciet toegestaan. De urllib.robotparser van Python en andere implementaties volgen dit speciale geval niet — een van de kleine verschillen tussen praktijkparsers die deze pagina in haar zelftest documenteert.

Is een Disallow-pad hoofdlettergevoelig? Ja. /Private/ en /private/ zijn verschillende paden. De veldnaam disallow mag in elke schrijfwijze, maar de waarde moet exact overeenkomen met de URL.