Αναλυτής Robots.txt

Επικόλληση ενός robots.txt και ανάγνωσή του όπως το διαβάζει ένας crawler, σύμφωνα με το RFC 9309 (το Robots Exclusion Protocol, τυποποιημένο το 2022): ομάδες user-agent, κανόνες Allow/Disallow, χάρτες ιστότοπου και άγνωστες οδηγίες, όλα παρουσιασμένα — μαζί με έλεγχο για τα κλασικά λάθη (κενές γραμμές disallow, άγνωστες οδηγίες, υπερβολικά μεγάλα αρχεία). Η αντιστοίχιση απαντά έπειτα στο πραγματικό ερώτημα: επικολλάται ένας user agent και μια διαδρομή, και λαμβάνεται η απόφαση επιτρέπεται/απαγορεύεται με τον ακριβή κανόνα που την όρισε — μακρύτερη αντιστοίχιση, μπαλαντέρ *, άγκυρα τέλους $ και συγχώνευση ομάδων, ακριβώς όπως ορίζει το πρότυπο. Όλα εκτελούνται στο πρόγραμμα περιήγησης.
Δεν έχει αναλυθεί τίποτα ακόμη. Επικόλληση ενός robots.txt παραπάνω και κλικ στο Ανάλυση αρχείου, ή φόρτωση ενός δείγματος.
Η αντιστοίχιση λειτουργεί στο κείμενο που βρίσκεται αυτή τη στιγμή στο πεδίο παραπάνω (χωρίς να χρειάζεται πρώτα Ανάλυση). Ο user agent αντιστοιχίζεται όπως ορίζει το RFC 9309: η τιμή User-agent στο αρχείο πρέπει να είναι υποσυμβολοσειρά, χωρίς διάκριση πεζών/κεφαλαίων, του όσα πληκτρολογούνται εδώ — άρα η πληκτρολόγηση του ExampleBot/1.0 αντιστοιχίζεται σε ομάδα που δηλώνεται ως ExampleBot. Ως διαδρομή γίνεται δεκτό και ένα πλήρες URL.
User agent (μπορεί να χρησιμοποιηθεί ένα πραγματικό UA string) Διαδρομή ή πλήρες URL
Δεν υπάρχει απόφαση ακόμη. Κλικ στο Έλεγχος δικαιώματος.
Πώς ανακτάται το αρχείο:άνοιγμαhttps://your-domain.example/robots.txtσε πρόγραμμα περιήγησης, επιλογή όλων, αντιγραφή και επικόλληση εδώ — ήcurl -s https://your-domain.example/robots.txtσε τερματικό. Η σελίδα αυτή δεν ανακτά τίποτα μόνη της: διαβάζει μόνο ό,τι επικολλάται. Για επιθεώρηση των κεφαλίδων απόκρισης που μετέφεραν το αρχείο, αυτές περνούν μέσα από τοΑναλυτής κεφαλίδων HTTP.
Αυτοέλεγχος
Εκτελεί ξανά τον αναλυτή και την αντιστοίχιση έναντι των διανυσμάτων αναφοράς του RFC 9309: προτεραιότητα της μακρύτερης αντιστοίχισης (συμπεριλαμβανομένης της ισοπαλίας allow-beats-disallow και της περίπτωσης βαθιάς διαδρομής), συγχώνευση ομάδων, το*ομάδα εφεδρεία, διάκριση πεζών/κεφαλαίων στις διαδρομές και στους user agents, μπαλαντέρ, το$άγκυρα, η σιωπηρή επιτρεπτότητα του/robots.txt, κανονικοποίηση κωδικοποίησης ποσοστού, εξαγωγή χαρτών ιστότοπου και οι αρνητικές διαδρομές. Τίποτα δεν αποστέλλεται πουθενά.
Τι είναι το robots.txt;
Σε μία πρόταση: το robots.txt είναι αρχείο απλού κειμένου στη ρίζα ενός ιστοτόπου που δηλώνει σε ευπρεπείς crawlers ποιες διαδρομές επιτρέπεται να ανακτήσουν — μια εθελοντική σύμβαση, τυποποιημένη ως RFC 9309 το 2022, που σέβονται όλοι οι μεγάλοι crawlers.
Η μορφή ενός αρχείου

