Bot de spam que je ne parviens pas à bloquer

Discussion dans 'URL Rewriting et .htaccess' créé par keroin, 18 Mai 2008.

  1. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Bonsoir à tous,
    Depuis 2 ou 3 heures un bot spammeur s'attaque à mon phpbb3.
    Je l'ai repéré car il génère pas mal de 404 (environ 2000 en quelques heures) et que je reçois un mail dès qu'une 404 est détectée sur mes sites.

    Voici son identité
    Nom de Domaine : 115.Red-80-39-38.staticIP.rima-tde.net
    IP du visiteur : 80.39.38.115

    J'ai essayé de bloquer cette sal***rie via htaccess comme je le fait d'habitude pour bloquer les referer que je ne souhaite pas.
    J'ai utilisé le code suivant
    Code:
    RewriteCond %{HTTP_REFERER} ^(.*(rima-tde.net).*)$ [NC]
    RewriteRule .* - [F,L]
    Mais cela semble complétement inefficace et il continu à circuler librement ???
    Quelqu'un aurait une idée?
    Merci d'avance ;)
     
  2. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Bon il semble que j'ai réussi à le stopper par un simple blocage de son ip
    Code:
    deny from 80.39.38.115
    mais ces petites bêtes là changent généralement souvent d'ip et je ne comprend toujours pas pourquoi le blocage de son ndd n'a pas fonctionné.
    Si quelqu'un a une explication ?
     
  3. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    Bon moi j'ai pas d'explication , mais je veu just savoir comment t'as pu detecter le IP du bot ? car j'ai le meme probleme !
     
  4. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    J'utilise un script qui m'envoie un mail dès qu'une erreur est détectée (404, 500,...).
    Voici la procédure si ça peut te filer un coup de mains ;)

    L'auteur de ce script est un membre du forum (Medium69 si je me souviens bien, merci à lui).

    Il faut créer un fichier erreur.php avec le code suivant :
    Code:
    <? switch   ($_SERVER['REDIRECT_STATUS']) {
          case 401:
          $mess_erreur = 'Accès à la ressource refusé';
          break;
          case 403:
          $mess_erreur = 'Refus de traitement de la requête';
          break;
          case 404:
          $mess_erreur = 'Document non trouvé';
          $logoErreur = '404';
          break;      
          case 410:
          $mess_erreur = 'La ressource est indisponible et aucune adresse de redirection n\'est connue';
          }
    
    if      (!eregi('(cltreq.asp|owssvr.dll|_vti)', $_SERVER['REQUEST_URI']) && $_SERVER['REDIRECT_STATUS'] != 410 ) {
             if      (empty($_SERVER['HTTP_REFERER'])) {
                   $provenance = 'Connexion directe';
                   }
             else   {
                   $provenance = $_SERVER['HTTP_REFERER'];
                   }
             
             $mess   = 'Erreur internet '.$_SERVER['REDIRECT_STATUS']."\n\r";
             $mess   .= 'Provenance : '.$provenance."\n\r";
             $mess   .= 'Url demandée : '.$_SERVER['REQUEST_URI']."\n\r";
             $mess   .= 'Navigateur utilisé : '.$_SERVER['HTTP_USER_AGENT']."\n\r";
             $mess   .= 'Nom de Domaine : '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\n\r";
             $mess   .= 'IP du visiteur : '.$_SERVER['REMOTE_ADDR'];      
             $to                  = "TON_MAIL";
             $subject            = 'Erreur internet '.$_SERVER['REDIRECT_STATUS'];
             $message            = $mess;
             $headers            = 'From: TON_MAIL'."\r\n".'Reply-To: TON_MAIL'."\r\n";
       
             mail($to, $subject, $message, $headers);
             }
    		 ?>
    => ne pas oublier d'indiquer ton mail dans le script (3 fois).

    Place ensuite ce fichier à la racine de ton site via ftp.

    Ensuite, dans ton fichier .htaccess, places les instructions suivantes :
    Code:
    ErrorDocument 400 /erreur.php
    ErrorDocument 401 /erreur.php
    ErrorDocument 403 /erreur.php
    ErrorDocument 404 /erreur.php
    ErrorDocument 410 /erreur.php
    ErrorDocument 500 /erreur.php
    Tu obtiens alors un mail qui t'indique les informations importantes nécessaires.
    ;)
     
  5. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    oui c'est claire, merci
    Mais cela veut dire que je vais recevoir plus de 30000 mail par jour presque puisque les page erreur sur mon server consomme plus de 30000 hits (j'ai une page d'erreur 404 et 403 .. personnalisé via htaccess ) mais bon savoir l'IP quan meme ;-)
     
  6. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Bah justement, le flux des mails te permet d'identifier l'origine du problème et de le corriger mais également de contrôler si la "rustine" a fonctionné car si il n'y a plus de mail c'est que le blocage est ok ;)
     
  7. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    oui, je vais créer un email just pour detection de bot :).
    Bn chance pour la suite keroin
     
  8. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Depuis je l'ai modifié un peu...

    Tu peux par exemple instruire une base de données pour éviter de crouler sous les mails
     
  9. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Voici ce que j'ai ; a vous de le personnaliser ;)
    Sachant que dans le filtre préliminaire, concernant le paramètre GET, dans mon cas, je n'ai aucune page ayant ce paramètre ; donc si on en trouve un, c'est pas normal ;)

    Pour les plus curieux, voici les images d'illustration de mes erreurs internet : -http://www.science-et-vie.net/img/graphisme/erreur-404.jpg (qui peut être : 401 403 404 405 406 410 500.jpg)

    Code:
    <?php
    // Contrôles préliminaires
    if ((preg_match('#/.+/$#U', $_SERVER['REQUEST_URI']) && preg_match('#(compatible; Yahoo! Slurp;|Speedy Spider)#U', $_SERVER['HTTP_USER_AGENT'])) || preg_match('#(\?|%20http).+#U', $_SERVER['REQUEST_URI'])) { // (Visite d'un dossier par un moteur) || (paramètre GET présent ou tentative avérée de piratage)
    	$uri = $_SERVER['SCRIPT_URL']; // Url demandée
    	$num_erreur = $_SERVER['REDIRECT_STATUS']; // Numéro de l'erreur
    	$domaine = gethostbyaddr($_SERVER['REMOTE_ADDR']); // Domaine du visiteur
    	
    	// Ici recherche des trois paramètres : uri, num-erreur et domaine dans la BDD erreur
    	
    	if ($nb_uri_erreur == 1) {	// Si trouvé sans la BDD			
    		// On enregistre la date de visite et on incrémente un compteur de visite
    	} else {
    		// On enregistre les nouvelles informations : uri, num-erreur et domaine dans la BDD erreur, date de visite, et compteur de visite à 1
    	}
    	
    	// On génère une 301 pour ne pas afficher de page d'erreur
    	header ('HTTP/1.1 301 Moved Permanently');
    	header('Location: http://www.science-et-vie.net/');
    	exit;
    }
    
    // Ici incrémenter un compteur pour chaque erreur dans un BDD : 401, 403, 404, etc.
    // Récupération du compteur de visite pour l'erreur dite
    
    if ($nb_erreur == 1) {
    	$nb_erreur = 'première';
    } else {
    	$nb_erreur = number_format($sql_result['erreur_nbTotal'], 0, ',', ' ').'<sup>ème</sup>';
    }
    
    $url = 'http://'.$_SERVER['SERVER_NAME'].$uri;
    $compte_erreur = '<p class="alignCenter">Il s\'agit de la '.$nb_erreur.' erreur '.$_SERVER['REDIRECT_STATUS'].' depuis le 12 mai 2008 !</p>';
    
    switch ($_SERVER['REDIRECT_STATUS']) { // Numéro de l'erreur internet
    	case 401:
    		$mess_erreur = '<h2 class="alignCenter">Accès à la ressource refusée.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>Cette page demande une autorisation que vous n\'avez visiblement pas.</li>';
    		$mess_erreur .= '<li>Si vous pensez que vous êtes en droit d\'y accéder, je vous invite à prendre contact avec l\'administrateur du site.</li>';
    		$mess_erreur .= '<li>Quelques informations vous concernant ont été envoyées à l\'administrateur par sécurité.</li></ul>';
    		$logo_erreur = 'erreur-401.jpg';
    		break;
    	case 403:
    		$mess_erreur = '<h2 class="alignCenter">Refus de traitement de la requête.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>Cette page ou ce dossier est interdit d\'accès à tous visiteurs.</li>';
    		$mess_erreur .= '<li>Quelques informations vous concernant ont été envoyées à l\'administrateur par sécurité.</li></ul>';
    		$logo_erreur = 'erreur-403.jpg';
    		break;
    	case 404:
    		$mess_erreur = '<h2 class="alignCenter">Document non trouvé.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>Cette page est peut-être déplacée ou supprimée ; dans ce cas cette erreur sera vite réparée.</li>';
    		$mess_erreur .= '<li>Si vous avez cliqué sur un lien présent sur autre site, il est possible que l\'information n\'ai pas suivie.</li>';
    		$mess_erreur .= '<li>Si vous avez tapé l\'adresse directement, vous avez peut-être fait une erreur de frappe dans la saisie.</li></ul>';
    		$logo_erreur = 'erreur-404.jpg';
    		break;
    	case 405:
    		$mess_erreur = '<h2 class="alignCenter">Méthode de requête non autorisée.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>La méthode spécifiée à la ligne de requête n\'est pas autorisée pour la ressource identifiée par cette dernière.</li>';
    		$mess_erreur .= '<li>Assurez-vous que la configuration du type MIME pour la ressource que vous demandez est approprié.</li></ul>';
    		$logo_erreur = 'erreur-405.jpg';
    		break;	
    	case 406:
    		$mess_erreur = '<h2 class="alignCenter">Inacceptable.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>La ressource identifiée par la demande ne peut générer que des entités de réponse possédant des caractéristiques de contenu « non acceptables » compte tenu des en-têtes Accept envoyés dans la demande.</li></ul>';
    		$logo_erreur = 'erreur-406.jpg';
    		break;	
    	case 410:
    		$mess_erreur = '<h2 class="alignCenter">Ressource indisponible.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>Cette page a été supprimée et aucune adresse de redirection n\'est connue.</li>';
    		$mess_erreur .= '<li>Si vous avez cliqué sur un lien présent sur autre site, il est possible que l\'information n\'ai pas suivie.</li></ul>';
    		$logo_erreur = 'erreur-410.jpg';
    		break;
    	case 500:
    		$mess_erreur = '<h2 class="alignCenter">Erreur interne du serveur.</h2>';
    		$mess_erreur .= $compte_erreur;
    		$mess_erreur .= '<ul><li>Le serveur a rencontré une erreur interne inconnue et n\'a donc pas pu traiter votre demande.</li>';
    		$mess_erreur .= '<li>Il a du être distrait par cette jolie créature... Revenez donc un peu plus tard !</li></ul>';
    		$logo_erreur = 'erreur-500.jpg';
    }
    
    $img_infos = getimagesize($logo_erreur); // Taille de l'image
    
    
    // Affichage du contenu
    echo '<p><img src="'.$logo_erreur.'" alt="Illustration pour l\'erreur internet '.$_SERVER['REDIRECT_STATUS'].'" '.$img_infos[3].' /><br />
    <strong>Url demandée : « '.$url.' »</strong></p>';
    						
    
    	
    	$mail_sujet = 'Erreur internet '.$_SERVER['REDIRECT_STATUS']; // Sujet de l'e-mail
    	
    	if (!isset($_SERVER['HTTP_REFERER'])) {
    		$url_referant = 'Connexion directe';
    	} else {
    		$url_referant = $_SERVER['HTTP_REFERER'];
    	}
    	
    	// Contenu de l'e-mail
    	$mess_admin .= 'Code erreur internet : '.$_SERVER['REDIRECT_STATUS']."\n\r".
    	'Date et heure d\'accès '.strftime('%A %e %B %Y à %R', $_SERVER['REQUEST_TIME'])."\n\r".
    	'Url demandée : '.$_SERVER['REQUEST_URI']."\n\r".
    	'Provenance : '.$url_referant."\n\r".
    	'Navigateur utilisé : '.$_SERVER['HTTP_USER_AGENT']."\n\r".
    	'Méthode utilisée : '.$_SERVER['REQUEST_METHOD']."\n\r".
    	'Chaine de requête : '.$_SERVER['QUERY_STRING']."\n\r".
    	'Nom de Domaine : '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\n\r".
    	'IP du visiteur : '.$_SERVER['REMOTE_ADDR']."\n\r".
    	'Langue de l\'OS : '.$_SERVER['LANG']."\n\r".
    	
    	// En-têtes de l'email
    	$mail_header = 'From: '.MAIL_NO_REPLY."\r\n".
    	'Reply-To: '.MAIL_NO_REPLY."\r\n";
    	
    	// Données de l'email
    	$mail_dest = MAIL_ADMIN;
    	
    	mail($mail_dest, $mail_sujet, $mess_admin, $mail_header);
    
    echo $mess_erreur.'
    <p>Si nécessaire, vous pouvez vous servir du formulaire de recherche en haut de page pour trouver la page désirée.</p>
    </div>';
    ?>
    Je vous laisse gérer cela si vous voulez utilisez une BDD

    J'ai oublier le .htaccess :
    Code:
    ErrorDocument 400 /erreur.php
    ErrorDocument 401 /erreur.php
    ErrorDocument 402 /erreur.php
    ErrorDocument 403 /erreur.php
    ErrorDocument 404 /erreur.php
    ErrorDocument 405 /erreur.php
    ErrorDocument 406 /erreur.php
    ErrorDocument 407 /erreur.php
    ErrorDocument 408 /erreur.php
    ErrorDocument 409 /erreur.php
    ErrorDocument 410 /erreur.php
    ErrorDocument 411 /erreur.php
    ErrorDocument 412 /erreur.php
    ErrorDocument 413 /erreur.php
    ErrorDocument 414 /erreur.php
    ErrorDocument 415 /erreur.php
    ErrorDocument 500 /erreur.php
    ErrorDocument 501 /erreur.php
    ErrorDocument 502 /erreur.php
    ErrorDocument 503 /erreur.php
    ErrorDocument 504 /erreur.php
    ErrorDocument 505 /erreur.php
     
  10. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    Autrement dit , est ce possible de savoir le suivi de page et les IP qui on passés dessus ?
    Exemple de page erreur.php , comment connaitre un tel IP d'un utilisateur passé sur une tel page ?
     
  11. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Reformules ta question car là ... rien compris :?

    ps : merci Medium il a l'air beaucoup plus complet maintenant, beau boulot ;)
    ps2 : c'est quoi ce lien ??? :lol: :lol:
    =>-http://www.science-et-vie.net/img/graphisme/erreur-404.jpg
     
  12. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    C'est vrai qu'il y a une grande métaphore avec les illustrations des erreurs (voir aussi les autres)... effectivement pour ma 404, rien ne s'y trouve là où tu as bien voulu regarder ^^

    Je reconnais aussi que c'est un peu en décalage avec le site, mais c'est amusant justement ;)
     
  13. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    le code donné indique l'IP visité sur la page erreur. si je voulai savoir la meme chose pour d'autres page du site par exemple ? que faire !
    c'est claire je suppose
     
  14. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    La page d'erreur est générée automatiquement lors de la visite d'une url créant une erreur internet.

    Si maintenant, tu veux récupérer l'ip sur des pages valides de ton site, dans ce cas, il te faut récupéré l'ip sur chacune de tes pages.

    Mais franchement, je n'en vois pas l'intérêt si il n'y a pas de soucis.
     
  15. edd_
    edd_ WRInaute discret
    Inscrit:
    12 Mai 2008
    Messages:
    125
    J'aime reçus:
    0
    Ah oui
    evidement, dsl :roll:
    Ma tete tourne, je doit prendre une café :wink:
     
  16. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je crois oui ;)

    Perso, je n'ai vu que les erreurs 401, 403, 404, 405, 406, 410 et 500 depuis que j'ai mis mon script en place
     
  17. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    ce que tu mets dans la règle du referer, c'est le host du robot, et en règle générale, les robots ont un referer vide.
    C'est donc normal que ta règle ne bloque rien
     
  18. keroin
    keroin WRInaute passionné
    Inscrit:
    29 Avril 2006
    Messages:
    1 501
    J'aime reçus:
    0
    Vi effectivement me semblait bien que c'était quelque chose de ce genre, merci pour la confirmation ;)
     
