19 April 2024


formation avancée au référencement

Archive for the ‘Black Hat SEO’ Category

Les applications du cloaking : cloaking sur referer et IP delivery

Jeudi, janvier 29th, 2009

Nous voici à nouveau sur cette technique du cloaking. Après avoir lu avec conscience et sérieux le premier volet introductif aux techniques de cloaking, vous devez être impatient(e)s de connaître ou confirmer ces techniques en environnement réel.

Je présenterai ici une petite collection des applications du cloaking, qui bien sûr n’est pas limitative et encore moins une référence. Le cloaking peut être amélioré, affiné, et chacun aura sa recette (plus ou moins bonne).

Le cloaking sur referer et IP delivery qu’est-ce que c’est ?

Le cloaking sur referer : “dis-moi d’où tu viens et je te montrerai ce que tu aimes”

Le cloaking sur referer est une technique visant à présenter un contenu différent en fonction de la provenance du visiteur (humain ou robot). En PHP, on se servira de la variable super globale $_SERVER pour le récupérer et l’utiliser à nos fins.

$referer = $_SERVER['HTTP_REFERER'];

IP delivery : “dis-moi qui tu es et je te montrerai ce que tu cherches”

L’IP delivery consiste à “délivrer” un contenu en fonction de l’ip du visiteur. C’est simplement du cloaking sur IP, mais avec la différence que ce n’est pas destiné forcément aux robots.

Un exemple plus parlant et concret est le fait d’utiliser l’IP delivery pour cibler les publicités que l’on diffuse en fonction de la zone géographique du visiteur.

Cloaking sur referer et IP delivery en action

Voici une technique assez puissante qui vous permet d’obtenir des liens sans que l’échange soit complètement réciproque.
Je m’explique. Vous avez passé votre pause déjeuner à vous concocter une armada de MFAs pour financer vos prochaines vacances. Pas peu fier de la somme de contenu que vous avez réussi à amonceler, vous vous dites “Voici de quoi nourrir un bot !”.
Mais pour que le bot trouve votre mine de contenu, il faut faire connaître les sites… Donc, vous commencez votre référencement sur des annuaires plus ou moins populaires, ou à validation automatique qui forcément vont vous demander des liens retour (s’ils ne vérifient pas le contenu du site, ils vérifieront la présence du lien).
Pour cela, 2 solutions : soit ils lancent un script de vérification, soit ils y vont manuellement. C’est là que l’on applique notre script…

Dans une base de données, on enregistre le domaine du site (tld, pas de sous-domaine hein), on insère aussi l’ip du serveur et finalement, le code source du lien qui sera vérifié.

 CREATE TABLE `seo`.`partenaire` (
`partenaire_id` INT NOT NULL AUTO_INCREMENT ,
`partenaire_domaine` VARCHAR( 30 ) NOT NULL ,
`partenaire_ip` VARCHAR( 16 ) NOT NULL ,
`partenaire_code` TINYTEXT NOT NULL ,
PRIMARY KEY ( `partenaire_id` )
) ENGINE = MYISAM

Maintenant, on va détecter de manière assez simple si le visiteur (humain ou script) vient du serveur sur lequel on a soumis un lien. Pour cela, on utilisera la fonction suivante.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
//  Vérifier que le referer n'appartient pas à un annuaire auquel on a soumis, sinon, on affiche le lien
function bad_referer($referer, $ip){
  $buffer = '';
  $value = null;
 
  //  Isolation du domaine
  $uri = parse_url($referer, PHP_URL_HOST);
 
  //  Récupération du TLD
  if (preg_match('#www\.#U', $uri)){
    preg_match('#www\.(.*?)\.?(.[a-z]{2,3})#Usi', $uri, $match);
    $value = $match[1].$match[2];
  }
  else{
    preg_match('#.*\.(.*?)(.[a-z]{2,3})#U', $uri, $match);
    $value = $match[1].$match[2];
  }
 
  //  Affichage de tous les codes des partenaires pour ce domaine
  $q = mysql_query("SELECT * FROM partenaire WHERE partenaire_domaine='".$value."' OR partenaire_ip='".$ip."'");
  if(@mysql_num_rows($q) != false && @mysql_num_rows($q) > 0){
    while(@$r = mysql_fetch_object($q)){
      $buffer.= ' '.stripslashes($r->partenaire_code);
    }
  }
 
  echo $buffer;
 
  return;
}
?>

L’utilisation est très simple, à l’endroit où vous souhaitez afficher les liens des partenaires, il suffit d’appeler la fonction comme cela :

<?php bad_referer($_SERVER['HTTP_REFERER'], $_SERVER['REMOTE_ADDR']);?>

