Obfuscation de liens

Objectifs

Obfuscation classique

l'obfuscation "classique" va nous amener à remplacer un lien html classique

<a href="http://monsite.com/monurl">Mon ancre</a>

Par un lien non-interprété par les moteurs de recherche

admin<span class="offhref" data-src="http://monsite.com/monurl">Mon ancre</span>

Un code javascript est déposé dans un fichier .js (ou dans le header ou le footer) va servir à le rendre cliquable

Ce code est le suivant :

<script>var offlink = document.querySelectorAll('.offhref');
offlink.forEach(function(link) {
	link.addEventListener('click', function(e){
  window.open(link.getAttribute('data-src'))
  })
})</script>

Vous remarquerez cependant que le lien, même si il est théoriquement non prit en compte par Google, laisse son url apparaitre dans le code HTML.

Afin de répondre aux besoins des SEO les plus vigilants, nous pouvons vous affiner notre méthode.

Obfuscation complète

Nous allons utiliser le même procédé, mais avec le lien encodé.

<span data-src="http://monsite.com/monurl">Mon ancre</span>

En ajoutant un encodage en Base JS 64 de notre URL. Celle-ci va devenir :

On transforme notre URL en Base64 grâce au site decodebase64.com
<span data-src="aHR0cDovL21vbnNpdGUuY29tL21vbnVybA==">Mon ancre</span>

Il faut maintenant ajouter à notre code javascript la possibilité de décoder l'url avant de créer le lien sur le contenu de notre balise <span>

<script type="text/javascript">
	document.addEventListener("DOMContentLoaded", function(event) {
		var classname = document.getElementsByClassName("nomdelaclasse");
for (var i = 0; i < classname.length; i++) {
			classname[i].addEventListener('click', myFunction, false);
}
	});
	var myFunction = function() {
		var attribute = this.getAttribute("data-variables");
		document.location.href= decodeURIComponent(window.atob(attribute)) ;
};
</script>

Enfin, vous pouvez mettre ce code dans un fichier Javascript que vous bloquez dans le robots.txt

Ainsi :