Τι είναι το Robots Exclusion Protocol
14/9/2001 (Συμβουλές για τη διαχείριση των αόρατων παρατηρητών των web σελίδων μας.)
Γιώργος Επιτήδειος,
gepiti@gepiti.com
Η αόρατη πλευρά του Internet
Αν διαθέτετε ένα web site και παρακολουθείτε προσεκτικά τα στατιστικά στοιχεία όσων κλήσεων δέχεται, τότε σίγουρα θα έχετε παρατηρήσει μερικούς πολύ περίεργους επισκέπτες. Για παράδειγμα, το Σάββατο που μας πέρασε οι προσωπικές μου σελίδες (http://www.gepiti.com/gepiti) κατέγραψαν τα ακόλουθα requests (αιτήματα για λήψη web σελίδων):
Διεύθυνση server | Αριθμός requests |
crawl3.googlebot.com | 10 |
crawl1.googlebot.com | 10 |
directhit.com | 25 |
ezspider403.directhit.com | 11 |
inktomi.com | 10 |
fastsearch.net | 20 |
sac2.fastsearch.net | 20 |
Μια προσεκτική ματιά στα ονόματα των servers είναι αρκετή για να ανακαλύψουμε την ταυτότητά τους. Τα crawl3.googlebot.com και crawl1.googlebot.com ανήκουν στη μηχανή αναζήτησης Google (www.google.com), ενώ τα directhit.com και ezspider403.directhit.com στη μηχανή Directhit (http://www.directhit.com), το inktomi.com στην Inktomi (http://www.inktomi.com), και τέλος τα fastsearch.net και sac2.fastsearch.net στη Fast (http://www.fastsearch.com).
Αν κανείς μπορούσε να μελετήσει τα περιεχόμενα αυτών των servers θα ανακάλυπτε ότι εκεί υπάρχουν εγκατεστημένα προγράμματα (γνωστά με το όνομα spiders ή crawlers) αποστολή των οποίων είναι η συγκέντρωση και καταχώρηση web σελίδων σε τεράστιες βάσεις δεδομένων. Έτσι, όταν εμείς αναζητούμε κάτι σε ένα εργαλείο όπως το Google, αυτό ελέγχει τη βάση με τις αποθηκευμένες σελίδες του και μας παρουσιάζει τα σχετικά αποτελέσματα. Αν μάλιστα σας έχει τύχει να επισκεφθείτε μια σελίδα και να μη βρείτε ό,τι δηλώνει το εργαλείο πως περιέχει, αυτό σημαίνει ότι πιθανότατα η σελίδα άλλαξε, αλλά ο crawler δεν "ξαναπέρασε" ακόμη από εκεί για να την ελέγξει και να ενημερώσει σχετικά τη βάση δεδομένων του εργαλείου.
Τι είναι τα bots
Τα crawlers (spiders) των μηχανών αναζήτησης δεν αποτελούν τους μόνους άψυχους κατοίκους της χώρας του Internet. Χιλιάδες αυτόνομα προγράμματα κάθε μορφής "κυκλοφορούν" μέσα στο δίκτυο και εκτελούν διάφορες εργασίες για λογαριασμό των δημιουργών τους. Όλα αυτά τα προγράμματα (συμπεριλαμβανομένων και των crawlers) είναι γνωστά με το όνομα robots (bots για συντομία) ή agents και μερικές από τις άλλες χρήσεις τους είναι:
· Έλεγχος καλής λειτουργίας ενός site
· Συλλογή πληροφοριών
· Συγκέντρωση και σύγκριση στοιχείων από διαφορετικά sites
· Έλεγχος της ταχύτητας μεταφοράς δεδομένων
· Έλεγχος της ποιότητας σύνδεσης μεταξύ δύο Η/Υ
· κ.λπ.
Αξίζει να σημειωθεί ότι όλα τα bots δεν λειτουργούν μόνο για ιδία χρήση (όπως συμβαίνει στην περίπτωση του Google), αλλά και για λογαριασμό τρίτων. Για παράδειγμα, οι εταιρείες Inctomi και Fast συλλέγουν υλικό από το Internet και το διαθέτουν σε κάθε ενδιαφερόμενο. Δεν είναι λοιπόν πάντα εύκολο να ανακαλύψουμε πού και πώς χρησιμοποιούνται όσα στοιχεία συλλέγονται από το site μας.
Πώς διαχειριζόμαστε τα robots (agents) του web μέσω meta tags
Ένας απλός τρόπος για να επηρεάσουμε τη λειτουργία όσων bots κυκλοφορούν στο web (για το υπόλοιπο Internet δεν υπάρχει κάτι αντίστοιχο) είναι η δήλωση των προτιμήσεών μας μέσα από τα meta tags. Η δημοφιλέστερη meta tag που χρησιμοποιείται για αυτή την εργασία είναι η robots και συνήθως ο κώδικάς της (ο οποίος τοποθετείται μέσα στην οδηγία HEAD) είναι ο ακόλουθος:
<META NAME="robots" CONTENT="index,follow">
(προσέξτε πως δεν υπάρχει διάστημα μεταξύ του index και του follow)
Όταν δηλώσουμε το CONTENT ως index, το bot λαμβάνει την προτροπή να καταχωρήσει αυτή την σελίδα, ενώ αν το CONTENT έχει δηλωθεί ως noindex, τότε η σελίδα αυτή δεν θα πρέπει να καταχωρηθεί.
Επίσης, όταν το CONTENT έχει δηλωθεί ως follow, αυτό σημαίνει πως το λογισμικό αναζήτησης και καταχώρησης παρακαλείται να ακολουθήσει τις παραπομπές που υπάρχουν στην παρούσα σελίδα. Αν πάλι η δήλωση είναι nofollow, τότε το λογισμικό θα πρέπει να τις αγνοήσει.
Δυστυχώς ό,τι δηλώνεται στην παράμετρο CONTENT δεν είναι υποχρεωτικό. Ο διαχειριστής του bot αναλαμβάνει την ηθική υποχρέωση να μην κάνει μέσα στο site μας πράγματα που δεν επιθυμούμε (π.χ. να καταχωρήσει σε μια μηχανή αναζήτησης σελίδες που επιθυμούμε να παραμείνουν εκτός της βάσης του) και η μέχρι σήμερα εμπειρία έχει δείξει ότι συνήθως το nofollow γίνεται σεβαστό. Αντίθετα, η προτροπή follow συχνά αγνοείται μια και το Web είναι πολύ μεγάλο για να καταχωρηθεί ολόκληρο. Έτσι, τις περισσότερες φορές ένα bot καταχωρεί μόνο ένα μέρος όσων συνάντησε στο δίκτυο.
Πώς διαχειριζόμαστε τα robots (agents) του web μέσω της robots.txt
Ένας πιο ισχυρός και ευέλικτος τρόπος για να επικοινωνήσουμε με τα bots είναι η δημιουργία ενός αρχείου robots.txt "στην αρχή" (στο root directory) του site μας. Αν δοκιμάσουμε τη διεύθυνση http://www.in.gr/robots.txt (ή τη http://www.yahoo.com/robots.txt) θα δούμε ότι παρόμοιο αρχείο δεν υπάρχει. Με άλλα λόγια δεν υπάρχει περιορισμός στην καταχώρηση (indexing) των σελίδων του in.gr (ή του Yahoo!).
Αντίθετα, μια επίσκεψη στο http://www.flash.gr/robots.txt θα μας δείξει τα ακόλουθα:
User-agent: *
Disallow: /
(Υπάρχουν και κάποια σχόλια, αλλά αυτά έχουν γραφτεί για όσους ανθρώπους διαβάζουν το robots.txt. Αν μια γραμμή του αρχείου ξεκινά με τον χαρακτήρα #, τότε αυτή αγνοείται από τα προγράμματα ανάγνωσης και καταχώρησης.)
Τα περιεχόμενα του αρχείου robots.txt ορίζονται από το Robots Exclusion Protocol. Εκεί διαβάζουμε ότι με την παράμετρο User-agent δηλώνουμε ποιο robot θέλουμε να αποκλείσουμε. Στην προκειμένη περίπτωση το Flash τα αποκλείει όλα γι' αυτό και ως τιμή της παραμέτρου User-agent έχει τοποθετηθεί ο αστερίσκος.
Επίσης, με την παράμετρο Disallow μπορούμε να ορίσουμε ποια τμήματα του site θέλουμε να αποκλείσουμε (σημειώστε ότι δεν υπάρχει Allow, πράγμα που σημάνει πως ό,τι δεν αποκλείεται θεωρείται προσβάσιμο). Στο Flash η Disallow έχει την τιμή / που σημαίνει ότι απαγορεύονται όλα όσα βρίσκονται από το αρχικό (root) directory και πέρα, δηλαδή δεν πρέπει να καταχωρηθεί τίποτε.
Για να γίνει πιο εύκολα κατανοητή η λειτουργία του robots.txt θα δούμε ένα λιγότερο περιοριστικό αρχείο αυτής της μορφής. Μελετώντας το http://europe.cnn.com/robots.txt, θα παρατηρήσουμε ότι περιέχει πολλές ειδικές ρυθμίσεις για ξεχωριστά bots. Για παράδειγμα, βλέπουμε ότι:
User-agent: *
Disallow: /cgi-bin
Disallow: /TRANSCRIPTS
Disallow: /development
Disallow: /third
Disallow: /beta
Disallow: /java
Disallow: /shockwave
Disallow: /JOBS
Disallow: /pr
Disallow: /Interactive
Disallow: /alt_index.html
Disallow: /webmaster_logs
Disallow: /newscenter
Disallow: /virtual
Disallow: /DIGEST
Disallow: /QUICKNEWS
Disallow: /SEARCH
Δηλαδή για όλα τα bots απαγορεύεται η είσοδος στα directories /cgi-bin, /TRANSCRIPTS, /development, /third, /beta, /java, /shockwave, /JOBS, /pr, /Interactive, /webmaster_logs, /newscenter
Επίσης, απαγορεύεται η είσοδος στα subdirectories του /newscenter που ονομάζονται /virtual, /DIGEST, /QUICKNEWS και /SEARCH
Τέλος, απαγορεύεται η λήψη του αρχείου alt_index.html
Αν τώρα συγκρίνουμε την ειδική καταγραφή για το bot GoogleBot που ακολουθεί, με την γενική κωδικοποίηση που αναφέρθηκε παραπάνω, θα παρατηρήσουμε ότι υπάρχουν πολύ λιγότεροι περιορισμοί (πιθανώς λόγω ειδικής συμφωνίας):
User-agent: GoogleBot
Disallow: /cgi-bin
Disallow: /java
Disallow: /images
Disallow: /development
Disallow: /third
Disallow: /beta
Disallow: /webmaster_logs
Disallow: /virtual
Disallow: /shockwave
Disallow: /TRANSCRIPTS
Disallow: /newscenter
Disallow: /virtual
Disallow: /DIGEST
Disallow: /QUICKNEWS
Disallow: /SEARCH
Disallow: /alt_index.html
Το Robots Exclusion Protocol είναι πολύ απλό στη χρήση του και δεν περιέχει τίποτε άλλο πέρα απ' όσα αναφέρθηκαν παραπάνω. Πληροφοριακά πάντως αναφέρουμε ότι αν επιθυμούμε να απαγορεύσουμε την είσοδο σε όλα τα bots εκτός από κάποιο (π.χ. τον WebCrawler), τότε η σύνταξη του robots.txt είναι:
User-agent: WebCrawler
Disallow:
User-agent: *
Disallow: /
Αντίστροφα, αν θέλουμε να απαγορεύσουμε την είσοδο μόνο σε ένα bot (π.χ. τον WebCrawler) και να την επιτρέψουμε σε όλα τα υπόλοιπα, τότε η σύνταξη του robots.txt θα είναι απλώς:
User-agent: WebCrawler
Disallow: /
Λόγοι αποκλεισμού ενός bot
Συνήθως, οι διαχειριστές ενός web site επιθυμούν την αύξηση της δημοτικότητάς του και ενθαρρύνουν τα bots να το παρακολουθούν. Υπάρχουν όμως και ορισμένες εξαιρέσεις όπως:
Υπερβολικός φόρτος - Είναι πιθανό (αν και όχι πολύ συνηθισμένο) κάποια bots να φορτώνουν τόσο πολύ έναν web server ώστε να κριθεί απαραίτητος ο αποκλεισμός τους.
Αποκλεισμός του cgi-bin directory - Στο directory αυτό βρίσκονται συνήθως τα εκτελέσιμα προγράμματα που συνοδεύουν ένα web site. Επειδή δεν μπορούμε να είμαστε βέβαιοι για τον τρόπο αντίδρασης κάθε ενός από αυτά τα προγράμματα στα requests των bots καλό είναι να τα αποκλείουμε (άλλωστε εκεί δεν υπάρχει τίποτε να καταχωρήσουν).
Αποκλεισμός ενός ανταγωνιστή - Μια εταιρεία θα μπορούσε να χρησιμοποιεί ένα bot για να παρακολουθεί το web site κάποιας ανταγωνίστριάς της. Το robots.txt "απαγορεύει" (έστω και μόνο σε ηθικό επίπεδο) κάτι τέτοιο. (Πιθανότητα στο μέλλον οι ρυθμίσεις του robots.txt να αποκτήσουν και στη χώρα μας νομική ισχύ όπως συμβαίνει ήδη στις ΗΠΑ.)
Διατήρηση ανόθευτων των στατιστικών δημοτικότητας μιας σελίδας - Αν ένα bot καλεί συχνά μια σελίδα με διαφημίσεις ή φορτώνει κάποιο banner, τότε τα στατιστικά στοιχεία δημοτικότητας αυτού του αρχείου παύουν να είναι αντιπροσωπευτικά (καταγράφουν requests που δεν ανταποκρίνονται σε πραγματικούς επισκέπτες).
Απόκρυψη κάποιων στοιχείων - Για παράδειγμα, το CNN απαγορεύει την πρόσβαση στο directory webmaster_logs το οποίο, όπως μας δείχνει το όνομά του, μάλλον περιέχει στατιστικά στοιχεία. Φυσικά, η πρόσβαση εκεί θα μπορούσε να εμποδιστεί και με άλλους τρόπους, αλλά ίσως αυτό να μην είναι εφικτό. (Π.χ. μπορεί να απαγορεύεται η πρόσβαση στα bots, αλλά να επιτρέπεται στους πελάτες να παρακολουθούν την εξέλιξη των διαφημιστικών εκστρατειών τους.)
Αποφυγή αρχειοθέτησης - Σε όλο και περισσότερες χώρες του κόσμου τα ηλεκτρονικά δεδομένα (email, web σελίδες κ.λπ.) χρησιμοποιούνται συχνά ως αποδεικτικά στοιχεία από τη δικαιοσύνη. Για να αποφύγουν λοιπόν τις ευθύνες που μπορεί να απορρέουν από κάποια παλιά ενέργειά τους, αρκετές εταιρείες φροντίζουν να διαγράφουν όσα δεδομένα δεν τους είναι πλέον απαραίτητα. Έτσι, για προληπτικούς λόγους απαγορεύουν την τήρηση αντιγράφων αυτών των αρχείων από τρίτους.
Αποκλεισμός προσωρινών αρχείων - Μια web σελίδα η οποία περιγράφει μια ειδική προσφορά ή μια έκπτωση που όμως ισχύει μόνο για λίγες ημέρες μπορεί να βρίσκεται για πολλές εβδομάδες (ή ίσως και για πάντα) καταχωρημένη σε κάποια μηχανή αναζήτησης, αποπροσανατολίζοντας το κοινό το οποία θα ζητά κάτι που δεν ισχύει πλέον.
Διευκόλυνση του bot - Κανένα bot δεν είναι τέλειο και υπάρχουν τύποι αρχείων ή δομές directory που θα "τρέλαιναν" ακόμη και το καλύτερα σχεδιασμένο πρόγραμμα. Για να αποφευχθούν λοιπόν διάφορα τεχνικά προβλήματα, κάποια μέρη ενός site είναι προτιμότερο να τίθενται εκτός του πεδίου δράσεως ενός bot.
Τέλος, αξίζει να σημειωθεί ότι το robots.txt μπορεί να γίνει ακόμη και πεδίο αντιπαράθεσης ανάμεσα σε έναν πελάτη web hosting και το provider του. Πολλοί providers απαγορεύουν όλα τα bots για να μειώσουν την κατανάλωση bandwidth, ενώ οι πελάτες τους τα επιδιώκουν για να εξασφαλίσουν την καταχώρησή τους σε μηχανές αναζήτησης ή για άλλους λόγους. Αν λοιπόν διαθέτετε site το οποίο φιλοξενείται με virtual hosting, καλύτερα να ελέγξετε αν υπάρχει το αρχείο αυτό και ποιες είναι οι ρυθμίσεις του. Για να το επιτύχετε αυτό δώστε απλώς το όνομα του site και το όνομα του αρχείου (π.χ. http://www.eeei.gr/robots.txt). Αν λάβετε το μήνυμα The page cannot be found, τότε το αρχείο αυτό δεν υπάρχει.
Θα ολοκληρώσω αυτό το άρθρο με μια προσθήκη που έκανε μετά την έκδοσή του ο αναγνώστης, φίλος και βαθύς γνώστης του δικτύου κ. Χρήστος Γεωργακόπουλος:
Τα URL που απαγορεύει το robots.txt προσφέρουν πολύ χρήσιμες πληροφορίες στους hackers και γι' αυτό πρέπει να είναι πολύ προσεκτικοί οι administrators όσων sites περιέχουν ευαίσθητα δεδομένα. Για παράδειγμα, φανταστείτε τον hacker που ψάχνει απεγνωσμένα πού είναι κρυμμένη η βάση δεδομένων του site. Αν διαβάσει το robots.txt και δει την εγγραφή /passwordsdatabase (απαγορεύουμε πρόσβαση των bots στο συγκεκριμένο directory), τότε θα μάθει αμέσως πού ακριβώς πρέπει να επιτεθεί.
Γιώργος Επιτήδειος
Επιστροφή στο Αρχείο ’ρθρων Παλαιών Τευχών Επιστροφή στις Επιχειρηματικές Σελίδες © 2005 Γιώργος Επιτήδειος Υποδείξεις, Ερωτήσεις, Σχόλια στην διεύθυνση gepiti@gepiti.com |