Comme les admins d’annuaire sont tous presque tous des flemmards ( :D ), ils ne vont pas masquer le referer s’ils font une vérification manuelle de la présence du lien. C’est là qu’on agit. Sinon, ils utilisent un script de vérification automatique et on grille l’adresse IP du serveur.

Grâce à cette technique, vos sites ne ressembleront pas à des guirlandes de Noël et vous pourrez toujours être référencés.
La technique ultime consiste à faire un cloaking sur les robots en plus afin que les liens s’affichent pour eux. Cela vous permet d’y insérer également vos propres liens :D

Il est possible de conserver en session la visite depuis le referer traqué pour que le lien apparaisse toujours sur les autres pages dans le cas d’un lien en footer.

J’espère que vous en avez appris un peu et que vous suivrez le prochain épisode avec autant d’attention, en attendant, ne soyez pas evil hein ;)

Cloaking : panorama des techniques

Mardi, janvier 13th, 2009

Pour commencer ce nouvel article, je tiens tout d’abord à préciser que le cloaking c’est mal !

A quoi sert le cloaking ?

Le cloaking est une technique qui consiste à présenter aux moteurs de recherche un contenu différent de celui que l’on affichera pour les visiteurs. On détecte la présence du crawler, et on se débrouille pour lui envoyer les meilleurs morceaux de la page qu’il recherche, en augmentant la densité, en lui déroulant la collection d’expressions clés que vous avez sélectionnée avec amour, en insérant les liens vers les pages que vous avez choisies pour arriver en tête des résultats.

Jan a fait un article il y a un paquet de temps, mais cela reste une référence pertinente pour les débutants cloakers, vous pouvez y jeter un œil si vous n’êtes pas à l’aise avec ces techniques Black Hat.
L’un des avantages de cet article est qu’il présente les utilisations diverses et variées du cloaking.

Ca a l’air simple comme ça, c’est vrai, mais dans la pratique, il existe un certain nombre de techniques, plus ou moins compliquées, plus ou moins fiables et qui vous laisseront passer des nuits plus ou moins tranquilles :lol:

Pour cet article, j’ai choisi de procéder par langage, puis par type de cloaking. Je ne présenterai pas de script, mais seulement les manières de procéder possibles. Les scripts feront l’objet d’un billet à part.

Le cloaking avec Javascript

C’est ce qu’on utilisait dans les bonnes vieilles pages satellites :D Maintenant c’est vraiment grillé, mais ça marche pour les affiliations (j’y reviendrai plus tard ;) ). Je vous déconseille formellement de jouer avec ça sous peine de déclassement ultra rapide !

Sachant que les robots n’interprètent pas le JS (attention, il peuvent le lire, c’est pour cela qu’ils grillent les pages satellites), les redirections faites en JS ne fonctionnent pas, et l’on peut cloaker comme des porcs.
Il y a deux manières de procéder : soit on fait une redirection en JS de manière à renvoyer le visiteur humain vers la page ayant un contenu tout joli, tout bien intéressant, et le robot reste sur la page et indexe tous les bons mots-clefs choisis rien que pour lui, soit on utilise une balise noscript qui contiendra le contenu spécifique aux bots. Cette dernière technique est beaucoup plus risquée car les bots sont suspicieux sur les balises noscript, mais en plus vous risquez le spam report puisque les tricks sont visibles dans la source.
On préfèrera donc la méthode suivante :

<script type="text/javascript">
<!--//
  window.location = 'http://pagepourhumain.tld';
//-->
</script>

à celle-ci

<script type="text/javascript">
<!--//
  //on met un peu de code pour être moins suspect;
//-->
</script>
<noscript>Contenu optimisé pour les robots</noscript>

beaucoup trop dangereuse.

PHP et les langages serveurs : la solution optimale pour le cloaking

PHP, comme ASP, Perl ou Java, est un langage serveur-side, c’est à dire qu’il est interprété par le serveur web et qu’il envoie les résultats générés au navigateur à la fin du script.

Vous comprenez ainsi pourquoi il est avantageux d’utiliser un langage côté serveur pour faire du cloaking : il ne laisse pas de traces de traitement dans la source !

Je ne vais pas m’attarder longtemps sur PHP car on retrouvera de nombreux exemples dans le second volet de mon chapitre sur le cloaking, donc on passe à l’action tout de suite !
Deux axes différents peuvent être donnés au cloaking en PHP : la redirection, ou la génération de contenu selon le profil du visiteur. Je m’explique, si votre visiteur est humain, vous pouvez le rediriger vers une autre page de votre site (ou un autre site) et laisser le robot indexer la page en cours, ou vous pouvez, et c’est conseillé, afficher conditionnellement un contenu la page différent pour le bot ou l’humain.
Exemple :

<?php 
$visiteurType = getVisiteur();
if($visiteurType == 'robot'){
  //  on génère un code juste pour le robot
}
else{
  //  on affiche la page normale pour les visiteurs, ou on redirige vers le site choisi
}
?>