Ένα αρχείο είναι μια ακολουθία εγγραφών. Μια ομάδα ξεκινά με μία ή περισσότερες γραμμές User-agent, ακολουθούμενες από κανόνες Allow και Disallow που ισχύουν για αυτούς τους crawlers. Μια νέα γραμμή User-agent μετά από κανόνες ξεκινά νέα ομάδα· πολλές γραμμές User-agent η μία μετά την άλλη μοιράζονται μία ομάδα (ένας crawler με δύο ονόματα χρειάζεται αυτό). Αυτόνομες εγγραφές όπως το Sitemap μπορούν να εμφανιστούν οπουδήποτε. Το # ξεκινά σχόλιο οπουδήποτε σε μια γραμμή. Τα ονόματα πεδίων δεν διακρίνουν πεζά/κεφαλαία· οι διαδρομές διακρίνονται.

ΓραμμήΣημαίνει
User-agent: foobotΟι κανόνες παρακάτω ισχύουν για crawlers του οποίου το όνομα περιέχει foobot (χωρίς διάκριση πεζών/κεφαλαίων)
User-agent: *Οι κανόνες παρακάτω ισχύουν για κάθε crawler χωρίς πιο συγκεκριμένη ομάδα
Disallow: /private/Να μην ανακτώνται διαδρομές που αρχίζουν με /private/
Allow: /private/public/Εξαίρεση που υπερισχύει της παραπάνω απαγόρευσης για αυτές τις διαδρομές (μακρύτερη αντιστοίχιση)
Disallow: (κενό)Τίποτα δεν απαγορεύεται — η κλασική ιδιωμία «επιτρέπονται όλα»
Sitemap: https://…/sitemap.xmlΠού βρίσκεται ο χάρτης ιστότοπου· οι crawlers μπορούν να συλλέξουν περισσότερους
Crawl-delay: 30Δεν περιλαμβάνεται στο RFC 9309 — παλαιά επέκταση· οι μεγάλοι crawlers την αγνοούν ή την ερμηνεύουν μόνοι τους
Πώς προκύπτει η απόφαση (RFC 9309 §2.2.2)

1. Εντοπισμός της ομάδας της οποίας η τιμή User-agent είναι υποσυμβολοσειρά του ονόματος του crawler· συγχώνευση όλων των αντιστοιχισμένων ομάδων. Αν δεν υπάρχει καμία, χρησιμοποιείται η ομάδα *· αν ούτε αυτή υπάρχει, επιτρέπονται όλα. 2. Έλεγχος της διαδρομής έναντι κάθε κανόνα: η αντιστοίχιση γίνεται με πρόθεμα, με διάκριση πεζών/κεφαλαίων, και τα */$ λειτουργούν ως μπαλαντέρ. 3. Υπερισχύει ο μακρύτερος αντιστοιχισμένος κανόνας· σε ίσο μήκος, το Allow υπερισχύει του Disallow. Αν δεν υπάρχει αντιστοιχισμένος κανόνας, επιτρέπεται. Ό,τι κι αν λένε οι κανόνες, το ίδιο το /robots.txt επιτρέπεται σιωπηρά — διαφορετικά ένας crawler δεν θα μπορούσε να διαβάσει τους κανόνες.

