Kuinka estää hakukonetta löytämästä minua?

Internetin tietomassaa käyvät jatkuvasti läpi hakurobotit, jotka indeksoivat tietoa löytämistään sivuista omiin tietokantoihinsa. Kantojen käytöt voivat olla varsin moninaisia, alkaen aina kielitieteellisestä tutkimuksesta ja jatkuen julkisiin megahakukoneisiin. Myös käyttäjän yksityiset hakujen apuvälineet, "agentit", toimivat usein tässä mielessä robotteina.

Yleensä hakukoneen visiitti on sivuston tekijälle positiivinen asia, tarkoittaahan se näkyvyyttä palvelussa. Näin ei kaikissa tapauksissa kuitenkaan ole. Kuvitellaanpa, että esimerkiksi luomallasi sivustolla on äänestys, jota käytetään klikkaamalla jompaa kumpaa kahdesta sivulla olevasta linkistä. Web-robotti ei tätä tietenkään aavista, vaan "klikkaa" molempia - ja siis vääristää äänestyksesi tuloksia! Saman voi tehdä useakin hakurobotti yhden päivän aikana, joten täysin merkityksettömästä asiasta ei ole kysymys.

Toisaalta myöskään jokaisen sivun näkyminen hakutuloksissa ei välttämättä ole tarkoituksenmukaista. Virhesivut, tilauslomakkeet ja monet muut vastaavat tilapäissivut eivät ole yleensä haluttua tulosmateriaalia kenellekään. Ongelmia syntyy myös dynaamisista sivurakenteista, joissa esim. CGI- tai ASP-koodille välitetään URL-kentässä numeerista tietoa. Tällöin voi syntyä lähes äärettömiä linkkipuita, joiden läpiselaaminen kuluttaa turhaan sekä hakukoneen että WWW-palvelimen resursseja.

Robot Exclusion Standard

Kesällä 1994 Internetin hakurobottien tekijät sopivat keskenään protokollasta, jonka avulla WWW-sivustojen tekijät pystyisivät rajaamaan sivustojensa näkyvyyttä roboteille. Syntyi Robot Exclusion Standard, yhteinen sopimus robots.txt-nimisestä merkkitiedostosta. "Standardi" on vain käytännön sopimus silloisten tekijöiden välillä: mikään taho ei pakota robotin ohjelmoijaa sitä noudattamaan tai kunnioittamaan. Tosiasiallisesti kuitenkin varsin monet robotit näin tekevät.

Systeemin ytimenä oleva robots.txt-tiedosto sijoitetaan WWW-palvelimen juureen - siis esimerkiksi osoitteeseen www.yahoo.com/robots.txt. Tämä rajoittaa tekniikan käytettävyyttä melkoisesti, sillä yksittäisellä, ISP:n kotisivutilaan sivujaan rakentavalla henkilöllä harvoin on pääsyä palvelimen juurihakemistoon. Teoriassa ISP voisi kyllä tarjota mahdollisuuden päivittää robots.txt:tä turvallisesti siten, että kaikkien käyttäjien määritykset koottaisiin yhteen, mutta tätä ei tietääkseni Suomessa mikään palveluntarjoaja vielä tue (jos tiedät jonkun joka tukee, lähetä postia).

robots.txt:n rakenne

