Des liens JavaScript invisibles aux moteurs de recherche

Quelquefois, on voudrait placer dans une page des liens sur lesquels les visiteurs puissent cliquer mais que, pour diverses raisons, on ne veut pas présenter au moteurs de recherche.

Pour éviter par exemple que trop de liens vers un même site soient pris pour une ferme de lien et ne fassent pénaliser le site qui les contient.

JavaScript semble un bon moyen pour cela, mais Google maintenant est capable d'interpréter le code JavaScript et d'y trouver des liens. Pour l'éviter on doit recourrir à un cryptage, même s'il est élémentaire.

Trois fonctions JavaScript seront nécessaires.

Fonctions JavaScript de codage de caractères

charCodeAt

Retourne le code UNICODE d'un caractère.

Exemple:

var code = machaine.charCodeAt(5);

Assigne à la variable code la valeur unicode du cinquième caractère de la chaine "machaine".

fromCharCode

Retourne le caractère correspondant à un code UNICODE.

Exemple:

var ch = String.fromCharCode(125);

location.replace(url)

Charge une autre page.

Ces fonctions suffiront au codage et au décodage de l'URL.

Codage de l'URL

Ce script ajoute 5 à chaque code d'une chaîne donnée en entrée. Il affiche la nouvelle chaine codée dans une boite d'alerte où on peut la copier pour la coller dans une variable.

function crypt()
{
var loc = document.getElementById("loc").value;
var nl = "";
for(var i = 0; i < loc.length; i++)
nl = nl + String.fromCharCode(loc.charCodeAt(i) + 5);
alert(nl);
}

On place ce script dans une page à part que l'on affiche pour coder des URLs.

Décodage de l'URL

Ce script sera intégré à la page où se trouve le lien:

function uncrypt(loc)
{
var nl = "";
for(var i = 0; i < loc.length; i++)
nl = nl + String.fromCharCode(loc.charCodeAt(i) - 5);
return nl;
}

La fonction assure le décodage et retourne dynamiquement l'URL en clair.

Le lien lui-même est inséré dans la page avec un code comme celui-ci pour une image:

<img src="monimage.jpg" onClick="self.location=uncrypt(loc)" />

et pour un lien textuel:

<p onClick="self.location=uncrypt(loc)" />Ancre</p>

On peut aussi utiliser la propriété:

location.replace(uncrypt(loc))

Mais cela désactive le retour à la page de départ.

Démonstration

Cette démo affiche ci-dessous le code pour l'URL que vous donnez...

Entrer une URL: