skip to Main Content
Plus Radical Que Le Nofollow : L'obfuscation De Liens (mis à Jour)

Plus radical que le nofollow : l'obfuscation de liens (mis à jour)

Temps de lecture 5 minutes

Dès que l’on s’intéresse de près au référencement on entend parler du Nofollow censé indiquer à Google les liens qu’on ne souhaite pas qu’il suive.

Quand utiliser le Nofollow ?

Dans un certains nombre de cas de figures il est recommandé d’utiliser cette balise :

Plus radical que le nofollow : l'obfuscation de liens (mis à jour)

Néanmoins, je ne suis pas fan de la balise nofollow pour plusieurs raisons :

  • l’URL du site est toujours présente dans le code de la page et dilue votre jus SEO (non le PageRank n’est pas mort)
  • C’est un indicateur de non qualité ou de non fiabilité de la page pointée (sinon pourquoi indiquer qu’il ne faut pas le suivre ?) et donc par ricochet de votre page aussi
  • Google prend parfois quand même en compte ce liens quand il en a envie ce qui va diminuer votre crawl time disponible s’il s’agit de liens internes

Rajoutez que si vous faites des liens vers des sites que Google a rangé dans les cases « spammeur », « téléchargement illégal » ou « contenu adulte », vos pages contenant ces liens peuvent être déclassées voire même pénalisées. A l’époque où le PR etait encore public, une page PR3 d’un de mes sites est passée en moins de 48h en PR-1 suite à l’ajout d’un lien adulte.

Le risque est moindre pour les liens affiliés … pour le moment. Mais pourquoi prendre le moindre risque et dilluer inutilement votre jus SEO ?

Voulant éviter tout cela, le premier reflexe serait de remplacer vos liens classiques par des liens en javascript du style :

<a onclick="window.open('mon_url','_blank);"
href="#" rel="nofollow">mon ancre</a>

Seulement depuis déjà un moment Google sait très bien identifier et suivre ces liens, que ce soit dans les menus animés ou ailleurs…

Comment se passer du Nofollow

Option 1 : le minifieur de liens

Une option simple et radicale consiste à passer par un minifieur de liens.
Seulement :

  • je ne sais pas si ou quand Google pourra décrypter des bit.ly et consorts
  • bit.ly bloque certains liens d’affiliation

Ok NEXT !

Option 2 : le cloaking de liens

En fouillant un peu j’ai bien trouvé une solution sur Yoast qui permet de masquer totalement certains liens à Google.

L’idée consiste à :

  • Créer un répertoire de redirection, su style /redirection/
  • Bloquer l’accès à ce répertoire aux robots dans le fichier robots.txt
  • Créer un fichier redirects.txt dans lequel on stocke la liste de toutes ses redirections
  • Et mettre en place un script de redirection

Le tout (téléchargeable sur github) est efficace mais je trouve ça super lourd …

Option 3 : l’obfuscation de liens

Je me suis donc creusé la tête et j’ai fini par penser à une solution simple que j’espère satisfaisante : obfusquer mes liens.

Si Google est capable de suivre des liens en JS il n’exécute à priori pas tous les scripts à chaque passage de bot, en particulier s’il s’agit de scripts hébergés ailleurs voire même bloqués via .htaccess + robots.txt (ceinture et bretelle) .
J’ai donc entrepris :

  • d’utiliser la balise HTML 5 data-href
  • d’encoder certains liens en rot13 (une fonction basique qui permet de faire des permutations de lettres en PHP)
  • et de les décoder en Javascript à chaque clic

Pour encoder des liens en rot13 je remplace donc :

<a href="<?php echo $monlien; ?>">mon ancre</a>

par

<span onclick="linkAction(this); return false;"  
data-href="<?php echo str_rot13($monlien); ?>">mon ancre</span>

Puis je rajoute dans la page (ou idéalement via un fichier externe hébergé sur un autre domaine) la fonction de décryptage suivante en Javascript :

<script  type="text/javascript">
function str_rot13(str) {
	return (str + '').replace(/[a-z]/gi, function(s) {
		return String.fromCharCode(s.charCodeAt(0) 
		+ (s.toLowerCase() < 'n' ? 13 : -13)); 
	}); 
}
function linkAction(e) { 
	window.location = rot13(e.getAttribute("data-href")); 
}
</script>

Les liens apparaîtront donc pour Google sous la forme suivante :

<span onclick="linkAction(this); return false;" data-href="uggc://jjj.k...">ancre</span>

Si vous voulez pousser le vice encore un cran plus loin, vous pouvez même remplacer data-href par data-nimportequoi et surtout et déclencher l’action onclick via une classe.
On aurait alors un lien obfusqué de type : 

<span class="obfusque" data-obfusque="uggc://jjj.k...">ancre</span>

Script complet d’obfuscation de liens en jQuery

Maintenant que vous avez bien compris le principe, voyons le script complet en utilisant la librairie jQuery :

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
	<style>
	.classe_obfusquee{
		text-decoration:underline;
		cursor: pointer;
	}
	</style>
	<script type="text/javascript">
	
	function str_rot13(str) {
		return (str + '').replace(/[a-z]/gi, function(s) {
			return String.fromCharCode(s.charCodeAt(0) 
			+ (s.toLowerCase() < 'n' ? 13 : -13)); 
		}); 
	}

	$(document).ready(function(){
        $("classe_obfusquee").click(function() {
			window.location = str_rot13($(this).attr("url_obfusquee")); 
			return false;
        });
	});
	</script>
</head>
<body>
	Un <span class="classe_obfusque" url_obfusquee="<?php echo str_rot13("https://pxagency.fr/monetiser-site/"); ?>">lien obfusqué</span> que Google aura du mal à suivre
</body>
</html>

Le code ci-dessus est fonctionnel, il ne vous reste plus qu’à déplacer la partie JS dans un fichier externe hébergé et protégé ailleurs.

Je doute que Google arrive à identifier ce type de liens obfusqués et encore moins à les suivre dans ces conditions, mais vos avis sont les bienvenus !
Je vous rappelle également que si le Javascript est désactivé sur la page, le lien sera totalement inactif et l’internaute ne pourra donc pas le suivre…

Fabien Elharrar

Consultant en acquisition d'audience, monétisation web et growth hacking.

8
Poster un Commentaire

avatar
3 Fils de commentaires
5 Réponses de fil
0 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
5 Auteurs du commentaire
Fabien ElharrarSerge EstevesAureleAlecsyCrack-net Auteurs de commentaires récents

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  S’abonner  
plus récent plus ancien Le plus populaire
Notifier de
Crack-net
Invité

Hello Fabien

tu fais ça manuellement pour chaque lien ou tu automatises le truc?

Sinon, un petit soucis d’affichage du code dans l’article(sous chrome en tout cas)… Les lignes débordent un peu à droite et on ne voit plus la fin du code.

Fabien Elharrar
Invité

C’est automatisé heureusement !
Tu n’as pas une barre de scroll dans les zones de code ? Peut-être un souci de de cache navigateur ?

Alecsy
Invité

Salut,

Merci pour cette astuce.

N’as-tu pas peur de prendre un malus car les robots vont trouver des liens morts ?

Fabien Elharrar
Invité

Il ne trouveront que des liens « internes » aux pages avec le # donc aucun souci à ce niveau

Aurele
Invité
Aurele

Dis moi, tu n’aurais pas trouvé cela sur le site suivant…

http://www.alittlemarket.com

Car en fait, il utilise une méthode similaire depuis plusieurs années, il me semble…

Mais bien joué quand même ! 🙂

Merci

Fabien Elharrar
Invité

J’ai trouvé ça en fouillant sur Stack Overflow en fait 😉

Serge Esteves
Invité

Salut Fabien, Google est devenu assez bon pour suivre les liens javascripts depuis 2011 a peu près. C’est à partir de la que j’ai commencé à voir des liens en javascripts suivis par googlebot J’ai du mettre à jour mes méthodes d’obfuscation pour que l’URL ne soit pas facilement lisible dans le code, un peu comme tu l’as fait mais avec un cryptage en base 64. En revanche, les liens obfusqués se trouvent dans un span , afin d’éviter une perte de jus. Car même si avec ta méthode, google n’arrivera pas à suivre le lien, vu qu’il se trouve… Lire la suite »

Fabien Elharrar
Invité

Tu as raison je vais adapter ça c’était un premier jet 😉

Back To Top
×Close search
Rechercher