Obfuscation de lien : retour du PR Sculpting?

Obfuscation de lien : retour du PR Sculpting?
Tweet about this on TwitterShare on Facebook0Share on LinkedIn10Email this to someone

Comment cacher un lien a Google? Question qui taraude les référenceurs depuis que Google a changé sa façon de considérer les liens en nofollow en enterrant ainsi le PageRank Sculpting. Grâce au talent de développeur de Johan Bleuzen nous avons testé avec succès une forme de lien indécelable par GoogleBot. La suite devrait vous plaire.

Sautons la partie où l’on justifie l’intérêt (évident) de cacher un lien à Google et passons directement à la pratique soit la manière d’encoder un lien pour le rendre invisible (sans cloaking serveur) aux yeux du moteur de recherche. Pour cela il faut comprendre comment Google procède pour repérer les liens présents sur une page web.

Sommaire de l’article :

1. La détection de liens par Google
2. Comment cacher un lien à Google
3. Fiabilité du camouflage
4. Intérêt SEO : le PR Sculpting
5. Limites de l’obfuscation
6. Zoom : Google et le Javascript

La détection de liens par Google

Google se fie à priori aux éléments a href mais aussi aux évènements onClick qu’il va trouver dans la page. Ainsi, même si le moteur de recherche n’est pas capable de suivre tous les liens, il lui est facile de les repérer et donc de les comptabiliser dans son calcul du PageRank à distribuer.Camouflage de liens

Rappel : pour calculer la valeur de PageRank transmise à chaque lien, Google divise le PR de la page par le nombre de liens qu’elle contient. Le fait que ces liens soient en nofollow ou qu’ils ne soient pas indexables par le moteur ne change rien à la répartition du “jus”, d’où l’intérêt de rendre les liens inutiles complètement invisibles aux yeux de Google.

Ce qu’il faut éviter : cacher naïvement des liens dans vos scripts Javascript. Google analyse les scripts et peut considérer qu’il s’agit d’une tentative de cloaking (présenter à GoogleBot une version différente de votre site) s’il détecte des liens sans pouvoir les suivre. Si vous devez placer un lien dans un script, pensez à le répliquer dans une balise noscript pour éviter d’être flagué.

Comment cacher un lien à Google

Préambule

Avant d’aller plus loin il convient de préciser deux choses concernant cette technique dite d’obfuscation.

> Il s’agit clairement d’une technique contraire aux consignes de bonne conduite de Google car il s’agit bien là de dissimuler du contenu au moteur. Par conséquent vous vous exposez à une pénalité, puissiez-vous être confondu.

> Cette technique est déjà utilisée sur le Net, notamment par plusieurs gros e-commerçants. Je ne dévoilerai cependant pas leur nom, c’est à vous de les trouver ;).

Encodage du lien d’obfuscation

La technique d’obfuscation repose sur 4 principes :

1. Pas de différence avec un lien normal du point de vue de l’internaute.
2. Pas d’élément a href ni d’événement onClick susceptibles d’être reconnus par Google.
3. Externalisation du lien dans un script Javascript afin qu’il n’apparaisse pas directement dans le code source de la page.
4. Encryptage du lien externalisé pour que Google ne puisse pas le reconstituer.
Du coup le lien que rencontre GoogleBot lorsqu’il crawle la page ressemble à :

<span title="Demos">Demos</span>

Et oui il s’agit bien là d’un lien! Sachant que l’attribut « title » n’est pas obligatoire mais participe à l’illusion puisque le contenu de l’attribut s’affichera dans un tooltip pour l’internaute, comme un vrai lien. De plus, du point de vue du W3C c’est tout à fait valide.

Voici le code appelé qui a été utilisé pour réaliser ce test. Il n’a pas été créé, il s’agit juste de l’adaptation d’un snippet de code utilisé par un grand site e-commerce français sur sa page d’accueil :

demoer = {'pofkepfisodijfsodijf':'hd@j|m'};

$('span', '#bottom').bind('click', function(){
str = demoer[$(this).attr('title')];
str = str.replace('h', 'http://');
str = str.replace('m', 'mloiqsaeranol');
str = str.replace('d', 'demo');
str = str.replace('j', 'johanbleuzen.fr');
str = str.replace('@', '.');
str = str.replace('|', '/');
window.open(str, '', '');
});

Que fait ce code ?

