Da qualche settimana sto disperatamente cercando di fare un test SEO per verificare il comportamento di googlebot con diversi tipologie di link e di non-link, ovvero link scritti in formato non canonico.
Il test l’ho fatto su un dominio praticamente vergine, in preparazione al corso seo di marzo che tengo con lo Studio. Test banale: una decina di pagine più o meno linkate, con una parola chiave “inedita” alle serp come sentinella. [Link] solo dalla root verso le landing page. Nessun altra struttura di collegamenti. Inoltre, le pagine di destinazione sono rimaste assolumatemente vergini anche alla navigazione: messe online, mai fatto un accesso e i log ce lo confermano.
Purtroppo (per fortuna!!!) per una serie di eventi errati (mancato isolamento delle variabili) il test ancora non è finito e ancora non è andato a buon fine, ma in questa fase transitoria sono nate due interessanti cose:
- se fate test sulle pagine non usate Chrome che è uno spione e probabilmente il bot lo usa come unofficial crawler allo stesso modo in cui lo usa per trarne dati sulla velocità di una pagina e del suo processo di loading (vedi risposta di FilTro)
- Google indicizza ma non legge: questa è cosa curiosa
Google indicizza ma non legge
Non sono ubriaco, almeno per ora, ma è quanto è successo. Durante il test (dopo la pubblicazione e dopo il primo passaggio del bot) nel sito qualcuno fuori dal mio controllo (mi tiro le orecchie da solo) ha inserito un robots.txt con un bel Disallow:/ (in realtà è stata una generazione dinamica dovuta ad un settaggio di un wordpress in privacy…)
Il test è molto semplice: c’è una decina di forme diverse di link e non link e – in ogni pagina – c’era un banale logger in php che registra su un file di testo le informazioni: ip, referral, agent, … insomma un log personale tanto per non dover disturbare i log di apache.
Dopo qualche settimana (non sapevo del robots) mi accorgo che il bot è passato solo nella root del test (alla quale avevo regalato un paio di buoni link) e nel link tradizionale, uno standard <a href=””>. Corretto: poi è arrivato il robots.txt con il disallow.
Una cosa è fondamentale: il bot è passato solamente due volte nel sito, quando il robots non c’era. Poi non è più passato: il risultato che potete vedere sotto è frutto della prima scansione e degli unici 2 record del googlebot presenti nel log!
21/01/13 18:06:10 66.249.73.196 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) www.***.it/***/ NoReferer 21/01/13 18:15:28 66.249.73.196 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) www.***.it/***/***.php NoReferer
Ovviamente il bot (ovviamente equivale ad una bella conferma!!!) non è entrato in alcuna delle pagine linkate e inibite dal robots, ma la cosa interessante è un’altra:
Quindi…
Dove è passato Cosa il robots ha visto (il title è generato usando dominio e anchor text):
- root: linkata esternamente e crawlata prima del disallow (infatti ha anche il meta description)
- esempio 2: link href follow (prima del disallow)
- esempio 4: span con onclick=”document.location=’***’;”
- esempio 6: span con onclick=”function(***)” (la function fa un document.location)
- esempio 1: solo url scritta in modo completo nel html (no tag)
- esempio 3: link href con dentro javascript:document.location=’***’ follow
- esempio 5: link href con dentro javascript:function(***); follow
Dove non è passato:
- esempio 7: link href con nofollow
- esempio 8: link href con javascript:document.location e nofollow
- esempio 9: link href con javascript:funzione (location) e nofollow
A voi le conclusioni… adesso intanto vedo di liberare il bot dal robots.txt. Quello che dico io è che Google oramai vede qualsiasi forma di cosa che possa assomigliare ad un link. L’unica cosa che ancora rispetta è il nofollow!
Dopo qualche settimana…
E’ passata qualche settimana: ecco i risultati di scansione del bot. Avendo fatto due test simili, su stesso dominio, anche se con path diverso, Google sembra annoiato, però un paio di conclusioni si possono tirare. Una sicuramente è: il nofollow funziona a dovere. L’altra è che il robots.txt bisogna usarlo sempre con molta attenzione e che non serve per deindicizzare. Infine: il javascript non tutela che Google non passi!
Pagina | Tipologia Link | Googlebot | Gmobile
(samsung) |
Gmobile | Index |
home page | — | si | si | si | si |
esempio1.php | URL | no | si | si | si |
esempio2.php | link normale | si | si | si | si (sec) |
esempio3.php | document.location | no | si | si | si (sec) |
esempio4.php | onclick: document.location | no | si | si | si (sec) |
esempio5.php | funzione che richiama document.location | no | si | si | si (sec) |
esempio6.php | onclick: funzione che richiama document.location | no | si | si | si (sec) |
esempio7.php | link normale, nofollow | no | no | no | no |
esempio8.php | document.location, nofollow | no | no | no | no |
esempio9.php | funzione che richiama document.location, nofollow | no | no | no | no |
ps: un ringraziamento particolare a Marcio (Paul) per la pazienza e il lavoro sporco!
Non vedo cosa ci sia di strano. Avendo tu o chi per te bloccato il sito dalla lettura hai esplicitamente chiesto al motore di ricerca di turno di evitare che tali pagine venissero di fatto restituite organicamente.
Di qui l’esclusione in prima battuta di queste pagine dalla serp primaria e l’oscuramento dello snippet con relativo dito puntato contro il robots.
Mi pare che le linee guida siano molto chiare al riguardo.
http://support.google.com/webmasters/bin/answer.py?hl=it&answer=156449
Quanto alla lettura ed esecuzione del codice javascript, anche qua da tempo e’ risaputo che Google e’ in grado di andare oltre il semplice codice ed interpretare un eventuale link. Il fatto che il nofollow sia rispettato, anche in tale situazione e’ quindi buona cosa in tutti i sensi.
Grazie comunque per il tempo speso per mettere assieme l’articolo.
Concordo con te: la cosa particolare è che quelle pagine le ha indicizzate (o quasi indicizzate) senza entrarvi. Non mi sembra una banalità.
Per quanto riguarda JS era tacito (avevo fatto io stesso dei test) che eseguisse codice asincrono, portandolo a tempo zero. Non ero così convinto seguisse anche i link “location js”.
In ultima, il riconoscimento dell’url plain/text, proprio in questi giorni se ne parlava in giro.
Direi che “Google spione” e l’uso di Chrome o di un altro browser che utilizza HTML 5 e ogni altro sito che supportano la Timing experience ha fatto il resto.
Del resto se devono traccare la pagina e poter dire “ci vuole x tempo”, questo tempo deve pure essere assegnato ad una “ID” particolare, quindi ad una pagina.
Da li la complessita’ dell’algoritmo nell’aver associato la struttura delle pagine viste con il robots bloccato.
Tuttavia, non escluderei l’ipotesi che sia stato utilizzato un diverso user-agent.
Guarda ho i logo davanti agli occhi e non c’è veramente nulla di sospetto. Inoltre – aggiorno anche il post – le URL di destinazione sono rimasti vergini da navigazione, ovvero non ci abbiamo proprio MAI navigato e i log lo confermano!
Da qualche parte le pagine sono state viste… non e’ possibile che sia finite li per magia.
Forse, e dico forse, il nofollow e’ stato aggiunto dopo che la pagina era stata quanto meno letta all’inizio?
Una concomitanza di eventi, letta, memorizzati gli URL per procedere a successiva indicizzazione poi bloccati?
Andrea capisco la tua titubanza, ma era questa la cosa particolare del test. La root e la prima pagina sono state viste dal googlebot. Le altre “non” sono state visitate, ma ha creato una sorta di indice “secondario” basandosi sui link della root, tant’è che serp appare la scritta “description non disponibile a causa del robots bla bla bla”.
Forse non ho ben capito io…
Ma è normale che Google non abbia mai richiesto tali pagine essendo in disallow nel robots.txt.
Ed è altrettanto normale che alcune di loro siano state indicizzate: ricevevano dei link follow (ma non potevano essere richieste a causa del robots.txt)
Google per creare lo snippet delle URL bloccate da robots si è basato su altri fattori, come per esempio l’anchor text con cui venivano linkate.
Io non vedo del tutto normale vedere in SERP delle pagine che il bot non ha visitato, sinceramente! Potrebbe esserci dentro qualsiasi cosa.
Come ti ha detto Zanna86 le pagine sono state indicizzate, ovvero hai un link che puo’ essere stato recuperato, ma poi per via del robots non hai snippet.
Tutto regolare per me.
Ciò che dici, invece, è il normale comportamento di Google. Il bot non le ha visitate perchè gli hai proibito di richiederle da robots.txt.
Ma nulla gli impedisce di indicizzare l’URL, anche se non può richiederle!
L’unico modo per non far comparire una URL che restituisce status code 200 OK nelle SERP è il noindex (come meta tag o negli headers http).
Prova a fare qualche ricerca sul robots.txt e il noindex…forse ne aveva parlato anche Enrico Altavilla sul suo blog.
E’ un’assunzione di responsabilità che io come motore non mi prenderei di andare a inserire in un indice “visibile” pagine che non ho avuto la possibilità di verificare.
Lo stesso Altavilla al Convegno GT parlava della possibilità di avere il sito rimosso dalla SERP nel caso in cui il robots.txt desse errore 500 (ma siamo OT). Test poi rivisto anche da Martin.
@andrea moro: certo che è regolare, ma non è regolare che si prenda la responsabilità di linkare qualcosa solo perché è indicizzato senza fare una verifica. Dentro potrebbe esserci qualsiasi cosa e lui – responsabile dei risultati – dovrebbe andarne a verificare il contenuto. Se il robots.txt (il rispetto del…) non glielo consente allora secondo me non sarebbero contenuti elargibili.
Io – se fossi google – non inserirei risultati in una ricerca che i miei algoritmi NON possono verificare.
Sono d’accordo con te, Merlinox, quando dici che questo meccanismo può essere pericoloso per il motore di ricerca.
Pagine bloccate da robots.txt, solitamente rimangono confinate nell'”indice secondario”, ovvero quello accessibile solamente cliccando su “ripetere la ricerca includendo i risultati omessi” (parametro filter=0). Per esempio cercando site:cittaconla.it , entrando in quello che io chiamo “indice secondario”, puoi trovare un mio scherzetto fatto sul sito di un mio amico (ultimo risultato dell’indice secondario). E’ bastato un link sul mio blog per 2 o 3 giorni…e sono anche riuscito a dare alla URL il title che volevo io, ovvero “Impariamo a usare il robots.txt”.
Altre volte, quando i fattori esterni sono molto forti, Google si prende la responsabilità di mettere tali URL nell’indice primario. Ad esempio per la ricerca [link assistant price], il primo risultato è bloccato da robots.txt.
Ciao
Quoto.
Ciao Merlinox, sul dominio avevi attivato Google Analytics già prima che ti rendessi conto dell’indicizzazione?
Niente analytics.
Ultimamente wordpress e google hanno giocato un brutto scherzo anche a me. In pratica su un blog che era online da mesi nel quale non c’era il file robots.txt ad un certo punto google è come se ne avesse generato uno virtuale, piazzandoci un bel disallow e deindicizzando tutte le pagine. Anche dal webmaster tool mi è apparso un messaggio che indicava l’impossibilità dello spider di accedere alle varie pagine web, ma il robots.txt non esisteva. A questo punto ne ho creato uno nuovo e l’ho caricato nella root, ma google per qualche strano motivo lo spider ha continuato a non riuscire ad accedere. Alla fine dopo 5 giorni di madonne, ho risolto con questo stratagemma, ho pubblicato 4 article marketing, linkando il file robots.txt nuovo e alla fine questo è stato recepito correttamente.
Non è che avevi tenuto wordpress in modalità privacy e magari, essendo un sito nuovo, aveva bisogno di più giorni per ripassare a vedere il robots.txt aggiornato?
No no, sito online da mesi, indicizzato tranquillamente, di punto in bianco questo messaggio nel webmaster tool e il comportamento descritto. D’ora in poi il file robots.txt è la prima cosa che preparo per siti sviluppati su wordpress… 🙂
Strano però. Io ho notato che wordpress genera un robots.txt da solo, ma il sito era in modalità privacy. Sicuro che senza mettere il robots.txt wordpress stesso non generi uno strano codice diverso da 200 e 40*? Facci sapere.