L’avantage de telles techniques est que l’on peut générer du contenu à la volée pour rassasier l’appétit des crawlers sans que ce texte soit parfaitement compréhensible pour un humain… De la bouillie pour robot quoi ;)

On reviendra sur PHP dans quelques temps avec des techniques plus poussées pour servir des objectifs bien clairs, mais pour le moment, nous ne nous intéressons qu’à la technique simple.

Les fichiers .htaccess pour cloaker avec Apache

Dans le genre indétectable, il existe aussi le cloaking par htaccess qui permet d’employer deux techniques différentes : IP et User Agent.
Le principe est le même que pour PHP, à la différence que cette technique est beaucoup moins souple et que l’on utilisera la réécriture d’url (url-rewriting) pour servir des pages spécifiques aux robots et aux utilisateurs. Ainsi, les robots ne verront pas certaines pages mais référenceront le site tout de même. Les pages destinées aux utilisateurs seront elles servies normalement, en toute transparence.
On utilisera un code tel que celui-ci pour le cloaking sur User Agent (dangereux)

RewriteCond %{HTTP_USER_AGENT} Googlebot
RewriteRule .* http://www.page_pour_google.com [R=301,L]

et un code de ce genre pour le cloaking sur IP (exemple emprunté à l’auteur de ce blog)

RewriteCond %{REMOTE_ADDR} ^216\.239\.(3[2-9]¦[4-5][0-9]¦6[0-3])\.([0-9]¦[1-9][0-9]¦1([0-9][0-9])¦2([0-4][0-9]¦5[0-5]))$¦^64\.233\.(1([6-8][0-9]¦9[0-1]))\.([0-9]¦[1-9][0-9]¦1([0-9][0-9])¦2([0-4][0-9]¦5[0-5]))$
RewriteRule .* http://www.page_pour_google.com [R=301,L]

L’intérêt est donc de présenter deux contenus différents, mais sur deux urls différentes… A chacun de drainer le trafic comme il faut… Il faut ensuite faire une règle de réécriture inverse pour servir les pages correctes aux visiteurs si ceux-ci suivent les résultats d’indexation de Google.

Conclusion

On a maintenant trois techniques de cloaking disponibles. Je ne présenterai pas la technique des meta refresh car j’en parlerai dans un autre billet, plus…. adapté dirons-nous :D !
A chacun d’entre vous de les utiliser si le cœur vous en dit et que vous pensez passer de bonnes nuits toute de même… Je ne vous le conseille pas, mais à vous de faire le choix !

Le prochain volet vous présentera l’application de ces techniques en fonction d’objectifs précis, et nous pourrons imaginer des exemples concrets.
A très vite !

Générer du contenu avec les chaînes de Markov

Mardi, novembre 25th, 2008

Toujours en quête de contenu unique et ciblé, le webmaster est.
De nombreux moyens pour en trouver, développer il doit.
Maître Yoda, codez-moi un script de chaines de Markov !

Yoda, code moi une solution de génération de contenu

Alors comment ça se passe ?
Je ne vais pas entrer dans les explications mathématiques qui me dépassent, mais plutôt tenter d'expliquer comment cela fonctionne et quels en sont les intérêts.

En gros, et pour les nuls comme moi, les textes qu'on passe à la moulinette [inline] [/inline] sont rendus uniques car on modifie l'ordre des mots en tentant de conserver certaines suites. En fait, c'est un peu comme mettre le contenu dans un panier à salade, essorer avec plus ou moins de violence (ça c'est ce que certains appellent la granulométrie), et tout ressortir d'un coup en sachant déjà quel serait l'ordre des mots. Les chaînes de Markov, c'est la prédiction du futur sans connaître le passé :)
Voilà pour l'explication, vous l'aurez compris, je suis incapable de vous expliquer correctement comment cela fonctionne.... mais j'aime bien le résultat !

Alors, si on passait à l'action....
Pas mal de gens recherchent ce genre de scripts sur Internet, et il en existe des plus ou moins bons, et des plus ou moins paramétrables.
A mes débuts, j'ai utilisé le code ci-dessous pour réécrire mes contenus, avec succès...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
/*
------------------
Ecrit par Levi Thornton @ Boogybonbon.com, Tous droits réservés, alors n'espérez même pas supprimer cette ligne ou faire croire que c'est vous qui l'avez écrit !
Note de BlackMelvyn: c'est une traduction, je respecte son copyright, et c'est pas moi qui l'ai codé ;)
 
Si vous aimez ce script faites un BL vers http://www.boogybonbon.com/ (Note: mais le domaine est mort...)
------------------
*/
class clsMarkov {
  var $wordList= array();
  var $termTree = array();
 
