Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SAVOIR SI LE VISITEUR EST UN ROBOT D'UN MOTEUR DE RECHERCHE


Information sur la source

Catégorie :Réseau & Internet Classé sous : ip, googlebot, bot, robot, cloaking Niveau : Débutant Date de création : 29/04/2007 Date de mise à jour : 29/06/2007 15:11:39 Vu : 6 295

Note :
6,5 / 10 - par 2 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (37)
Ajouter un commentaire et/ou une note


Description

Bonjour à tous,

J'ai développé cette source afin d'éviter de compter les visites des robots dans mes compteurs de visites/visiteurs/téléchargements.

Cette fonction renvoie true si le visiteur est un robot d'un moteur de recherche. L'analyse se fait sur l'adresse IP du visiteur, donc si l'adresse IP d'un des robot vient à changer le script sera inefficace, c'est pourquoi il faut penser à maintenir à jour la liste des adresses IP (tous les 6 mois je pense)


La liste que j'ai récupérée vient d'ici :
http://www.actulab.com/identification-des-robots.php
(un peu vieille, je sais pas si certaines adresses ont changées, si vous savez précisez le, merci ;)
 

Source

  • // Renvoie TRUE si le visiteur de la page est un robot d'un moteur de recherche
  • function IsVisitorBot() {
  • // Tableau des adresses ip
  • $IPtab[] = '66.249.'; // Googlebot
  • $IPtab[] = '207.68.146.'; // MSN Bot
  • $IPtab[] = '65.54.188.'; // MSN Bot
  • $IPtab[] = '66.196.'; // Yahoo
  • $IPtab[] = '68.142.'; // Yahoo
  • $IPtab[] = '195.101.94.'; // Voila
  • $IPtab[] = '64.241.243.65'; // Wisenut
  • $IPtab[] = '209.249.67.1'; // Wisenut
  • $IPtab[] = '64.241.242.177'; // Wisenut
  • $IPtab[] = '66.77.73.'; // Fast
  • $IPtab[] = '62.212.117.198'; // Deepindex
  • $IPtab[] = '65.214.36.'; // Teoma
  • $IPtab[] = '65.214.38.10'; // Teoma
  • $IPtab[] = '212.127.141.180'; // Whalhello
  • $IPtab[] = '213.73.184.'; // Whalhello
  • $IPtab[] = '216.243.113.1'; // Gigablast
  • $IPtab[] = '217.205.60.225'; // Mirago
  • $IPtab[] = '62.119.21.157'; // picsearch
  • $IPtab[] = '193.218.115.6'; // Szukacz
  • $IPtab[] = '210.59.144.149'; // Openfind
  • $IPtab[] = '66.237.60.22'; // Openfind
  • $IPtab[] = '218.145.25.'; // Naver
  • // Vérifie chaque adresse
  • if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {
  • for($t = 0, $max = count($IPtab); $t < $max; ++$t) {
  • if (strpos($_SERVER['REMOTE_ADDR'], $IPtab[$t]) === 0)
  • {
  • return true;
  • }
  • }
  • }
  • return false;
  • }
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur de recherche
function IsVisitorBot() {

	// Tableau des adresses ip
	$IPtab[] = '66.249.';			// Googlebot
	$IPtab[] = '207.68.146.';		// MSN Bot
	$IPtab[] = '65.54.188.';		// MSN Bot
	$IPtab[] = '66.196.';			// Yahoo
	$IPtab[] = '68.142.';			// Yahoo
	$IPtab[] = '195.101.94.';		// Voila
	$IPtab[] = '64.241.243.65';		// Wisenut
	$IPtab[] = '209.249.67.1';		// Wisenut
	$IPtab[] = '64.241.242.177';	// Wisenut
	$IPtab[] = '66.77.73.';			// Fast
	$IPtab[] = '62.212.117.198';	// Deepindex
	$IPtab[] = '65.214.36.';		// Teoma
	$IPtab[] = '65.214.38.10';		// Teoma
	$IPtab[] = '212.127.141.180';	// Whalhello
	$IPtab[] = '213.73.184.';		// Whalhello
	$IPtab[] = '216.243.113.1';		// Gigablast
	$IPtab[] = '217.205.60.225';	// Mirago
	$IPtab[] = '62.119.21.157';		// picsearch
	$IPtab[] = '193.218.115.6';		// Szukacz
	$IPtab[] = '210.59.144.149';	// Openfind
	$IPtab[] = '66.237.60.22';		// Openfind
	$IPtab[] = '218.145.25.';		// Naver

	// Vérifie chaque adresse
	if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {
		for($t = 0, $max = count($IPtab); $t < $max; ++$t) {
			if (strpos($_SERVER['REMOTE_ADDR'], $IPtab[$t]) === 0)
			{
			    return true;
			}
		}
	}
	return false;
}

Conclusion

Si vous avez une liste plus à jour des adresses IP, merci de la proposer ;-)

En esperant que ça vous serve
MadMatt
 

Historique

29 avril 2007 18:22:35 :
Optimisation de la boucle
29 avril 2007 21:04:19 :
Optimisation
30 avril 2007 14:22:32 :
Optimisation
30 avril 2007 15:22:10 :
Re optimisation
30 avril 2007 20:10:13 :
Correction d'un bug
01 mai 2007 22:05:50 :
Petit bug de mise à jour
29 juin 2007 15:11:39 :
correction d'un bug

Commentaires et avis

signaler à un administrateur
Commentaire de Astalavista le 29/04/2007 02:48:41

Pas mal, mais :
Utilise plutot un fichier pour ta liste d'adresses, et  pour vérifier utilse plûtot ceci :
$IP = $REMOTE_ADDR;
// Vérifie chaque adresse
foreach( $IPtab as $IP_Rechercher)
if((strrpos($IP, $IP_Rechercher) === 0)return FALSE;
return TRUE;

signaler à un administrateur
Commentaire de MadM@tt le 29/04/2007 13:35:49

Merci pour le commentaire, par contre j'aurais besoin d'un peu d'explication :
pourquoi privilegier foreach plutot que for ? c'est plus rapide ?

Et de ton code j'en déduis que l'instruction "return" fait terminer la fonction ? (ce qui effectivement est bien mieux que ce que j'ai fait)

Pour le fichier, bonne idée, mais si ce code est appelé à chaque page vue ça risque de faire perdre beaucoup de temps s'il faut que j'ouvre le fichier à chaque fois, et que je parse le contenu.

Merci

signaler à un administrateur
Commentaire de neigedhiver le 29/04/2007 17:55:25

Salut,

Je ne crois pas que foreach() soit tellement plus rapide que for().
Par contre, la syntaxe de ta boucle est à proscrire à tout prix, parce que tu utilises la fonction count à chaque itération, ce qui est très couteux en performances.

Dans ton cas, foreach() est plus adapté car sa syntaxe est plus claire et tout aussi efficace.

Pour garder for() il faudrait faire comme ceci :
$nb = count($IPtab);
for($t = 1; $t <= $nb; $t++) {

La syntaxe $t++ est équivalente à $t = $t +1, mais plus courte, tout aussi claire et plus performante puisqu'elle ne fait appel qu'une seule fois à la variable (qui est lue chaque fois dans la pile, ne pas l'oublier) et qu'elle est optimisée pour cette opération...

signaler à un administrateur
Commentaire de MadM@tt le 29/04/2007 18:18:43

Ok merci beaucoup pour les infos, php a tellement de fonctions pour faire la meme chose qu'il est difficile de savoir laquelle utiliser.

Je vais m'empresser de modifier ça, surtout que j'utilise cette méthode dans toutes mes boucles for de mon site ^^

signaler à un administrateur
Commentaire de MadM@tt le 29/04/2007 18:24:47

Voilà c'est mis à jour.

Par contre je me pose la question concernant la recherche de l'ip dans l'ip du visiteur :
// Récupère la partie gauche de la chaine
$left = substr($IP, 0, strlen($IPtab[$t]));
if ($left == $IPtab[$t]) {
   $Return = true;
   break;
}

Je trouve ça bete de faire un substr à chaque boucle, mais comment faire une comparaison de chaine en partant à gauche de la chaine ?
(car les adresses IP du tableau sont de la form 168.69. mais avec un strpos il peut me le trouver dans une adresse de la forme 145.168.69....)

signaler à un administrateur
Commentaire de neigedhiver le 29/04/2007 20:44:42

Re,

Non non, strpos() est une très bonne solution, si on ne se contente pas de vérifier que la chaine a été trouvée, mais si on vérifie aussi la position (valeur retournée par strpos() justement !). En plus, c'est plus court :

if (strpos($IPtab[$t], $IP) === 0)
{
    return true;
}

Return va automatiquement sortir de la fonction et retourner true quand la chaine est trouvée.

signaler à un administrateur
Commentaire de MadM@tt le 29/04/2007 21:02:51

Ahhhh bien sur !

Merci pour le tuyeau ;-)

signaler à un administrateur
Commentaire de Astalavista le 30/04/2007 01:37:57

Je voit que j'ai aidé :), je te remercie  neigedhiver d'avoir affirmer ce que j'ai marqué ...

Ha oui, il y a encore une petite erreur :
for($t = 1; $t <= $max; $t = $t++)
S'utilise plutôt comme ca :
for($t = 1; $t <= $max; $t++)

ton count doit s'écrire en minuscule

à mon avis, le foreach est un peut plus adapté.
Si un jour tu supprime la clef 19 (par exemple), il faudra changer toutes tes autres clef.
Mais bon, si tu insiste pour utiliser ton for, ajoute tes IP de cette façon :
$IPtab[] = '66.249.';
$IPtab[] = '207.68.146.';
L'ajout se fera à la suite, et 0 par défaut.

signaler à un administrateur
Commentaire de neigedhiver le 30/04/2007 06:44:13

Salut,

En fait, le mieux, pour la déclaration du tableau, c'est encore array() :

$IPtab = array(
    '66.249.', // Googlebot
    '207.68.146.',  // MSN Bot
    '65.54.188.', // MSN Bot
    etc
);

Je trouve que c'est encore plus propre et plus joli.

signaler à un administrateur
Commentaire de kankrelune le 30/04/2007 13:57:31


for($t=1,$nb=count($IPtab);$t<=$nb;++$t)

Histoire d'optimiser encore un peu... perso je ne suis pas fan de cette méthode car si le bot à changé d'adresse ip ou s'il n'est pas répertorié ton script ne sert à rien... le mieux serait de faire un lien caché vers une page ou de compter le temps entre chaque ouverture de page et de stocker l'ip s'il sagit d'un bot... .. .

@ tchaOo°

signaler à un administrateur
Commentaire de kankrelune le 30/04/2007 13:58:45

Ah au fait... vire moi ce sale $REMOTE_ADDR et remplace le par $_SERVER['REMOTE_ADDR']... .. . ;o)

@ tchaOo°

signaler à un administrateur
Commentaire de MadM@tt le 30/04/2007 14:24:59

Voilà mis à jour ^^

C'est sympa d'avoir du monde pour repasser sur son code ;) merci beaucoup

signaler à un administrateur
Commentaire de neigedhiver le 30/04/2007 14:40:28

Je sais pas si tu imagines à quel point c'est sympa de faire des commentaires qui ne sont pas mal pris et qui servent à quelque chose...

signaler à un administrateur
Commentaire de MadM@tt le 30/04/2007 14:58:42

oui je te comprend, je suis assez actif sur vbfrance je vois de quoi tu parle ^^

signaler à un administrateur
Commentaire de neigedhiver le 30/04/2007 15:12:43

Je me rends compte que j'ai pas écrit du tout ce que je voulais dire... Je suis fatigué, j'ai plus l'habitude de bosser.
Euh donc je voulais dire que c'est sympa quand les gens prennent bien les commentaires et s'en servent de manière constructive, sans se vexer, etc.
Mais je crois que tu avais compris...
Bonne continuation.

signaler à un administrateur
Commentaire de kankrelune le 30/04/2007 15:13:35

Pareil que neigedhiver... .. . ;o)

