Catégories
PHP

Un helper cakePHP pour cloaker

Vous avez besoin pour une raison X ou Y d’effectuer un cloaking sur votre application cakePHP ?
Quoiqu’on en dise, le cloaking n’est pas réservé au domaine du BH, même si il est bien plus utilisé pour des raisons de camouflage – voir parfois de camouflet 😉
Je vais donc vous montrer comment réaliser simplement cet acte de bravour grâce à un petit helper.

Bref rappel sur le cloaking

Le cloaking consiste à présenter des versions différentes de votre site en fonction des visiteurs. Il est fortement utilisé pour servir des versions optimisées aux robots (googlebot, slurp, msnbot, …) mais également pour planquer ses liens. Dans ces cas là, il ne faut pas oublier que les robots mettent en cache les versions de vos pages lorsqu’ils les crawlent, à vous donc de faire le nécessaire pour éviter de vous faire gauler.
Cependant, il peut également être utilisé à des fins totalement WH, comme par exemple proposer une version mobile de votre site, rediriger le visiteur sur la langue de son pays (attention dangereux) ou plein d’autres choses encore (mais Google dit que c’est mal alors don’t be evil).

Mise en place

Je ne vais pas m’attarder des heures pour vous expliquer comment faire, si vous souhaitez faire du cloaking, c’est que vous en connaissez les enjeux et les conséquences.
Cependant pour être clair, je n’aime pas faire du cloaking uniquement sur le UA (User Agent) ou sur l’IP, mais je le pratique sur le reverse DNS (je sais ce n’est pas 100% fiable, mais on limite les risques et c’est ultra rapide). Donc si vous souhaitez procéder autrement, c’est à dire check sur le UA ET sur l’IP, à vous d’adapter le code.
Voici donc le code du helper :

<?php
// {app}/views/helpers/cloaker.php
class CloakerHelper extends AppHelper
{
        // J'initialise ici une liste de crawlers les plus "connus", a vous d'enrichir cette liste
	private $crawlers = array("crawl\.yahoo\.net","googlebot\.com", "search\.msn\.com", "crawl\.baidu\.com");
 
 
	function is_bot()
	{
		$ip = $_SERVER['REMOTE_ADDR'];
 
		if(empty($ip))
		return false;
		$name = gethostbyaddr($ip);
 
		if(empty($name))
		return false;
 
		foreach($this->crawlers as $crawler)
		{
			if (preg_match('/^.+'.$crawler.'$/',$name))
			return true;
		}
		return false;
	}
 
}
?>

Ensuite on l’appelle dans le app_controller.php ou simplement dans les controllers ou vous vous en servirez.

<?php
// {app}/app_controller.php
class AppController extends Controller
{
	var $helpers 	= array ('Cloaker');
       .....
}
?>

Et pour l’utiliser dans vos vues, rien de plus simple :

<?php
// {app}/views/votrevue.ctp
if ($cloaker->is_bot() === false)
{
  // Version destinée à l'internaute
}
else
{
  // Version pour les gentils robots
}
?>

Et voila, vous voici prêt pour cloaker simplement avec cakePHP.

16 réponses sur « Un helper cakePHP pour cloaker »

Merci pour le bl :), il manque un petit truc dans ton cloaking pour qu’il soit au top, un indice : googlebot.com.dontbeevil.fr 😉

@Tiger :
Merci du tuyau, dire que je n’y avais même pas pensé !!! Pour ceux qui n’ont pas compris l’indice, préférez une bonne regex a strpos et si vous ne comprenez toujours pas, c’est que vous êtes foutus les gars 😉

@Hank Hulade :
Sérieux mec, full respect, à peu de chose près, c’était mon pseudo Counter-Strike quand j’avais 15 piges (remplace « ade » par « é » dans ton pseudo et tu l’auras).
Lis bien le comm de Tiger qui est un véritable indice (surtout pour contrer les traceurs).

@Tiger & @RDD : comme si c’était l’habitude des webmasters (et assimilés SEO) d’aller tenter de voir si le concurrent fait du cloaking. Tssss !

Super l’astuce, en plus le principe de l’algo n’est pas hyper spécifique à CakePhp, pas d’excuse pour ne pas l’utiliser dans un autre contexte !
Merci pour le partage !

@creer un site:
Exactement, facilement adaptable a n’importe quel script.
De rien 😉

@louer bureau bruxelles
Jusqu’à maintenant je ne me suis jamais fait choper. Donc je ne peux pas te donner les conséquences 😉 Apres tout dépend du cloaking en question.

j’ai remarqué à plusieurs reprises que des connexions provenant de “google », ne provenaient pas des crawl/spider connus …
(parano, je ne suis pas certain)

Est il possible que des « personnes » ou autre bot emprunte des autres apparences pour passer incognito ?

Si c’est le cas, je pense qu’il est préférable que le contenu « cloaké » soit mise en place sur les sites satellites et pas sur le site cible non ?

Sebastien

@depannage mac
Je ne sais pas ce que tu entends par « provenant de google » : UA, IP, autre ?
Parce qu’il est en effet très simple de fournir un faux UA lorsque tu visites un site, c’est pour cette raison qu’il ne faut pas faire de cloaking uniquement sur UA, sinon ça ne sert pas a grand chose (trop facilement contournable).

Je vais donner un tuyau pour effectuer un sage cloaking qui consiste a faire un check sur le reverse-DNS ET sur l’IP. Peut-être que Tiger donnera l’astuce un jour, mais effectuer un cloaking sur un double check est imparable (reverseDNS+IP ou UA+IP).

En ce qui concerne le cloaking sur le site cible, je t’assure que dans certains cas tu es obligé de le faire et pas du tout pour des raisons BH, mais très très WH.

Sinon, oui bien sur, il est toujours préférable d’effectuer ton cloaking sur tes satellites plutôt que sur ton money site.

@Ecig-Shop
De rien, au boulot 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *