Rediriger Googlebot, Googlebot-Image et les visiteurs venant de Google

02 Mai 2009  

 Rediriger Googlebot, Googlebot-Image et les visiteurs venant de Google

Ce script est fait pour les anti-Google !

Il provoque des redirections selon les 4 situations suivantes :
1) Googlebot visite la page : on l'envoie vers une page
2) Googletbot-Image visite la page : on l'envoie vers une page
3) un utilisateur visite la page en venant de Google : on le redirige vers la page affichant les résultats pour la même requête mais dans Yauba, Yahoo ou Ixquick
4) un utilisateur visite la page en ne venant pas de Google : on le redirige vers une page

Toutes les URL sont choisies au hasard parmi des arrays (tableaux) associatifs, et les redirections sont permanentes (code 301 du protocole HTTP).

Au pire, on affiche une page HTML.

Une partie du code vient de l'article http://www.cooldev.net/article-93-ya-pas-que-google-dans-la-vie.html de Romain Follet.

Attention ! Etant donné que ce script agit en fonction du moteur, son usage relève d'une stratégie de référencement comprenant des pratiques de dissimulation. Vous risquez d'être banni de l'index de Google. Je vous suggère de sacrifier un sous-domaine de votre site à ce script si vous désirez l'utilisez sans risque. De plus, la redirection du visiteur sans l'avertir est une pratique anti-ergonomique, à éviter !