Chargement...
Similar Threads - Bot spam parviens Forum Date
WordPress ancien site sous WP spammé par robot coréen - référencement dans les choux Problèmes de référencement spécifiques à vos sites 27 Juin 2020
Désindexation sites suite à un problème robot spam Crawl et indexation Google, sitemaps 13 Septembre 2018
Robots spameurs commentaires wordpress bonne nouvelle ! Débuter en référencement 10 Février 2015
Pénalité ? forum spammé par un bot qui a laissé un message pour adulte avec un lien adulte Débuter en référencement 16 Décembre 2013
Masquer du contenu pour les spam-bots? risque pour les gentils bots? Débuter en référencement 25 Septembre 2012
robot spammeur sur mes sites Développement d'un site Web ou d'une appli mobile 16 Mai 2012
Bloquer les SCAN BOTS, SPAM BOTS, aspirateurs, etc sur le serveur (iptables, etc...) Administration d'un site Web 12 Mai 2012
Spam Bot.. Ou pas ? Débuter en référencement 28 Juillet 2008
Mon .htaccess anti robot Spammeur ? URL Rewriting et .htaccess 6 Mai 2008
Quel type de forum pour éviter les robots spammer ? Développement d'un site Web ou d'une appli mobile 11 Mars 2008
anti robot spameur Développement d'un site Web ou d'une appli mobile 7 Février 2008
Detection robots SPAM Développement d'un site Web ou d'une appli mobile 9 Janvier 2008
botspammer et formulair de contact Administration d'un site Web 20 Avril 2007
Vol de nom d'agent de google par les BotSpammers ? Administration d'un site Web 17 Avril 2007
Mod anti spams bots pour phpbb 2.0.21 Administration d'un site Web 23 Janvier 2007
les spameurs sont-il toujours des robots Administration d'un site Web 7 Décembre 2006
descriminer les bots, spam etc ... Développement d'un site Web ou d'une appli mobile 23 Février 2006
script anti-spam robots et anti-pirates... Administration d'un site Web 21 Juillet 2003
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Pourquoi ne pas utiliser le robots.txt pour interdire l'indexation ? Débuter en référencement 14 Avril 2022