Συνηθισμένα λάθη
  • Η πεποίθηση ότι το robots.txt μπλοκάρει την πρόσβαση. Είναι αίτημα προς ευγενικούς crawlers, όχι τείχος: οι παράνομοι scrapers το αγνοούν εντελώς, και δεν έχει καμία επίδραση σε ό,τι μπορεί να ανοίξει ένα πρόγραμμα περιήγησης. Για πραγματική προστασία χρησιμοποιείται έλεγχος ταυτότητας· για μόνο καθοδήγηση μηχανών αναζήτησης, το robots.txt είναι το σωστό εργαλείο.
  • Η προσδοκία ότι το Disallow: / αφαιρεί μια σελίδα από τα αποτελέσματα αναζήτησης. Σταματά την ανάκτηση, όχι την ευρετηρίαση: αν άλλες σελίδες παραπέμπουν σε αυτήν, μια μηχανή αναζήτησης μπορεί να εξακολουθεί να εμφανίζει τη διεύθυνση (χωρίς περιγραφή). Το μετα-tag ή η κεφαλίδα απόκρισης noindex είναι το εργαλείο αφαίρεσης.
  • Η εξάρτηση από τη σειρά αντί για το μήκος. Ο πρώτος αντιστοιχισμένος κανόνας δεν υπερισχύει — υπερισχύει ο πιο συγκεκριμένος (μακρύτερος). Η αναδιάταξη των γραμμών για «διόρθωση» της συμπεριφοράς δεν έχει αποτέλεσμα· ο κανόνας που εννοείται γίνεται μακρύτερος.
  • Μπλοκάρισμα CSS και JS. Η απαγόρευση των /*.css$ και /*.js$ ήταν κάποτε συνηθισμένη «βελτιστοποίηση»· οι μηχανές απόδοσης χρειάζονται πλέον αυτά τα αρχεία για να δουν τη σελίδα όπως την βλέπουν οι επισκέπτες, και μια μισοαποδοσμένη σελίδα μπορεί να κατατάσσεται χειρότερα.
  • Αντιμετώπιση μιας μεγάλης ομάδας ως τεκμηρίωση. Οι γραμμές σχολίων μέσα σε μια ομάδα είναι εντάξει, αλλά ένα σημείωμα σε πεζό λόγο πριν από την πρώτη γραμμή User-agent χωρίς # αποτελεί σφάλμα ανάλυσης που μπορεί να μπερδέψει ανεκτικούς αναλυτές.
Συχνές ερωτήσεις

Υποστηρίζουν όλοι οι crawlers τα Allow, * και $; Οι μεγάλοι τα υποστηρίζουν, και το RFC 9309 τυποποιεί και τα τρία. Ορισμένοι μικρότεροι ή παλαιότεροι crawlers κατανοούν μόνο το Disallow και διαβάζουν το * κυριολεκτικά — ένας λόγος να κρατούνται οι κανόνες απλοί όταν είναι δυνατόν.

Τι σημαίνει ένα κενό Disallow:; «Να μην απαγορεύεται τίποτα» — η ομάδα επιτρέπει ρητά τα πάντα. Συνήθως εμφανίζεται όταν κάποιος επεξεργάζεται ένα πρότυπο και διαγράφει τη διαδρομή αλλά όχι την οδηγία· ο έλεγχος το επισημαίνει.

Πόσο μεγάλο επιτρέπεται να είναι το αρχείο; Το RFC 9309 απαιτεί από τους αναλυτές να χειρίζονται τουλάχιστον 500 KiB· πέρα από αυτό ένας crawler μπορεί να σταματήσει την ανάγνωση και να θεωρήσει το υπόλοιπο ως απαγορευμένο. Να μένει αρκετά κάτω από αυτό, και αν μεγαλώσει πολύ, να εξετάζεται αν ο έλεγχος ανάκτησης ανήκει μάλλον στις κεφαλίδες της σελίδας.

Γιατί ο αντιστοιχιστής λέει ότι το /robots.txt επιτρέπεται ακόμη και υπό Disallow: /; Επειδή το ορίζει το πρότυπο με τόσες λέξεις: το ίδιο το αρχείο robots επιτρέπεται σιωπηρά. Το urllib.robotparser της Python, μεταξύ άλλων, δεν υλοποιεί αυτή την ειδική περίπτωση — μία από τις μικρές αποκλίσεις μεταξύ πραγματικών αναλυτών που τεκμηριώνει αυτή η σελίδα στο αυτοτεστ της.

Η διαδρομή Disallow διακρίνει πεζά/κεφαλαία; Ναι. Το /Private/ και το /private/ είναι διαφορετικές διαδρομές. Το όνομα πεδίου disallow μπορεί να γράφεται με οποιαδήποτε πεζά/κεφαλαία, αλλά η τιμή πρέπει να ταιριάζει ακριβώς με το URL.