25

Test SEO: liens Javascript et crawlers

log apacheCourant 2009, on pouvait lire sur plusieurs sites d'actualité SEO que les robots de Google étaient sur le point d'arriver à lire , crawler, et indexer certains liens javascript (source Abondance).

Pour me faire ma propre opinion, j'avais mis en place un test Mars 2011 sur un sous-domaine avec une page index.html et plusieurs déclinaisons possibles de liens Javascript vers d'autres pages qui ne contiennent que leur anchor text. Le lien vers ce sous-domaine a été fait d'une page avec un PR 5 pour qu'il soit plus rapidement visité par GoogleBot et ses copains (j'ai utilisé des mots inexistants que j'ai remplacé ci dessous pour une meilleure lisibilité).
Il y a deux semaines, en lisant cet article de @jambonbuzz Googlebot change de méthode, je me suis dit: "tiens, mon test de liens Javascript au fait, ça donne quoi depuis le temps?" 🙂

Bots et liens javascript (ou non)

Alors j'ai ressorti tous mes logs archivés, et je suis allé regarder de plus près si mes pages avaient été visitées et étaient indexées. On va voir que l'un ne va pas toujours avec l'autre forcément d'ailleurs. Etant donné que les mots utilisés n'existaient pas, ça a peut-être influencé certains crawlers pour ne pas visiter des pages donc ces informations sont à prendre avec du recul.

[table id =2 /]
Légende: V = visitée, I = indexée, - = rien, ? = rien, mais c'est étrange...

Googlebot/2.1

Il a indexé toutes les pages qu'il a visitées et n'a pas visité deux pages:

<a href="#" onclick="window.open='page8.html';">page8</a>
<a href="javascript:void(0)" onclick="window.open('page10.html')">page10</a>

Les deux pages non crawlés étaient linkées avec des liens relatifs dans des popup.

Exabot/3.0

Il a indexé toutes les pages qu'il a visitées et n'a pas visité deux pages:

<script type="text/javascript">document.write('<a href="http://test.js.com/page11.html">page11</a>');</script>
<script type="text/javascript">document.write('<a href="page12.html">page12</a>');</script>

Les deux pages non visitées avaient des liens <a href> standards dans un document.write

Bingbot

Il est bizarre bingbot, il a d'abord indexé ma page index.html uniquement, ensuite il est allé visiter cette page :

<a href="http://test.js.com/page3.html" onclick="window.open(this.href)">page3</a>

Après, il s'est tapé le nez à plusieurs reprises en cherchant absolument un robots.txt. J'en ai créé un avec la directive
User-agent: *
Disallow: /p/

(à savoir un répertoire qui n'existe pas). Et il a désindexé mon index.html. Il a dû trouver mes liens étrange avec juste une page contenant un mot, ça ne l'a pas branché. Il a senti le traquenard...

Yahoo! Slurp

Il n'a su visiter que les liens standard dont le href était correctement renseigné ainsi que ce lien un peu exotique (document.location.href dans un onclick):

<a href="#" onclick="document.location.href=
'http://test.js.com/page4.html';">page4</a>

Il est timide Yahoo's Slurp.

Baiduspider+

Il n'a visité que trois pages dont une n'étant pas la plus accessible nécessairement:

<script type="text/javascript">
document.write('<a href="http://test.js.com/page11.html">page11</a>');
</script>

Baiduspider aime les liens simples, et il les lit quand ils sont coincés dans des balises <script> en absolu, pourquoi s'embêter à lire d'autres formes de liens Javascript ? Il aurait peut être préféré que mon test soit fait avec des caractères chinois.

YandexBot/3.0

Il a visité les pages dont le lien était sous la forme d'un <a href=lien>, relatifs et absolus, qu'il y ait un onclick ou non dans le tag.

Bilan

• Pas de conclusion ni d’affirmations possibles par rapport à ce test si ce n'est que Google et Exalead lisent de nombreuses formes de liens que les pages aient une extension ou non. Bing, Baidu et Yandex quant à eux ne préfèrent pas encombrer leur index avec des pages trop vides, inutiles pour l'internaute. Le crawl de Baidu et Bing est assez étrange d'ailleurs, ça me laisse perplexe. Leurs robots étaient peut-être fatigués en fin de journée, allez savoir...

• Le fait que les chemins de ces URL soient relatifs ou absolus a eu un impact au niveau de Google et des popup, c'est bon à savoir.

• J'ai aussi placé une URL texte ce matin (comme l'avait déjà fait @jambonbuzz dans son test) sous cette forme http://www.yapasdequoi.com/unepage.html (text only sans balise) et la page a été crawlée par GoogleBot dans l'heure qui a suivi la dernière visite de la page qui contenait le texte de l'URL, par contre elle n'est pas encore indexée, affaire à suivre...

J'ai par ailleurs un deuxième test en cours avec ces mêmes liens mais un texte différent entre le contenu des pages (moins vides) et les ancres afin d'en savoir plus sur la transmission de linkjuice. On verra bien ce que ça donne! En tout cas, vu la tête de mes pages, Google met vraiment n'importe quoi dans son index.

