Robots.txt-parser

Lim inn en robots.txt og les den slik en crawler gjør, i henhold til RFC 9309 (Robots Exclusion Protocol, standardisert 2022): brukeragentgrupper, Allow/Disallow-regler, sitemaps og ukjente direktiver, alt satt opp — pluss en revisjon for de klassiske feilene (tomme disallow-linjer, ukjente direktiver, for store filer). Matcheren besvarer så det egentlige spørsmålet: lim inn en brukeragent og en sti, og få tillatt/avslått-avgjørelsen med den nøyaktige regelen som avgjorde den — lengste treff, jokertegnet *, sluttankeret $ og sammenslåing av grupper, nøyaktig slik standarden spesifiserer. Alt kjøres i nettleseren.
Ingenting analysert ennå. Lim inn en robots.txt over og trykk Analyser fil, eller last inn et eksempel.
Matcheren arbeider med teksten som står i boksen over (ikke nødvendig å trykke Analyser først). Brukeragenten matches slik RFC 9309 definerer: User-agent-verdien i filen må være en delstreng av det som skrives her, uten hensyn til store og små bokstaver — så ExampleBot/1.0 treffer en gruppe deklarert som ExampleBot. En full URL godtas som sti.
Brukeragent (en ekte UA-streng fungerer) Sti, eller full URL
Ingen avgjørelse ennå. Trykk Test tillatelse.
Slik hentes filen:åpnehttps://your-domain.example/robots.txti en nettleser, velg alt, kopier og lim inn her — ellercurl -s https://your-domain.example/robots.txti en terminal. Denne siden henter aldri noe selv: den leser bare det som limes inn. For å inspisere svarheaderne som bar filen, kjør dem gjennomHTTP-headertolker.
Selvtest
Kjører analysatoren og matcheren på nytt mot RFC 9309-referansevektorene: presedens for lengste treff (inkludert uavgjort mellom allow og disallow og dypstitilfellet), sammenslåing av grupper, den*gruppereserve, skilletegn for store og små bokstaver i stier og brukeragenter, jokertegn, den$anker, den implisitte tillatelsen til/robots.txt, prosentkodingsnormalisering, sitemap-uttrekk og de negative stiene. Ingenting sendes noe sted.
Hva er robots.txt?
Kort fortalt: robots.txt er en ren tekstfil i roten av et nettsted som forteller veloppdragne crawlere hvilke stier de kan hente — en frivillig konvensjon, standardisert som RFC 9309 i 2022, som alle store crawlere følger.
Slik ser en fil ut

En fil er en sekvens av poster. En gruppe starter med én eller flere User-agent-linjer, etterfulgt av Allow- og Disallow-regler som gjelder for disse crawlerne. En ny User-agent-linje etter regler starter en ny gruppe; flere User-agent-linjer på rad deler én gruppe (en crawler med to navn trenger dette). Frittstående poster som Sitemap kan stå hvor som helst. # starter en kommentar hvor som helst på en linje. Feltnavn skiller ikke mellom store og små bokstaver; stier gjør det.

LinjeBetyr
User-agent: foobotReglene nedenfor gjelder for crawlere hvis navn inneholder foobot (uavhengig av store og små bokstaver)
User-agent: *Reglene nedenfor gjelder for alle crawlere uten en mer spesifikk gruppe
Disallow: /private/Ikke hent stier som begynner med /private/
Allow: /private/public/Unntak som slår disallow-regelen over for disse stiene (lengste treff)
Disallow: (tom)Ingenting er avslått — den klassiske «tillat alt»-formen
Sitemap: https://…/sitemap.xmlHvor sitemapet ligger; crawlere kan hente flere
Crawl-delay: 30Ikke i RFC 9309 — en eldre utvidelse; store crawlere ignorerer den eller tolker den selv
Slik avgjøres et svar (RFC 9309 §2.2.2)

1. Finn gruppen der User-agent-verdien er en delstreng av crawlerens navn; slå sammen alle treffende grupper. Finnes ingen, brukes *-gruppen; finnes heller ikke den, er alt tillatt. 2. Test stien mot hver regel: matching er prefiksbasert, skiller mellom store og små bokstaver, og */$ fungerer som jokertegn. 3. Den lengste treffende regelen vinner; ved lik lengde vinner Allow over Disallow. Ingen treffende regel betyr tillatt. Og uansett hva reglene sier, er /robots.txt implisitt tillatt — en crawler kunne ikke lese reglene ellers.

Vanlige feil
  • Å tro at robots.txt blokkerer tilgang. Det er en forespørsel til veloppdragne crawlere, ikke en mur: useriøse skrapere ignorerer den fullstendig, og den har ingen effekt på hva en nettleser kan åpne. For reell beskyttelse må autentisering brukes; for å styre bare søkemotorer er robots.txt riktig verktøy.
  • Å tro at Disallow: / fjerner en side fra søkeresultatene. Det stopper crawling, ikke indeksering: hvis andre sider lenker til siden, kan en søkemotor fortsatt liste nettadressen (uten beskrivelse). Metakoden noindex eller responsheaderen er verktøyet for fjerning.
  • Å stole på rekkefølge i stedet for lengde. Den første treffende regelen vinner ikke — den mest spesifikke (lengste) gjør det. Å endre rekkefølgen på linjene for å «fikse» oppførselen er uten effekt; gjør den tiltenkte regelen lengre i stedet.
  • Å blokkere CSS og JS. Å avslå /*.css$ og /*.js$ var tidligere vanlig «optimalisering»; renderere trenger nå disse filene for å se siden slik besøkende gjør, og en halvt gjengitt side kan rangeres dårligere.
  • Å behandle én stor gruppe som dokumentasjon. Kommentarlinjer inne i en gruppe er greit, men et avsnitt med prosa før den første User-agent-linjen uten # er en analysefeil som kan forvirre tilgivende analysatorer.
Ofte stilte spørsmål

Støtter alle crawlere Allow, * og $? De store gjør det, og RFC 9309 standardiserer alle tre. Noen mindre eller eldre crawlere forstår bare Disallow og leser * bokstavelig — en grunn til å holde reglene enkle når det er mulig.

Hva betyr en tom Disallow:? «Avslå ingenting» — gruppen tillater eksplisitt alt. Den dukker vanligvis opp når noen redigerer en mal og sletter stien, men ikke direktivet; revisjonen flagger den.

Hvor stor kan filen være? RFC 9309 krever at analysatorer håndterer minst 500 KiB; utover det kan en crawler slutte å lese og behandle resten som avslått. Hold den godt under, og hvis den vokser mye, vurder om styring av crawling hører hjemme i sideheadere i stedet.

Hvorfor sier matcheren at /robots.txt er tillatt selv under Disallow: /? Fordi standarden sier det, med så mange ord: robots-filen selv er implisitt tillatt. Pythons urllib.robotparser implementerer blant annet ikke dette spesialtilfellet — en av de små forskjellene mellom analysatorer i praksis, som denne siden dokumenterer i sin selvtest.

Er en Disallow-sti case-sensitiv? Ja. /Private/ og /private/ er ulike stier. Feltnavnet disallow kan skrives med hvilke store og små bokstaver som helst, men verdien må samsvare nøyaktig med URL-en.