Pour finir plutot que de faire...

$IP = $_SERVER['REMOTE_ADDR']
$max = count($IPtab) - 1;
for($t = 0; $t <= $max; $t++) {
    if (strpos($IPtab[$t], $IP) === 0)
    {
        return true;
    }
}
return false;

autant faire

if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']))
{
    for($t=0,$max=count($IPtab);$t<$max;++$t)
    {
        if (strpos($IPtab[$t], $_SERVER['REMOTE_ADDR']) === 0)
           return true;
    }
}
return false;

;o)

@ tchaOo°

signaler à un administrateur
Commentaire de MadM@tt le 30/04/2007 15:22:52

Ok c'est mis à jour, merci ;-), par contre j'en déduis que le $t++ et ++$t c'est la meme chose.

signaler à un administrateur
Commentaire de kankrelune le 30/04/2007 15:34:38

pas exactement... en fait $i++ c'est de la post incrémentassion et ++$i de la pré incrementassion... .. .

Dans le premier cas l'instruction, si instruction il y a, est exécutée puis la variable est incrémentée de 1... dans le second cas la variable est incrémentée puis l'instruction est exécutée... exemple...

$a = 1;
$b = $a++;

echo '$a = '.$a.',$b = '.$b; // affichera  $a = 2,$b = 1