C’est très simple, on définit une variable “demoer” qui contient un tableau avec des mots clés et des patterns, dans notre cas il n’y a qu’une clé “pofkepfisodijfsodijf” et le pattern qui correspond est “hd@j|m”.

On ne dirait pas mais le pattern est en fait l’URL du test. En effet le pattern est récupéré dans le code et on vient remplacer chacun de ses éléments par les chaînes définies auparavant. Au final, on part de la chaîne “hd@j|m” pour venir recomposer morceau par morceau l’URL que l’on désirait masquer à Google c’est à dire : “http://demo.johanbleuzen.fr/mloiqsaeranol”. Une fois le pattern transformé en lien, on ouvre une nouvelle fenêtre vers le lien décodé.

Pas de différence pour l’internaute

  • Le clic sur l’élément renvoie bien vers la nouvelle page. C’est quand même l’essentiel!
  • Le lien dispose de l’attribut “cursor pointer” dans le CSS ce qui permet au curseur de la souris de se transformer automatiquement en pointeur lors du survol du lien.
  • Possibilité de lui ajouter un attribut “title” afin que le lien affiche un texte encadré lorsque l’on laisse le curseur de la souris quelques instants dessus.

Seule différence : l’url cible du lien n’apparaît pas dans le navigateur au passage de la souris.

Fiabilité du camouflage

Difficile de dire si cette technique fonctionnera sur le long terme mais il semble que pour l’instant Google ne parvienne pas à reconstituer le lien ainsi encrypté. De plus, sans les éléments a href et onClick, le moteur n’a aucun moyen de déceler la présence du lien et est obligé de redistribuer le PageRank aux liens que vous choisissez de lui montrer.

Un petit test s’imposait tout de même, en vue de corroborer cela…

Mise en place du test

Pour tester l’efficacité du camouflage, nous avons placé un lien obfusqué dans le footer du blog PR3 de Johan. Ce lien pointe sur la page du sous-domaine de test : http://demo.johanbleuzen.fr/mloiqsaeranol, optimisée pour un mot-clé ne disposant d’aucun résultat dans google : mloiqsaeranol.

[edit : le lien obfusqué a depuis été retiré du footer après plusieurs mois de test concluant]

Bien entendu nous avons placé une ancre de lien neutre (“Demos”), retiré cette page du sitemap et créé absolument aucun autre lien vers cette page afin d’éviter au maximum les interférences.

Obfuscation Lien

Résultat après 1 mois et de nombreux passages de Googlebot: Il semble difficile de croire que Google ait détecté ce lien. L’URL cible du test n’apparaît pas dans l’index et le moteur ne renvoie toujours aucun résultat de recherche pour le mot-clé test. Malgré cela, il ne serait pas honnête intellectuellement d’affirmer catégoriquement que notre lien soit bien resté invisible et qu’il n’ait pas participé à la dilution du PageRank. Ceci étant difficilement vérifiable.
[edit du 11-10-2011] Inévitable : la page test a fini par être indexée après plus de 2 mois en ligne. Cela ne remet pas en cause le test puisque l’indexation est sûrement due à un facteur extérieur (backlink, toolbar ou navigateur intrusif, etc).

Intérêt SEO : le PageRank Sculpting

La possibilité de cacher complètement l’existence de certains liens à Google peut remettre en cause la mort du PageRank Sculpting telle qu’elle a été prononcée lorsque Google s’est décidé à prendre en compte les liens nofollow dans son calcul du PageRank.

Avec l’obfuscation de liens, il est possible de choisir les liens qui méritent de recevoir du PageRank en vue de leur transmettre plus de « linkjuice » et donc de doper leur positionnement dans les pages de résultats. Ainsi pour éviter les « fuites » de PR, vous pouvez décider de cacher à Google les liens :

  • externes.
  • commerciaux, d’affiliation.
  • en double sur une même page, de type « Voir la suite ».
  • « zéro rendement », pointant vers des pages de type CGV.

Limites de l’obfuscation

• La limite majeure de cette technique réside bien évidemment dans le risque permanent de la pénalité, comme une épée de Damoclès au-dessus de la tête de celui qui ose braver les interdits du dieu Google et qui se fait prendre la main dans le sac. La pénalité se traduit souvent par une chute brutale des visites naturelles sur l’ensemble des termes de recherche.