  function makeList($string) {
    $string = strtolower($string);
    $string =  preg_replace("/[^A-z0-9\s]/i", "", $string);
     preg_match_all("/[A-z0-9]+\S/", $string, $op);
     $this->wordList = $op[0];
     return $this->wordList;
  }
 
  function buildTree() {
    // $searchList = $this->wordList;
    $arraySize = count($this->wordList);
    while ($ns!=$arraySize) {
      $termRoot = current($this->wordList);
      $termKeys = array_keys($this->wordList,$termRoot);
      foreach ($termKeys as $key=>$num) {
        $this->termTree[$termRoot][] = $this->wordList[($num+1)];
      }
      $this->termTree[$termRoot] = array_unique($this->termTree[$termRoot]);
      next($this->wordList);
      $ns++;
    }
 
  }
 
  function phraseWriter($seed, $words) {
    $results = $seed = strtolower($seed);
    if($this->termTree[$seed]) {
    while($nn<=$words) {
      $rndseed = rand(0,count($this->termTree[$seed]));
      if($this->termTree[$seed][$rndseed]) {
        $results .= ' '.$this->termTree[$seed][$rndseed];
        $seed = $this->termTree[$seed][$rndseed];
        $nn++;
      }
    }
    return $results;
    } else return 'No seed match';
  }
}
?>

Voic comment ce script s'utilise

1
2
3
4
5
6
7
8
<?php
$string = "Plus vous avez de mots et meilleur sera le résultat de votre opération sur le texte d'origine
Si vous n'y arrivez pas, il faut persister";
$tmp = new clsMarkov();
$tmp->makeList($string);
$tmp->buildTree();
print $tmp->phraseWriter('vous', 10); // phraseWriter(mot de base, nombre de mots dans le résultat)
?>

Bon voilà, vous avez maintenant le pouvoir de générer un nouveau contenu unique, facilement...
Alors il ne vous reste plus qu'à coder votre meilleur script de scraping et de commencer à vous faire des ronds avec la longue traine ;)
Pour être utile à l'internaute, il est indispensable de faire un bon cloaking afin que le contenu généré ne soit destiné qu'aux moteurs, et le contenu clair et lisible aux internautes recherchant de bonnes informations.

Chapitre suivant dans la série génération de contenu : le scraping, comment ça marche ;)

La stratégie du trou noir, ou Black Hole SEO

Jeudi, novembre 20th, 2008

Aujourd'hui, je me lance dans l'explication d'une stratégie ma foi simple, risquée, mais qui peut être diablement efficace : la stratégie Black Hole SEO.

L'expression Black Hole SEO est reprise dans plusieurs blogs US et UK depuis un certain temps déjà. Cependant, chez les francophones, son utilisation est bien plus rare. C'est pourquoi je vous en parle dans ce billet.Black Hole SEO

C'est un petit mélange de pas mal de défauts qu'ont les humains, appliqués à un site web : avarice, égoïsme, ego surdimensionné etc... mais le but, c'est pas de plaire, mais bien de grimper dans les SERPs :)

Le principe est simple, vous pratiquez sûrement le PageRank sculpting (ou êtes contre, c'est un autre problème), et bien imaginez que vous appliquiez cette méthode à la totalité de vos liens sortant... plus de jus transmis à l'extérieur de votre site, et que des BLs pour vous... Il y a même une méthode pire que je vous dévoilerai plus loin.

Le meilleur exemple, ou du moins le plus connu, est [inline][script type="text/javascript"] [/inline]*. En effet, tous les liens sortant sont en nofollow, et le contenu même du site fait qu'il récolte un paquet de backlinks.
La recette fonctionne bien vus les rankings qu'ils ont ;)

On pourrait donc imaginer implémenter cette technique à un site que vous souhaitez faire grimper petit à petit, lentement, discrètement et méchamment :lol: Il suffit de lever son armée de générateurs de backlinks, et ne laisser sortir du site cible que des liens pointant vers vos sites et ceux de vos amis (ça c'est du camouflage pour ne pas être trop suspect aux yeux des moteurs...).

Voilà, vous pouvez maintenant vous adonner à cette technique pour faire grimper vos sites petit à petit dans les résultats des moteurs.

Attention enfin, il y a des précautions à prendre.... Veillez à ne montrer aucuns liens entre votre site cible et les sites que vous boostez grâce au camouflage.

* ce lien a été écrit avec une simple instruction Javascript, il n'apparaîtra pas aux yeux des moteurs (regardez la source). Ici aussi, il faudra prendre des précautions, la manière dont j'ai effectué l'écriture est très suspecte, surtout aux yeux de l'ordinateur quantique qui va vérifier le code source de ma page pour la qualifier... alors soyez vigilents et surtout créatifs !