---------------

$a = 1;
$b = ++$a;

echo '$a = '.$a.',$b = '.$b; // affichera  $a = 2,$b = 2

Hormis cette petite différence la pré incrémentassion est légèrement plus rapide que la post incrémentassion car en pré inc php ne se pose pas de question et incrémente directement la variable alors qu'en post inc php garde en mémoire qu'il doit incrémenter la variable après avoir exécuté l'instruction en cours... .. . ;o)

@ tchaOo°

signaler à un administrateur
Commentaire de neigedhiver le 30/04/2007 15:36:08

Je peux me permettre une remarque ?
empty($var) retourne true si :
- la variable $var est vide ( $var = '' )
- la variable $var n'est pas définie

Il me semble donc que le test isset($_SERVER['REMOTE_ADDR']) est inutile : si la variable $_SERVER['REMOTE_ADDR'] n'est pas vide, alors elle est définie.

signaler à un administrateur
Commentaire de MadM@tt le 30/04/2007 16:44:15

Ok mais alors si mon tableau va de 0 à count() - 1, il faut donc une boucle :
for($t = 0, $max = count($IPtab) - 1; $t < $max; ++$t)  ??

signaler à un administrateur
Commentaire de kankrelune le 30/04/2007 16:49:35

@ neigedhiver... oui ça marche mais syntaxiquement parlant c'est incorrect car tu teste si une variable non instanciée est vide... .. .

@ MadM@tt... non... soit tu fais...

for($t=0,$max=count($IPtab)-1;$t<=$max;++$t)

soit tu fais

for($t=0,$max=count($IPtab);$t<$max;++$t)

la deuxième étant la plus simple... .. .

@ tchaOo°

signaler à un administrateur
Commentaire de neigedhiver le 30/04/2007 17:10:16