Tiedoston nimeämisessä on oltava tarkkana: nimi on täsmälleen robots.txt, pienellä kirjoitettuna. Itse formaatti on yksinkertainen, ja tiedoston voikin luoda millä tahansa tekstieditorilla. Robots.txt koostuu tietueista, joista jokainen kieltää jo(i)tain hakukonetta (hakukoneita) käsittelemästä jotain sivun osaa. Jokainen tietue koostuu User-agent- ja Disallow-määreistä, ja tietueiden välissä on aina vähintään yksi tyhjä rivi. Rivierottimeksi hyväksytään sekä Unix- että Windows-mallin rivinvaihdot. Tiedostoon voi lisätä kommentteja liittämällä niihin risuaidan (#) eteen.

User-agent-määre ilmaisee, mitä hakurobotteja tietueen sulkumääritykset koskevat. Disallow-määre puolestaan ilmaisee ne hakemistopolut, joista robotin ei tulisi tietoa hakea. Molempia rivejä voi olla useampia per tietue. Tiedosto rakentuu käytännössä seuraavanlaisesti:

# Kiellä Googlea indeksoimasta virheet-hakemistoa
User-agent: googlebot
Disallow: /virheet/

# Infoseekin hakukone tai Northern Lightin Gulliver ei ole alkuunkaan tervetullut
User-agent: infoseek
User-agent: gulliver
Disallow: /	

# Loput hakukoneet saavat tehdä mitä vain
User-agent: *
Disallow:

Huomaa, että Disallow-otsake määrittelee suljettavan URL-polun alkuosan. Sulkemalla polun /virheet suljettaisiin siis myös /virheet.html, mutta sulku /virheet/ peittää vain virheet-hakemiston alaiset tiedostot. Disallow-määreessä ei voi käyttää tähteä korvausmerkkinä, joten /tmp/*html-tyyppiset rakenteet eivät toimi.

User-agent: * -otsaketta voidaan käyttää myös ennen tarkempia määreitä, esimerkiksi seuraavasti:

# Kiellä hakukoneita tutustumasta /lomakkeet-hakemistoon
User-agent: *
Disallow: /lomakkeet/

# Poikkeuksena oma hakukoneemme, joka osaa indeksoida nekin
User-agent: omahakukone
Disallow:

Eri hakukoneet käyttävät erilaisia hakukonetunnuksia (User-agent-kentän sisältö). En ole vielä löytänyt verkosta täysin kattavaa listaa näistä - tokkopa sellaista onkaan? - mutta aika lähelle pääsee Webcrawlerin sivuilla ylläpidetty Database of Web robots. Sieltä löytyvät tiedot yli 250 hakukoneesta, ja niiden käyttämät User-agent-tunnisteet löytyvät kunkin robotin tietosivulta, Identifier-kentästä.

META-tageihin pohjautuva robottien kieltäminen

Tekstitiedostoon pohjautuvien robottirajoitusten suurin ongelma on se, että niitä voi tehokkaasti käyttää vain sellainen henkilö, joka voi käsitellä WWW-palvelimen juurta - tärkeää on muistaa, ettei robots.txt:llä ole mitään vaikutusta, jos sen tekee johonkin alihakemistoon: esimerkiksi mikrobitti.fi/~jth/robots.txt ei kiinnosta ketään.

Jonkinasteinen ratkaisu näihin ongelmiin on itse HTML-sivuihin liitettävä ROBOTS-metatagi, joka ohjaa robottien toimintaa. Jos metatagien olemus yleensä ottaen ei vielä ole selvä, kannattaa tutustua niitä käsittelevään HTML-standardin osaan.

Sivun HEAD-osaan sijoitettavalla META ROBOTS -tagilla on mahdollista ohjata hakurobottien toimintaa. Toukokuussa 1996 kokoontuneen W3C:n Indexing Workshopin muistiinpanoissa määritellään tagille neljä eri tilaa: ALL vastaa oletusarvoista tilaa, eli robotit voivat vapaasti indeksoida sivun ja sen linkit. NOINDEX estää hakukonetta indeksoimasta tätä yksittäistä sivua, mutta ei kiellä sivulla olevien linkkien seuraamista (ja mahdollisesti niiden sisällön indeksoimista). NOFOLLOW jättää itse sivun indeksoitavaksi, mutta kieltää seuraamasta sivulla olevia linkkejä. NONE tarkoittaa NOINDEXin ja NOFOLLOWin yhdistelmää.

Tagi upotetaan HTML-sivuun seuraavasti:

<HTML>
<HEAD>
   <TITLE>Esimerkkisivu</TITLE>
   <META NAME="ROBOTS" CONTENT="NOINDEX">
</HEAD>
<BODY>
   Tässä on sisältöä, jota ei indeksoida.
</BODY>
</HTML>

META ROBOTS -tagilla ei määritelmänsä mukaan ole tarkoituskaan pystyä määrittelemään hakukoneiden käytöstä robottikohtaisesti kuten robots.txt:n tietueiden User-agent-kentällä. Tällaista ratkaisuakin on tosin nähty: esimerkiksi Google hyväksyy ROBOTS-tagin tilalla myös GOOGLEBOT-nimisen metatagin. Lisäksi Google ymmärtää tagille myös NOARCHIVE-määreen, jolloin sivua ei tallenneta hakukoneen omaan välimuistiin. Lisätietoja Googlen hakukoneen toimintaperiaatteista löydät Googlen bottisivulta.

Myös META-tageista on syytä muistaa, ettei tätäkään "standardia" valvo kukaan: hakukoneen ei ole mikään pakko noudattaa rajoituksia. Yleensä tosin hakukoneiden tekijät mielellään kuuntelevat saittien tekijöiden näkemyksiä näiden tagien ja robots.txt:n välityksellä, sillä tietokantaan eksyvät täysin turhat sivut eivät hyödytä ketään.

Kun META-määreitä ja robots.txt:n tietueita alkaa olemaan riittävän runsaasti, voi kokonaiskäsityksen säilyttäminen osoittautua vaikeaksi. Yksi kätevä Windows-apuväline on Rietta Solutionsin RoboGen-ohjelma, joka luo tarvittavat tagit ja estotiedostot. Ohjelma osaa myös lähettää luomansa tiedostot paikalleen FTP:llä.

Jouni Heikniemi
13.4.2001, päivitetty 30.3.2002

Tämä dokumentti kuuluu sivujeni osioon
Kirjalliset tuotokset / Tietotekniikka.