Sandbox GoogleD’autant qu’il est risqué de faire disparaître de son site une grande quantité de liens d’un seul coup. Il est préférable de faire ça de façon progressive pour éviter d’éveiller les soupçons. De même, ramener son nombre de liens sortants à zéro pourra être considéré comme suspect et il n’est pas conseillé d’avoir un ratio liens entrants / sortants trop déséquilibré.

Je pense cependant que l’obfuscation de lien reste une technique blackhat moins risquée à court terme qu’un traditionnel cloaking sur IP.

• La seconde limite est d’ordre technique. Il s’agit de la difficulté de mettre en place l’obfuscation à grande échelle de façon automatisée sur un site complexe. A vous de voir si vous pensez avoir les moyens de vous lancer dans l’aventure sachant qu’il est primordial de garder une porte de sortie en cas de pénalité. Conservez toujours la possibilité d’un rollback rapide pour pouvoir sortir de la fameuse sandbox le plus vite possible.

• Enfin la dernière limite de l’obfuscation est fonctionnelle. Comment savoir si Google est bien passé sur votre lien lien sans en détecter la présence? Car si le moteur n’indexe pas la page cible, cela ne signifie pas forcément qu’il n’a pas comptabilisé le lien dans son calcul du PageRank à distribuer. En effet il est très difficile de vérifier si le « linkjuice » a été dilué ou pas car il reste non-mesurable et il est quasiment impossible de réunir les conditions propices à un test. Je vous laisse méditer sur ce dernier point…

Pour aller plus loin : Google et le Javascript

Presque plus rien ne lui échappe

S’il est sûr que la prise en charge du Javascript par Google est limitée, il est également certain que la firme travaille durement à étendre sa compréhension de ce langage, motivée par la volonté de crawler toujours plus de contenu et de mieux lutter contre le spam.

Partons du lien basique, “en dur” comme on dit dans le milieu, qui est recommandé si vous souhaitez que Google indexe facilement le contenu de la page cible.

• <a href="http://www.monsite.com/page1">anchor text</a> = lien absolu
• <a href="/page1">anchor text</a> = lien relatif

Pour ensuite arriver sur des liens faisant appel à un javascript, déjà plus difficiles à interpréter pour les moteurs :

• <div onclick="document.location.href='http://monsite.com/'">
• <a onclick="mafonction()" href="#">anchortext</a>
• <a onclick="window.open('mapage.html')" href="javascript:void(0)">new window</a>

Et bien ces 3 liens sont non seulement détectés par Google mais transmettent également ancres de texte et PageRank!
Il y a le cas spécifique des liens Ajax crawlables :

• <a onclick="”navigate('ajax.html#foo=32');" href="”ajax.htm?foo=32”">foo 32</a>

Il s’agit simplement d’un lien Ajax auquel on a rajouté un lien statique contenant un paramètre (?foo=32) plutôt qu’un fragment (#foo=32) qui lui n’est pas suivi par Google. Ce lien est également vu et suivi par Google.

En réalité, Google peut également exécuter / suivre l’action contenue dans la plupart des événements onClick comme l’a révélé l’ancienne googleuse Vanessa Fox sur Searchengineland. Cela signifie qu’il est non seulement capable de repérer les liens javascript mais aussi de les suivre, d’indexer le contenu qu’il y a derrière et de transmettre les ancres de liens.

Ce que Google condamne

Sur son centre d’aide aux webmasters, la firme met en garde ceux qui seraient tentés de violer le « règlement général » en utilisant des redirections Javascript trompeuses. Celles-ci sont assimilées comme autant de tentatives de cloaking et les fraudeurs s’exposent à des pénalités. Voici l’extrait censé intimider :

Consignes Google Javascript

Remerciements

Quelques mots sur Johan Bleuzen qui a assuré l’encodage du lien et toute la partie développement du test.
Johan Bleuzen est un développeur web qui a déjà servi la cause SEO par le passé en aidant un certain Daniel Roch à se dépatouiller du référencement des sites Ajax via un Headless Browser. Une sombre histoire de #! …

Un grand merci à lui donc pour l’encodage du lien et pour ses explications techniques.

Son blog : http://blog.johanbleuzen.fr/ | Son compte Twitter : @jBleuzen

Tweet about this on TwitterShare on Facebook0Share on LinkedIn10Email this to someone

Par
Référenceur white hat évoluant chez l'annonceur en milieu agile, formé par la SEO Rockstar Laurent Bourrelly. Pour suivre l'actu #SEO (mais pas que) de Slow Lab sur Twitter > @gaujay. Voir mon Profil Behance