Édition dimanche 31 mai 2009 :
* les redirections sont temporaires (sinon Google ne repasserait pas) ;
* détection de Google par IP et hôte DNS (bien plus fiable que la signature de l'agent-utilisateur) ;
* suppression de la redirection en meta refresh pour les AU non-Google.

Page de sauvegarde du script (au cas où Google voudrait placer celle-ci sur liste-noire).
poujolrost-mathias 02 Mai 2009
# Catégorie Compatibilité Nombre de vues Site Archive
   Google PHP 4, PHP 5, PHP 7 7 764  

       Code Source PHP


 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 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    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
 89    
 90    
 91    
 92    
 93    
 94    
 95    
 96    
 97    
 98    
 99    
 100    
 101    
 102    
 103    
 104    
 105    
 106    
 107    
 108    
 109    
 110    
 111    
 112    
 113    
 114    
 115    
 116    
 117    
 118    
 119    
 120    
 121    
 122    
 123    
 124    
 125    
 126    
 127    
 128    
 129    
 130    
 131    
 132    
 133    
 134    
 135    
 136    
 137    
 138    
 139    
 140    
 141    
 142    
 143    
 144    
 145    
 146    
 147    
 148    
 149    
 150    
 151    
 152    
 153    
 154    
 155    
 156    
 157    
 158    
 159    
 160    
 161    
 162    
 163    
 164    
 165    
 166    
 167    
 168    
 169    
 170    
 171    
 172    
 173    
 174    
                               
<?php
/**************************************************************************************/
/*
     Titre  : Rediriger Googlebot, Googlebot-Image et les visiteurs venant de Google                                      
                                                                                                                          
     URL    :  
     http://phpsources.org/code/php/google/512_rediriger-googlebot-googlebot-image-et-les-visiteurs-venant-de-google
     Auteur         : poujolrost-mathias                                                                                  
     Date edition   : 02 Mai 2009                                                                                         
*/
/**************************************************************************************/
 
 
/* ETAPE 1 : détection de la provenance de Google et récupération de la req. */
/* le visiteur vient-il de Google ? */ 
if ( isset ($_SERVER["HTTP_REFERER"]) && 
preg_match('!^http://(www|images)\.google\.[a-z]{2,3}(\.[a-z]{2,3})?/!i'
$_SERVER["HTTP_REFERER"]) )
    { $isGoogleReferer true; } 
else     { $isGoogleReferer false; } 
/* si il vient de Google on capture sa requête (param. q dans l'URL) */ 
if ( $isGoogleReferer && preg_match ('!q=([^\&#]*)!i',$_SERVER["HTTP_REFERER"],
$matches) )
    { $googleQuery $matches[1]; } 
else     { $googleQuery null; } 
/* si la req. Goog. de l'internaute été récupéré, on la rend utilisable */ 
if ( $googleQuery )
    { $googleQuerySanitize =  preg_replace('![^a-z0-9éèàùçÇÉÀÈÙêÊ\s]!i'
' 'rawurldecode($googleQuery) );
$google str_replace("+"" "$googleQuerySanitize); } 
else     { $googleQuery ''; } 
// FIN ETAPE 1 (détection de Google si c'est la provenance) 
// crédit pour cette partie : la majorité du code ci-dessus est une 
// réécriture plus simple d'un bout de code de Romain Follet : 
// http://www.cooldev.net/article-93-ya-pas-que-google-dans-la-vie.html 
// merci à lui pour ce morceau de code :D 
// merci à lui pour ce morceau de code :D
/* ETAPE 1 BIS : détection de Google par l'IP ou l'hôte DNS */
$ip strval($_SERVER['REMOTE_ADDR']);  // conversion en string
$host gethostbyaddr($ip);
$GoogleByHost false;
$GoogleByIP false // valeurs par défaut
if (preg_match("/crawl-66-249-[\d]{1,3}-[\d]{1,3}\.googlebot\.com/"$host))
    {$GoogleByDNS true;}
if (preg_match("/66\.249\.[\d]{1,3}\.[\d]{1,3}/"$ip))
    {$GoogleByIP true;}
// FIN ETAPE 1 BIS
// crédits : http://www.actulab.com/identification-des-robots.php
// et : http://www.robots.darkseoteam.com/
// ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 
 
/* ETAPE 2 : définition des URL de redirection */
/* URL vers lesquelles Googlebot-Image sera redirigé */
$URLsPourGooglebotImage = array( 
"http://www.uneurl.net",
"http://www.uneurl.net",
"http://www.uneurl.net"
); 
/* URL vers lesquelles Googlebot sera redirigée */
$URLsPourGooglebot = array(
"http://www.uneurl.net",
"http://www.uneurl.net",
"http://www.uneurl.net"
); 
 
/* construction de la même req. dans d'autres moteurs et métamoteurs */
$memeRequeteMaisDansYauba "http://fr.yauba.com/?q={$googleQuery}&target=all";
$memeRequeteMaisDansYahoo ="http://fr.search.yahoo.com/search?p={$googleQuery}";
$memeRequeteMaisDansIxquick "http://ixquick.com/do/metasearch.pl?query=
{$googleQuery}&cat=web&pl=ff&language=francais";
/* URLS vers lesquelles les visiteurs venant de Goog. seront redirigés*/
$UrlsPourVisiteurVientDeGoogle = array(
"$memeRequeteMaisDansYauba",
"$memeRequeteMaisDansYauba",
"$memeRequeteMaisDansYauba",
"$memeRequeteMaisDansYauba",
"$memeRequeteMaisDansYauba",
"$memeRequeteMaisDansYahoo"
"$memeRequeteMaisDansYahoo"
"$memeRequeteMaisDansYahoo",
"$memeRequeteMaisDansIxquick"
"$memeRequeteMaisDansIxquick"
); // Yauba 50%, Yahoo 30%, Ixquick 20%
/* URL pour les les autres visiteurs */
$UrlsPourVisiteurNeVientPasDeGoogle = array( 
"http://www.uneurl.net",
"http://www.uneurl.net",
"http://www.uneurl.net"
); 
// FIN ETAPE 2 (définition des URL de redirection )
// ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
/* ETAPE 3 : détection de l'agent-utilisateur (user-agent)  */
/* on cherche "Googlebot-Image" ou "Googlebot" dans la signature de l'UA */
$IsGooglebotImage strpos($_SERVER["HTTP_USER_AGENT"],"Googlebot-Image");
$IsGooglebot strpos($_SERVER["HTTP_USER_AGENT"],"Googlebot");
// FIN ETAPE 3
// ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
/* ETAPE 4 : redirection */
/* si l'agent-utilisateur est Googlebot ou Googlebot-Image */
if ($GoogleByDNS || $GoogleByIP || $IsGooglebot !== false
{
    /* si l'agent-utilisateur est Googlebot-Image */ 
    if ($IsGooglebotImage !== false
    {
            /* choix d'une URL au hasard */
            $indice array_rand($URLsPourGooglebotImage);
            $destinationFinale $URLsPourGooglebotImage[$indice]; 
    }
    elseif ($GoogleByIP || $GoogleByDNS)
    {
            /* choix d'une URL au hasard */
            $indice array_rand($URLsPourGooglebot);
            $destinationFinale $URLsPourGooglebot[$indice];
    }
    /* si l'agent-utilisateur est Googlebot (normal) */
    else
    {
            /* choix d'une URL au hasard */
            $indice array_rand($URLsPourGooglebot);
            $destinationFinale $URLsPourGooglebot[$indice];
    }
    
/* éxécution finale en cas de visite de Google */ 
/* redirection permanente + affichage (au cas où) */ 
header("Location: ".$destinationFinale."",TRUE,302);    
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="mis">
<head>
    <title>Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     <meta http-equiv="refresh" content="0;URL='.$destinationFinale.'">
</head>
<body>
<p><a href="'.$destinationFinale.'" rel="me">mon site web</a>.</p>
</body>
</html>
';
// FIN si l'agent-utilisateur est Googlebot ou Googlebot-Image 
/* si l'agent-utilisateur n'est aucun des Googlebots ci-dessus */
else 
{
    /* si le visteur vient de Google */
    if ($isGoogleReferer && $googleQuery
    {
            $indice array_rand($UrlsPourVisiteurVientDeGoogle);
            $destinationFinale $UrlsPourVisiteurVientDeGoogle[$indice];
    }
    /* si le visteur ne vient PAS de Google */
    else 
    {
            $indice array_rand($UrlsPourVisiteurNeVientPasDeGoogle);
            $destinationFinale $UrlsPourVisiteurNeVientPasDeGoogle[$indice];
    }
/* éxécution finale de la redirection */
header("Location: ".$destinationFinale."",TRUE,302);
}
// FIN ETAPE 4 (redirection) 
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- 
exit;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
    <title>Prénom Nom</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p><a href="http://wwww.monsiteweb.net" rel="me">mon site web</a>.</p>
</body>
</html>

...  Manuel PHP - Fonctions du code source

   php.net  Description Versions PHP OUTIL
   array Crée un tableau PHP 4, PHP 5, PHP 7
   array_rand Prend une ou plusieurs valeurs, au hasard dans un tableau PHP 4, PHP 5, PHP 7
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7
   exit Affiche un message et termine le script courant PHP 4, PHP 5, PHP 7
   gethostbyaddr Retourne le nom d'hôte correspondant à une IP PHP 4, PHP 5, PHP 7
   header Envoie un en-tête HTTP PHP 4, PHP 5, PHP 7
   isset Détermine si une variable est affectée PHP 4, PHP 5, PHP 7
   preg_match Expression rationnelle standard PHP 4, PHP 5, PHP 7
   preg_replace Rechercher et remplacer par expression rationnelle standard PHP 4, PHP 5, PHP 7
   rawurldecode Décode une chaîne URL PHP 4, PHP 5, PHP 7
   strpos Trouve la position d'un caractère dans une chaîne PHP 4, PHP 5, PHP 7
   strval Récupère la valeur d'une variable, au format chaîne PHP 4, PHP 5, PHP 7
   str_replace Remplace toutes les occurrences dans une chaîne PHP 4, PHP 5, PHP 7


  • L'ajout de commentaire est libre et ne demande pas d'inscription,
  •   invité

nous vous encourageons à contribuer à l'utilisation de PHP en ajoutant vos remarques.

[5]

  • ...

    KOogar

    04 Mai 2009 à 06:53

    J'ai mis 9 comme note car le code est complet. J'aurais quand meme éviter de mettre des metas refresh qui sont blacklistés par Yahooo et MSN. Ca etant e je suis entierement d'accord avec toi; il n'y a pas que Google dans la vie.

    ton code s'apparente à du cloaking mais vu que c'est pour refouler Google, ca passe très bien.

    Pour empecher google de venir tu peux aussi procéder avec le fichier robots.txt placé à la racine du site

    User-agent: Googlebot-Image
    Disallow: /

    User-agent: Googlebot
    Disallow: /

  • ...

    Poujolrost-mathias

    31 Mai 2009 à 17:41

    Merci :D

    Je viens de faire une importantes mise à jour (les nouveautés sont signalées).

    C'est tout-à-fait de la tromperie, je le revendique ! Au niveau du fichier robots.txt, j'utilise carrément le suivant :
    User-Agent: Googlebot
    Disallow: /
    Allow: /index.php

    User-Agent: Googlebot-Image
    Disallow: /
    Allow: /index.php

    User-agent: Mediapartners-Google
    Disallow: /

    User-agent: Adsbot-Google
    Disallow: /

  • ...

    Invité

    05 Juin 2009 à 17:42

    quel est le but de "refouler google ?"
    C'est un choix politique ?
    Moi qui fait mes premiers pas dans le référencement... je ne comprend pas.

  • ...

    Poujolrost-mathias

    21 Aout 2009 à 09:41

     Oui, c'est "politique" : refuser de confier tout son contenu à Google et prouver que l'on peut exister sans lui.
    Il s'agit aussi de s'affranchir ("s'indépendantiser") de lui.
    Pour moi, c'est un vrai kiff de s'exclure de lui, sachant que cela fait aussi du contenu en réserve en cas de bad buzz contre moi : il me suffirait alors d'autoriser Google à indexer mes contenus, pour en partie contrer les contenus négatifs contre moi.
    Mais pour revenir sur tes débuts en référencement, oublie cette pratique : elle est dangereuse et as efficace (évidemment).
    Regarde plutôt du côté de ce tutoriel en référencement http://www.dev3w.com/tutoriel-referencement.htm , et ce classement des 30 annuaires francophones les plus efficaces : http://www.labo.atypicom.fr/actualite-du-referencement/annuaires/le-classement-des-30-premiers-annuaires-de-site-juin-2009-2009060301.html .

  • ...

    Invité

    10 Juin 2014 à 10:58

    Merci pour ce script qui m'a l'air très complet !
    Par contre, j'ai du mal à comprendre l'intérêt de la variable $GoogleByHost (définit ligne 54) vu que tu ne l'utilises nul part ailleurs. Est-ce que c'est en fait la définition de la variable $GoogleByDNS ?