Gli spider non “seguono” davvero i link: un equivoco su follow e nofollow

Cavolfiore

Pur non avendo svolto alcuna valutazione dei lettori abituali di questo blog, sono indotto a credere che una loro buona percentuale sia composta da professionisti del settore con una certa esperienza sulle spalle.

Le precisazioni pubblicate nel presente articolo riguardo il concetto di “following” dei link risulterà forse un po’ banale a coloro che hanno ben chiaro come funzioni il crawling del web da parte di un motore di ricerca.

Ciononostante più di una volta mi è capitato di imbattermi in malintesi di fondo su che cosa significhi “following” e, di conseguenza, quale sia il significato e la funzione delle direttive “follow” e “nofollow”.

In un paio di occasioni il malinteso ha prodotto anche effetti negativi concreti e quindi ho pensato che ci stesse bene un breve articolo di chiarimento su questo tema.

La genesi

La motivazione a scrivere questo post è stata prevalentemente quella di aver osservato diversi episodi in cui a qualcuno è venuta l’idea di “impedire a Google di seguire backlink provenienti da siti web sgraditi al sito di destinazione”.

La logica dietro tale idea è che lo spider sia indotto ad ignorare un backlink sgradito nel momento in cui, seguendo quel backlink, si trovi di fronte ad uno status HTTP “forbidden” erogato dal sito di destinazione.

L’intero ragionamento avrebbe delle pecche logiche anche nel caso in cui gli spider dei motori seguissero effettivamente i link sul web, un po’ come fanno gli utenti che cliccano i link sui siti.

Il punto centrale della questione è che gli spider non “seguono” affatto i link e che l’intero processo di crawling del web avviene attraverso un metodo del tutto diverso. E’ dunque necessario sfatare il mito del “following”.

La cultura SEO tra cavoli e cicogne

Una critica che mi è capitato di muovere ai responsabili dei motori di ricerca che si occupano di comunicazione nei confronti di webmaster e SEO è quella che le spiegazioni sul funzionamento del motore vengono date facendo spesso uso di eccessive semplificazioni.

La scelta di semplificare molto i concetti e di allontanarsi dalle spiegazioni tecniche permette di allargare la base di utenti in grado di comprendere le nozioni principali ma purtroppo crea uno sgradito effetto collaterale: i professionisti che sono destinati a crescere nel settore della SEO partono con un identikit del motore di ricerca composto da allegorie, metafore ed esemplificazioni che nulla dicono di ciò che un motore realmente fa.

E’ un po’ come se dei trentenni fossero ancora convinti che i bambini vengano portati dalle cicogne o crescano sotto i cavoli. Non voletemene, ma è purtroppo evidente che molte persone interessate ad avere informazioni sul funzionamento dei motori vengano trattati dai responsabili dei motori stessi come dei fanciulli un po’ tardi e innocenti, da proteggere a tutti i costi dallo stress mentale che accuserebbero se venissero messi di fronte alla fredda realtà tecnica delle cose.

Insomma, oggi ci sono persone che credono che gli spider “seguano” i link perché per veicolare più facilmente il concetto di “spider” è stato deciso di umanizzare un software di crawling attribuendogli metodi di perlustrazione del web analoghi a quelli seguiti dagli esseri umani. Non c’è quindi da stupirsi se in giro c’è un po’ di confusione.

La cruda realtà

Tenetevi forte: i bambini vengono a questo mondo a seguito di un processo chiamato “riproduzione sessuata”. I dettagli non li do, perché sono un po’ scabrosi.

Come se questa prima dirompente rivelazione non fosse già di per sé sufficiente a sradicare violentemente ogni vostra convinzione sul genere umano, aggiungo anche che gli spider dei motori si limitano in realtà a richiedere le risorse sul web estraendole da un gigantesco elenco di URL da scaricare.

Quando uno spider visita una pagina web, estrae da essa gli URL delle risorse linkata dai link nella pagina e li aggiunge (se non li conosceva prima di quel momento) ad un elenco di URL condiviso con altri spider.

Un primo punto da chiarire è che, a differenza di un umano, uno spider non ha un’esigenza immediata a richiedere un URL appena scoperto. Se una persona clicca un link è perché desidera visitare subito la risorsa linkata ma uno spider ha obiettivi diversi nei confronti delle risorse e quindi la richiesta di una risorsa può avvenire anche dopo diverso tempo dalla scoperta del link in cui veniva citata.

Un secondo ed essenziale punto da smarcare è che non sempre è conveniente che una risorsa appena scoperta attraverso un link venga richiesta dallo stesso spider che l’ha individuata. Al contrario, nella logica di crawling distribuito che tutti i motori di ricerca impiegano, l’esercito di spider che si dividono il compito di scaricare risorse dal web viene organizzato in modo che il lavoro sia suddiviso per ridurre il più possibile i tempi ed i costi.

Per esempio, i software di crawling possono essere installati su computer dislocati in punti diversi del pianeta e le richieste di URL possono essere smistate cercando di minimizzare la distanza geografica tra uno spider e la presunta localizzazione geografica del server che ospita la risorsa da scaricare.

Di conseguenza se uno spider dislocato geograficamente in Europa trova un link ad una risorsa presumibilmente ospitata su un server dall’altro capo del pianeta, invece di effettuarne esso stesso la richiesta può limitarsi ad aggiungere l’URL ad un elenco condiviso di richieste da effettuare, che potranno poi essere prese in carico da spider geograficamente più vicini alle risorse da scaricare.

Non tutti i motori di ricerca si comportano in questo modo e la progettazione di un sistema di crawling distribuito è una delle attività più complesse studiate e portate avanti dalla disciplina dell’information retrieval. Anche se le implementazioni sono svariate, tuttavia, la filosofia di distribuzione di carichi e compiti sta alla base di tutti i più sofisticati sistemi di crawling e questo implica che per gli spider non è conveniente “seguire” il link ad una risorsa appena scoperta. Quindi, il fenomeno del “seguire un link” non esiste.

I danni dell’equivoco

La precisazione sul modo in cui gli spider perlustrano il web potrebbe terminare qua se non fosse che nel corso del tempo ho osservato diverse persone implementare regole sui propri server sulla base dell’equivoco.

Questi episodi mi permettono di illustrare una inevitabile conseguenza del fatto che gli spider in realtà non seguono affatto i link, ovvero che non dichiarano (quasi) mai un Referer, cioè l’intestazione di richiesta HTTP adibita a contenere l’URL di una eventuale risorsa di provenienza.

Chi credeva erroneamente che gli spider dei motori seguissero effettivamente specifici link, da una risorsa all’altra, era per conseguenza indotto anche a credere che gli spider presentassero un’intestazione Referer, dichiarando esplicitamente la pagina su cui era presente il link seguito.

Con questa convinzione in animo, ho visto casi in cui alcuni web server erano stati configurati per erogare uno statust HTTP di tipo Forbidden (codice 403) agli spider che dichiaravano la provenienza da specifici URL o siti, con l’obiettivo di far ignorare al motore di ricerca degli specifici backlink.

E’ difficile enumerare con lucidità la quantità di motivi per i quali la suddetta logica è, purtroppo, fallata. Quand’anche gli spider dei motori fossero progettati per seguire i link e quand’anche essi dichiarassero la risorsa di provenienza attraverso l’intestazione Referer, non ci sarebbe ragione di credere che vietando (Forbidden) agli spider di accedere alla risorsa si otterrebbe un effetto positivo.

Presentare agli spider uno status Forbidden su una specifica risorsa, indurrebbe semplicemente il motore di ricerca e de-indicizzare la risorsa stessa, visto che nessun motore vorrebbe includere nelle SERP una risorsa di cui è proibito l’accesso.

Non sarebbe logica nemmeno un’eventuale obiezione che lo status Forbidden sarebbe stato erogato allo spider solo condizionalmente, ovvero solo se lo spider avesse presentato come Referer l’URL di una risorsa linkante indesiderata. Il problema con questo ragionamento è che non tiene conto di una delle caratteristiche principali del protocollo HTTP, ovvero che è un protocollo stateless.

Stateless significa che il protocollo HTTP non possiede il concetto di sessione (un meccanismo per portarsi dietro un contesto comune durante richieste differenti) e che ogni richiesta fa dunque storia a sé.

Come conseguenza, un eventuale status Forbidden erogato da un server dichiarerebbe allo spider una caratteristica della risorsa richiesta (cioè che non è possibile accedervi), non una caratteristica della relazione tra la risorsa ed un’altra che la linka!

Tornando alle conseguenze negative dell’implementazione di un filtro lato server come quello sopra descritto, si può concludere che per fortuna esso si limita ad appesantire un minimo il server, visto che lo status Forbidden verrebbe erogato solo nel caso in cui gli spider presentino un Referer, cosa che non avviene (quasi) mai.

Intermezzo videoludico

Tempo fa avevo creato una breve presentazione proprio sul tema discusso in questo articolo. Era in inglese e l’ho tradotta in italiano, mi è parsa un buon riassunto. Buona visione.

Ma allora che significa follow/nofollow?

Mappa di Internet

Una mappa del web. Fonte: OPTE Project (http://www.opte.org/maps/)

Stabilito che gli spider non seguono realmente i link è legittimo chiedersi allora che cosa cavolo significhi l’espressione “following” e, nel dettaglio delle due direttive previste dal Robots Exclusion Standard, quale sia il vero significato di “follow” e “nofollow”.

Vado subito al sodo. La direttiva “follow“, che rappresenta il comportamento di default degli spider e che pertanto è del tutto superflua quando viene inserita esplicitamente in un meta tag ROBOTS, chiede allo spider: “aggiungi tutti i link presenti in questa pagina al link graph”.

Di contro, la direttiva “nofollow” chiede allo spider: “non aggiungere questo/i link al link graph”.

Il link graph è semplicemente la mastodontica mappa di link tra le risorse del web che il motore di ricerca si è costruito durante le proprie perlustrazioni. Quando uno spider individua un nuovo link tra due risorse, fa in modo che nel link graph venga memorizzata l’esistenza di quel collegamento da una risorsa all’altra. Se il webmaster ha dichiarato quello specifico link come “nofollow” allora la memorizzazione di quel collegamento non avviene ed il link graph non viene modificato.

Tutto ciò, come vedete, non è poi così difficile da spiegare o da comprendere. Avrei fatto più fatica a spiegare la riproduzione sessuata.

Link di approfondimento

Distributed web crawling
On the Feasibility of Geographically Distributed Web Crawling [PDF]
Stateless protocol
Riproduzione sessuata

P.S.
Pensavo che sarebbe interessante parlare di argomenti simili in qualche evento. Giusto per dire.

11 Responses to Gli spider non “seguono” davvero i link: un equivoco su follow e nofollow

  1. dofollow scrive il 9 May 2013 at 09:56

    sarebbe interessante capire se un tag nofollow fa ‘disperdere’ PR.
    Mi spiego. Abbiamo un web composto da 4 pagine. Una home che linka 3 pagine di cui una in nofollow. Ognuna di queste pagine avrà un certo PR, tranne in quella in nofollow.
    La domanda è. Se non ci fosse nessun link alla pagina nofollow dalla home, le altre pagine (ne sono rimaste due) avrebbero lo stesso PR dell’esempio precedente, o più alto?
    Ciao

    • LowLevel scrive il 9 May 2013 at 10:17

      @dofollow: la quantità di PageRank di una pagina viene sempre divisa per il numero complessivo di link che contiene, a prescindere che essi siano dofollow o nofollow. Quindi un link nofollow non viene aggiunto al link graph ma viene comunque conteggiato quando Google deve decidere come fare la divisione.

      In passato la divisione veniva effettuata diversamente (venivano considerati solo i link dofollow) ma dal 2008 le cose sono cambiate nel modo che ho descritto. Approfondimento: PageRank sculpting.

  2. Pasquale Altamura (@blaysworld) scrive il 9 May 2013 at 10:19

    Ottimo articolo, ma questa non è una novità!
    Vorrei solo che mi precisassi se questa procedura di crawling è identica sia che si tratti di link che portano verso l’esterno del dominio sia che si tratti di link interni oppure no.
    Grazie.

    • LowLevel scrive il 9 May 2013 at 16:47

      @Pasquale: non esiste documentazione in merito alle effettive differenze di crawling tra risorse di uno stesso sito e risorse esterne, perché nessun motore di ricerca ha pubblicato le reali implementazioni delle proprie tecniche di spiderizzazione.

      Quello che si sa è che i software di crawling possono essere raggruppati in “squadre” aventi caratteristiche comuni, per esempio l’appartenenza agli stessi server. Pertanto in presenza di un fenomeno come un deep crawl di un sito è plausibile che le attività di crawling vengano mantenute internamente alla “squadra” per evitare inutili prese in carico da parte di spider più distanti dal sito da perlustrare.

      Questa è la teoria che emerge da alcune paper sul crawling distribuito, poi ogni motore fa storia a sé.

  3. Pietro scrive il 9 May 2013 at 10:24

    :-) ottimo approfondimento, ahahahah bellissimo l’ultimo link.

    Teoricamente, dato che il pagerank è una formula matematica, se io linko 3 siti, ma solo due dofollow, non sto scomponendo per 3 ma per 2, proprio perché non aggiungo il nofollow in coda alla mappa di link. Nel calcolo vanno comunque inseriti gli eventuali link presenti nelle pagine linkate dalla home.

    • LowLevel scrive il 9 May 2013 at 16:56

      @Pietro: in realtà nel caso di Google la divisione del PageRank avviene per tre, anche se uno dei tre link è nofollow. In un commento precedente ho fornito qualche dettaglio in più. Questo implica che Google mantiene comunque da parte un conteggio complessivo dei link di ciascuna pagina.

      La ragione per la quale è più corretto dividere per tre e non per due è legata all’obiettivo per il quale la formula del PageRank è stata creata: calcolare un indice di probabilità che una risorsa venga visitata dagli utenti.

      Se tieni per buono l’obiettivo, è palese che aggiungere un attributo “nofollow” ad un link non modifica in nessun modo la probabilità che l’utente possa cliccarlo o possa cliccare gli altri link sulla pagina, perché il link rimane comunque visibile sulla pagina. In altre parole, la distribuzione dei click sui link della pagina non cambia.

      Questa è la ragione per la quale Google ha deciso di non inserire i link nofollow nel link graph ma di dividere comunque il PageRank per la quantità totale dei link presenti su una pagina.

  4. Giuseppe Pastore scrive il 9 May 2013 at 11:17

    Sempre bene ripassare queste cose :)

    Soprattutto dopo Penguin, con gli status code si sono viste le peggio cose per disconoscere i link :-/

  5. Stefano Zanardi scrive il 9 May 2013 at 11:57

    Complimenti per la carrellata di ottimi articoli degli ultimi giorni.:!

    Hai scritto che “gli spider […] non dichiarano (quasi) mai un Referer”. Potresti approfondire quel “quasi”?

    Thx

    • LowLevel scrive il 9 May 2013 at 17:06

      @Stefano: per esempio a volte Googlebot scarica file JavaScript, CSS o di immagini presentando come Referer l’URL di una pagina web del sito.

  6. Enrico scrive il 16 May 2013 at 07:50

    Ciao Enrico,
    Giusto per chiarire e comprendere meglio anche il commento dii Giuseppe, perche’ mandare una pagina che viene linkata da una risorsa di bassa qualita’ in 410 ( per tentare di contrastare penguin) non ha senso?
    Io pensavo che se la pagina va in 410 il link non viene aggiunto al graph e la penalizzazione eventuale non viene passata…grazie!

    • LowLevel scrive il 17 May 2013 at 07:38

      @Enrico: lascio il testimone a Giuseppe, nel caso in cui voglia specificare a quale utilizzo di status code faceva riferimento. :)

      Riguardo i 410 (o altri status di classe 4XX) vale la pena di specificare che è una buona soluzione solo a patto che si sia disposti a far rimuovere la risorsa dall’indice e dal link graph tutti i link che puntavano ad essa, compresi i link potenzialmente di qualità.

      L’errore che ho citato nell’articolo, infatti, consiste solo nel fatto che alcune persone hanno creduto di poter usare status di classe 4XX in modo condizionale, basandosi sull’intestazione Referer, nella convinzione di poter indurre Google a rimuovere dal grafo solo alcuni dei link che puntavano alla risorsa.

      Questo ovviamente non è possibile, perché lo status 4XX erogato dal server non fornisce un’informazione sui link che puntano alla risorsa ma solo un’informazione sulla risorsa stessa: se la risorsa non esiste più, tutti i link che puntano ad essa verranno rimossi dal grafo.

Lascia un commento

More in Just SEO
Quelli che… “Googlebot non rispetta il robots.txt”

Se avessi ricevuto un euro per tutte le volte che ho sentito un SEO dire "Google non rispetta il robots.txt"...

Close