Accueil > > > DÉTECTER LES GENTILS ROBOTS POUR BANNIR LES MECHANTS ROBOTS
DÉTECTER LES GENTILS ROBOTS POUR BANNIR LES MECHANTS ROBOTS
Information sur la source
Description
Bonjour, Tout d'abord, ceci est mon premier code publié, je ne sais pas s'il fonctionne, je n'ai pas encore eu l'occasion de le tester et je ne sais pas si mes postulats sont bons. Le but de ce code est de détecter les gentils robots (comme les robots de google pour le référencement) pour exclure/bannir les autres. Attention: Le code suivant est basé sur les postulats suivants (je ne sais pas s'ils sont valables... si un expert passe par la et s'il peut faire des commentaires la dessus, ce serait bien!) 1. Les robots de référencement (les gentils robots) vont automatiquement chercher votre fichier "robot.txt" à la racine de votre site. 2. Les robots vont très vite (plus vite qu'un humain) pour afficher les pages. 3. Un gentil robot ne va pas visiter une page qu'on lui a interdite dans notre fichier "robot.txt". 4. Un gentil robot va suivre (obligatoirement) les liens dans la page web s'ils ne sont pas interdit dans "robot.txt". Les 2 pages dont je vais parler sont des pages dissimulées, accessibles par un lien sur un gif invisible de 1 pixel sur 1 pixel (autrement dit, il faut pas avoir de bol pour qu'un utilisateur humain clique dessus!) - Sur toutes la pages du site, un lien mène à ces pages - Une page (et une seule) est interdite dans le fichier robot.txt Avec ces postulats, je peux dire que dans un laps de temps donné (on va dire 5mn): - Un robot qui visite une page interdite est un mauvais robot (pour ça, il existe déjà des codes sources (meme sur ce site je crois)) - Un robot qui ne visite ni une page interdite ni une page autorisée (toutes les deux dissimulées) pendant un laps de temps de xx minutes (5mn dans mon code) et qui fait xx requetes pendant ce laps de temps est un mauvais robot (en gros, le robot a été programmé pour n'atteindre que certaines pages de votre site). - Un robot qui ne visite pas la page interdite mais qui visite la page autorisée s'identifie comme un gentil robot. A chaque fois qu'on vérifie le comportement du robot, on supprime les entrées anterieures à 5mn pour ne pas bannir par la suite un utilisateur gentil qui aurait récupéré une IP bannie...
Source
- <?php
-
- /* Commentaires
- page 1.html = page interdite par robot.txt et lien caché
- Sur page 1.html, la variable $page=1;
-
- page 2.html = page autorisée mais lien caché
- Sur page 2.html, la variable $page=2;
-
- Table qui sert à ça (à créer):
- ip_ban => ip,1,2,status,requests,timestamp ou "ip,1,2...." sont les noms des champs
- */
-
- //--- Le code suivant est à insérer sur toutes les pages du site. ---\\
-
-
- // définition des attributs pages 1 et 2
- if($page==1)
- { $un="Y"; }
- else
- { $un="N"; }
- if($page==2)
- { $deux="Y"; }
- else
- { $deux="N"; }
-
- // Récupération IP.
- $ip=$_SERVER['REMOTE_ADDR'];
-
- // Définition du temps du bannissement (modifiable à souhait)!
- $ban_time=300 // correspond à 5mn en secondes (5*60)
-
- // Récupération du timestamp actuel:
- $timestamp=time();
-
- // Limite du bannissement
- $ban_limit=$timestamp-$ban_time;
-
- // maximum de requetes
- $max_requests=100;
-
-
- // Connection MYSQL (à customiser selon vos propres paramètres!
- include("Connections/Annuaire.php");
-
- /*
- On supprime toutes les entrées de la table dont le timestamp est inferieur
- à 5mn du timestamp actuel (il ne s'agit pas de bloquer l'accès a des personnes qui récupereraient une ip bannie en se connectant!)
- */
-
- mysql_query("DELETE FROM ip_ban WHERE ip_ban.timestamp<='$ban_limit'");
-
- // Vérification si IP du visiteur est déjà dans notre base:
-
- $verif=mysql_query("SELECT ip,1,2,status,requests,timestamp FROM ip_ban WHERE ip_ban.ip='$ip'");
- $count=mysql_num_rows($verif);
- $data_ip_ban=mysql_fetch_array($verif);
-
- // Si count<>0 alors on vérifie si l'ip est bannie, si oui, on n'affiche pas le contenu de la page demandée
- if($count==0)
- {
- mysql_query("INSERT INTO ip_ban VALUES('$ip','$un','$deux','OK','1','$timestamp')");
- }
- else
- {
- $table_un=$data_ip_ban['1'];
- $table_deux=$data_ip_ban['2'];
- $table_status=$data_ip_ban['status'];
- $table_requests=$data_ip_ban['requests'];
- $table_timestamp=$data_ip_ban['timestamp'];
-
- if($table_un=="Y" || ($table_un=="N" & $table_deux=="N" && $table_requests<$max_requests))
- {
- echo "vilain robot!!!!"
- // et on n'en profite pour ne pas afficher la page!
- }
- else
- {
-
- // on incrémente le nombre de requêtes
- // on remet a jour la valeur du timestamp
- $table_requests=$table_requests+1;
-
- if($table_un=="N" & $un=="Y")
- { mysql_query("UPDATE ip_ban SET 1="Y",requests='$table_requests', timestamp='$timestamp' WHERE ip_ban.ip='$ip'"); }
-
- if($table_deux=="N" & $deux=="Y")
- { mysql_query("UPDATE ip_ban SET 2="Y",requests='$table_requests', timestamp='$timestamp' WHERE ip_ban.ip='$ip'"); }
-
- // ICI LE CONTENU DE VOTRE SITE!
-
- }
- }
- ?>
<?php
/* Commentaires
page 1.html = page interdite par robot.txt et lien caché
Sur page 1.html, la variable $page=1;
page 2.html = page autorisée mais lien caché
Sur page 2.html, la variable $page=2;
Table qui sert à ça (à créer):
ip_ban => ip,1,2,status,requests,timestamp ou "ip,1,2...." sont les noms des champs
*/
//--- Le code suivant est à insérer sur toutes les pages du site. ---\\
// définition des attributs pages 1 et 2
if($page==1)
{ $un="Y"; }
else
{ $un="N"; }
if($page==2)
{ $deux="Y"; }
else
{ $deux="N"; }
// Récupération IP.
$ip=$_SERVER['REMOTE_ADDR'];
// Définition du temps du bannissement (modifiable à souhait)!
$ban_time=300 // correspond à 5mn en secondes (5*60)
// Récupération du timestamp actuel:
$timestamp=time();
// Limite du bannissement
$ban_limit=$timestamp-$ban_time;
// maximum de requetes
$max_requests=100;
// Connection MYSQL (à customiser selon vos propres paramètres!
include("Connections/Annuaire.php");
/*
On supprime toutes les entrées de la table dont le timestamp est inferieur
à 5mn du timestamp actuel (il ne s'agit pas de bloquer l'accès a des personnes qui récupereraient une ip bannie en se connectant!)
*/
mysql_query("DELETE FROM ip_ban WHERE ip_ban.timestamp<='$ban_limit'");
// Vérification si IP du visiteur est déjà dans notre base:
$verif=mysql_query("SELECT ip,1,2,status,requests,timestamp FROM ip_ban WHERE ip_ban.ip='$ip'");
$count=mysql_num_rows($verif);
$data_ip_ban=mysql_fetch_array($verif);
// Si count<>0 alors on vérifie si l'ip est bannie, si oui, on n'affiche pas le contenu de la page demandée
if($count==0)
{
mysql_query("INSERT INTO ip_ban VALUES('$ip','$un','$deux','OK','1','$timestamp')");
}
else
{
$table_un=$data_ip_ban['1'];
$table_deux=$data_ip_ban['2'];
$table_status=$data_ip_ban['status'];
$table_requests=$data_ip_ban['requests'];
$table_timestamp=$data_ip_ban['timestamp'];
if($table_un=="Y" || ($table_un=="N" & $table_deux=="N" && $table_requests<$max_requests))
{
echo "vilain robot!!!!"
// et on n'en profite pour ne pas afficher la page!
}
else
{
// on incrémente le nombre de requêtes
// on remet a jour la valeur du timestamp
$table_requests=$table_requests+1;
if($table_un=="N" & $un=="Y")
{ mysql_query("UPDATE ip_ban SET 1="Y",requests='$table_requests', timestamp='$timestamp' WHERE ip_ban.ip='$ip'"); }
if($table_deux=="N" & $deux=="Y")
{ mysql_query("UPDATE ip_ban SET 2="Y",requests='$table_requests', timestamp='$timestamp' WHERE ip_ban.ip='$ip'"); }
// ICI LE CONTENU DE VOTRE SITE!
}
}
?>
Conclusion
Voila... Je rappelle que je ne suis pas sur de mes postulats ni de ma méthode...
Des questions/commentaires/suggestions...? Je suis preneur! Merci d'avoir passé un peu de votre temps à lire ce petit algorythme
Historique
- 09 octobre 2008 18:31:04 :
- il me manquait un point virgule quelque part.
- 13 octobre 2008 17:53:01 :
- Réduction des requetes MySQL ;-)
Suppression de quelques commentaires qui faisaient doublons avec la description.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
PHP et le référencement [ par DreamPush ]
Connaissant les mécanismes qui font marcher le référencement en HTML, je me demande, avant une refonte totale de mon site en PHP, comment fonctionne l
Active scripting : détection possible? [ par paprikarmasutra ]
Salut à tous,Voilà je cherche un moyen pour détecter si chez le client l'active scripting est activé ou non, auquel cas j'affiche tel ou tel code.Je r
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
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!)
Détection du rapport de confidentialité (Cookie) [ par MAsterC ]
Salut à tous,Je me demandais si c'était possible de détecter le "Rapport de confidentialité" quand il s'active sur notre
Référencement [ par Vin Gazoil ]
Salut a tous ! quelqu'un peut il me donner une adresse où l'on explique correctement le référencement ? merci d'avance
Détection de passage d'adresse dans le navigateur [ par Leneuf8000 ]
Bonjour, j'aurais aimé savoir la manière pour détecter si l'utilisateur rentre une page interdite pour lui directement dans le navigate
détection de robot [ par bob ]
bonjour à tous!j'ai chercher sur ce site et sur d'autre mais je n'arrive pas à mettre la main sur un script quidétecte les robots comme
Détecter une ouverture de mail [ par JeanMi66 ]
Salut à tous !J'ai déjà posté un topic sur ce forum en ce qui concerne la détection d'ouverture de mail.On m'a dit qu'il fall
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|