Alors je vais encore chipoter (j'adooooore ça).

if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']))

Là aussi, syntaxiquement, tu vérifies si une variable potentiellement non instanciée est vide... Le fait de vérifier qu'elle existe ne la fait pas exister si tel n'est pas le cas...
Puor bien faire, il faudrait alors faire un autre test avec empty() dans le bloc if.
Non ?

signaler à un administrateur
Commentaire de Astalavista le 30/04/2007 19:04:13

kankrelune : Moi je me pose pas de question j'aurais pris un foreach et c'est bon ... il a été inventer pour le PHP autant l'utiliser ... non ?

signaler à un administrateur
Commentaire de MadM@tt le 30/04/2007 20:08:54

@Kankrelune > Ok j'avais oublié la nuance < et <= merci

signaler à un administrateur
Commentaire de Skreo le 01/05/2007 10:00:35

MadM@tt, ta méthode est lourde et pas très fiable (je ne pense pas que la liste des ips soit à jour).
Je conseillerais plutôt de vérifier l'user_agent qui, lui, est toujours défini par les bots des moteurs de recherche.
Voilà ce que je fais :

$isBot = preg_match('#googlebot|mediapartners|slurp|voilabot|msnbot|zyborg|fast-webcrawler|deepindex|teoma|directhit|walhello|gigabot|henrilerobotmirago|psbot|szukacz|openbot|dloader#i', $_SERVER['HTTP_USER_AGENT']);

signaler à un administrateur
Commentaire de kankrelune le 01/05/2007 12:08:07

@ neigedhiver... non car la première instruction de la condition étant fausse la seconde n'est pas vérifiée... .. .

@  Astalavista... pas forcement... foreach travail sur une copie du tableau, for non... après c'est une question de perf et de façon de faire... pour gagner en rapidité j'aurais tendance à faire...

$i = -1;
while(isset($IPtab[++$i]))
{
   ...
}

@ tchaOo°

signaler à un administrateur
Commentaire de MadM@tt le 01/05/2007 14:09:48

"Je conseillerais plutôt de vérifier l'user_agent qui, lui, est toujours défini par les bots des moteurs de recherche."
>> Si c'est bien défini par tous les bots alors oui, mais j'avais lu que c'était pas toujours le cas...

signaler à un administrateur
Commentaire de neigedhiver le 01/05/2007 19:48:12

@kankrelune : Bon sang de bon soir... Merci... Je ne savais pas exactement étaient évaluées les conditions multiples par if... J'ai fait un test pour vérifier tes dires (c'est pas que j'ai pas confiance, mais là, au moins, je peux me permettre de l'affirmer à mon tour si besoin, puisque j'ai expérimenté).
Donc merci pour ces petits détails qui enrichissent tous les jours ma culture de geek...

signaler à un administrateur
Commentaire de amery le 02/05/2007 16:30:54

J'ai essayé la fonction, mais ça n'a pas l'air de fonctionner. Par exemple, l'adresse Ip 66.249.66.133 n'est pas reconnu comme celle d'un moteur.

Amery

signaler à un administrateur
Commentaire de cpp4ever le 07/05/2007 14:05:43

vous etes au courant que le module php a des centaines de fonctions prédéfinie.
par exemple in_array :

if (in_array ($_SERVER['REMOTE_ADDR'], $IPtab)) {
return TRUE;
}
else {
return FALSE;
}

quant aux ip des bots je crois qu'il faut faire le tour des moteurs de recherche.

signaler à un administrateur
Commentaire de kankrelune le 07/05/2007 15:07:28

@ cpp4ever... oui merci ça fait un bail que je connais in_array()... lol... regarde bien la source avant de faire ce genre de réflection... tu remarquera que le tableau $ipTable contiens des plages d'ip et non pas que des ip complètes... et dans ce cas in_array() ne sert strictement à rien... à la limite preg_grep() aurait fait l'affaire mais perso je préfère la boucle... .. .

@ tchaOo°

signaler à un administrateur
Commentaire de cpp4ever le 07/05/2007 15:13:25

oups, effectivement
faut m'excuser, je croise tous le temps des coders
qui ne se donne jamais la peine d'aller voir le manuel de php,
que j'ai pris de mauvaises habitudes.

signaler à un administrateur
Commentaire de SrDjay le 29/06/2007 10:34:50

Bon día,

Une petite chose:
remplace : strpos($IPtab[$t], $_SERVER['REMOTE_ADDR'])
par : strpos($_SERVER['REMOTE_ADDR'],$IPtab[$t])
(Voila pourquoi ca marche pas amery...)  

Et pour tout ce qui souhaitent mettre à jour les IP:
http://www.crawltrack.fr/robot/index.php?navig=8&period=3&site=2

Bonne continuation MadM@tt,

Saludos,

signaler à un administrateur
Commentaire de MadM@tt le 29/06/2007 15:12:39

Merci pour ta précision, c'est mis à jour.

Et merci pour ta liste d'IP

signaler à un administrateur
Commentaire de kiki67100 le 10/07/2007 15:50:18

Garde les ips c'est plus sûr que les user agent
Simpa la source ;)

(tu aurais pus mettre tout les ips dans un fichier aussi )

@++

signaler à un administrateur
Commentaire de sy125gi le 10/07/2007 19:20:59

Et en fait, il faut metre ce fichier à quel endroit du site?

signaler à un administrateur
Commentaire de Anto1982 le 10/10/2008 12:20:54

Ne peut-on pas imaginer un "piège" à robots. J'en ai codé un (le code est en ligne sur le site).
Le principe est de récupérer l'IP sur une page cachée (lien gif transparent dans le coin de la page)

=> Aucun humain ne visitera cette page (donc on a une liste des robots).

Ensuite, pour savoir si le robot est "clean" j'ai imaginé un piège en utilisant 2 pages dissimulées dont une seule est interdite dans le fichier robots.txt.

Dans le cas ou aucune de ces 2 pages n'est visitée et que le nombre de requetes provenant d'une meme IP dans un espace de temps donné est superieur x, j'estime qu'il s'agit d'un mauvais robot... (dans ce cas, je compte le nombre de requetes sur 5mn par exemple, si le nombre est superieur a 500, il ne s'agit pas d'un humain... si le robot ne visite pas la page dissimulée autorisée, il s'agit donc d'un mauvais robot)

Si le robot visite une page interdite par mon fichier robot, il s'agit également d'un mauvais robot....

Le seul probleme c'est que si un "mauvais" robot se comporte comme un "bon" robot (qu'il suit les directives du fichier robots.txt), je ne peux pas le détecter...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ignorer les ip's de robots indexeurs [ par pyranhaz ] Bonjour,J'aimerais savoir si ce bout de code pourrait indiquer de ne pas bannir le robot si son ip existe dans la bddc'est important pour le référence ::Problème avec mon compteur [ par kodiask ] voilà j'ai un compteur qui compte par raport aux ip des visiteur mai le problème est qu'il ne rentre pas les ip dans la BDD je compren pas pourquoi: v Connaitre l'ip du client ? [ par Joez ] Bonjour, je veux faire un sript PHP qui fonctionne selon l'ip du client ?Est ce possible ?comment recupérer l'ip du cleint en php ? Nom machine [ par Bruto ] j'ai trouvé sur le site php.net la possibilité de récupéré le nom de la machine&lt;?php$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); print $hos recuperer adresse ip: prq une fonction compliquee? [ par brice0306 ] voici une fonction trouvée sur le net:[code]function get_ip() { if($_SERVER) { if($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWA Mauvaise adresse IP retournée [ par xylo2 ] Bonjour,Pour déterminer l'IP de mes visiteurs, j'utilise :if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} els IP/Fichier.txt: Probleme FOPEN [ par skurvy ] Voila mon problem:&lt;?$ip= $_SERVER["REMOTE_ADDR"];// Adresse ip$b= "&lt;br&gt;";// pour nouvelle ligne$chat = file("http://".$ip."/chat.txt"); //ouv if et else en php [ par mediapat ] slt à tousje suis débutant et n'arrive pas à faire un code avec condition.voici le début de mon code source :&lt;? $host = "213.228.13.136"; echo get BANNIR IP [ par Wars007 ] Salut qqun aurais un code php pour bannir une ip???PS:si vous vous y connaissez peut on faire par exemple:------ip.txt--------23.23.23.2324.24.24.24-- BANNIR IP DUN CHAT URGENT [ par Wars007 ] salut je voudrais savoir un code php pour bannir une simple adresse ip dun chat sans connecion mysql.merci :)PS:(je ve le bannir car il floof tlt!)


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 2,012 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.