25 commentaires

  1. Très bon test car il prend en compte les comportements des différents robots.
    Google est désormais capable d’exécuter, de suivre et d’indexer la plupart des évènements Onclick. Ces liens transmettent même du Pagerank!
    Et si Google n’arrive pas à suivre un lien, cela ne veut pas dire qu’il ne le prend pas en compte dans son calcul du PageRank redistribué.

    Pour aller plus loin, vous pouvez également lire ce test SEO sur l’obfuscation de lien: http://www.slow-lab.com/obfuscation-lien.php

    • Merci pour ton article qui a l’air bien complet, je le bookmarke pour ma lecture du week-end. La suite au prochain épisode pour la transmission de linkjuice !

  2. Bien ce test !
    Je n’ai pas souvenir d’en avoir vu un aussi complet et rigoureux. Un bel apport. Merci. 🙂

  3. Vraiment interessant comme test, les liens javascript sont donc a utiliser avec parcimonie, gare aux mauvaises surprises, je suis assez curieuse des reactions qui vont decouler de ce test. En tout cas tres bonne initiative et affaire a suivre 🙂

  4. Merci pour ce test super complet.
    Je pensais que google était quand même beaucoup plus frileux que ça envers les liens javascript.

  5. Perso, je m’interroge à savoir si Google lit vraiment le JS ou s’il détecte simplement les différents formats d’urls, puisque les urls sont toujours en clair dans le test.
    La « preuve » est que Google a vu l’url en texte brut…
    Un même test avec ne serait-ce que onclick= »location.href=’page’+’5.’+’ht’+’ml’; » serait à mon sens déjà plus intéressant… Car s’il « comprend » le JavaScript, alors il devrait savoir faire la base, c’est-à-dire la concaténation.
    Votre point de vue là dessus ?

    • Bonne remarque, personnellement, je pense qu’on est plus dans un schéma où il détecte les différents formats d’URL avec certains types de balisage début/fin de chaîne. Les seuls URL qu’il ne lit pas sont en relatif dans un window.open, il a donc besoin du « http:// » pour isoler la chaîne dans ce cas.
      « Gooogle détecte des formes d’URL dans le code » est peut être plus adapté que « Google lit le javascript », je vais rajouter une URL ’page’+’5.’+’ht’+’ml’ dans mon test en cours 😉

  6. Excellent article Aymeric !

    Ton test SEO m’intéresse d’autant plus que j’étais en train de revoir les bases du JavaScript pour intégrer les événements Google Analytics.

    Je retiens donc qu’avec les popup il vaut mieux mettre des liens absolus 🙂 !

    • Salut Florian! oui, des liens absolus en popup si tu veux que tes pages soient indexées. Par contre comme je l’indiquais plus haut, on est plus dans une forme de reconnaissance d’URL avec des regexp que de l’interprétation Javascript apparemment …

  7. Un test de haut vol, instructif et étayé.

    Arrivé ici sur un tweet de Sylvain (Axe, baume et crème SEO en tout genre), belle découverte que ce blog !

  8. Le souci, c’est que certains liens javascript ne sont pas bons à prendre… Dans le cas de l’ouverture d’un popup par exemple, son contenu ne sera pas adapté pour l’affichage comme une page classique sur le navigateur…

    Merci pour le test.

    • Dans ce cas, il faut mettre en href l’url « avec la structure » et dans le onclick= »window.open(this.href+’?nostructure=1′); return false; » par exemple 🙂

      C’est à peu de chose près ce que je fais avec Ajax, puisque je détecte côté serveur si une entête spécifique est passée. Si elle y est, alors je ne retourne que le contenu, sinon j’y ajoute ma structure.

  9. Merci pour le test et le partage de ce dernier.
    Je reviendrais régulièrement voir ce que ce blog nous sort. Découvert depuis peu j’ai quelques articles à lire…

  10. Cette étude va sûrement faire changer pas mal d’avis, le mien y compris.
    J’étais toujours sûr que les Js n’avaient aucun poids. Ce n’est pas forcément vrai, même si je compte les éviter au maximum ^^

  11. Sur mes sites j’ai un script qui verifie l’existence d’une variable pour appeler une page qui transfère cette variable en ajax.
    L’appel AJAX ne se lance que si la variable est existante.
    Pour le moment Google trouve la structure de l’url et crawle cette page sans renseigner de variable.
    Google ne respecte pas le JS, mais crawle l’url trouvée.

  12. Merci pour ce test très intéressant. Je le garde dans mes favoris !

  13. Merci beaucoup d’avoir réalisé, et surtout partagé, ce test de liens, même si, comme tu le dis, il est à prendre avec des pincettes. Il semblerait toutefois que les liens en chemins absolus soit plus efficaces que ceux en relatifs. Bon à savoir.

  14. C’est ce qui s’appel faire un point précis, avec également l’article de Slow lab très intéressant, en un rien de temps on avance à grands pas, merci pour ces travaux !

  15. salut ! je tombe sur ton article et il m’apporte des réponses à certaines questions que je n’ai pas pris le temps de tester par moi meme. joli 🙂 bien documenté et tout à fait utile. bravo, et tous à nos scripts JS opti SEO !

  16. Ping : Liens javascript et indexation | Laboratoire SEO
  17. Ping : 6 tests SEO pour évaluer la crawlabilité d'un lien par Google
  18. Merci pour le petit tableau

    Maintenant la question c’est est ce que les liens javascript – transmettent du jus? des penalités – meme si la réponse est a priori oui… quoi que… bref a tester

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *