- Home
- Categorie
- Coding e Sistemistica
- Coding
- Script che quando passa lo spider di google manda una mail
- 
							
							
							
							
							
a me funziona perfettamente  avessi voglia potrei creare anche la versione con un database, soltanto che questo script fa solo un controllo sull'agent e non sull'ip, perché altri lo fanno anche sull'ip ? ci sono bot ke si spacciano per google in giro? 
 
- 
							
							
							
							
							
Ciao a tutti, sono nuovo. 
 Ho trovato il forum cercando una soluzione per piazzare una checkbox in una pagina php, e poi ho trovato questa discussione interessante...Quale dei due codici proposti utilizzate voi? 
 Io ho usato il secondo e più semplice... e l'ho messo nell'index.php in questo modo, propio in cima:<?php 
 /**- @version $Id: index.php,v 1.41 2004/09/23 23:09:23 rcastley Exp $
- @package Mambo_4.5.1
- @copyright (C) 2000 - 2004 Miro International Pty Ltd
- @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
- Mambo is Free Software
 */
 if(eregi("googlebot",$HTTP_USER_AGENT)) 
 {
 if ($QUERY_STRING != "")
 {$url = "http://".$SERVER_NAME.$PHP_SELF.'?'.$QUERY_STRING;}
 else
 {$url = "http://".$SERVER_NAME.$PHP_SELF;}
 $today = date("F j, Y, g:i a");
 mail("[email protected]", "Googlebot detected on http://$SERVER_NAME", "$today - Google crawled $url");
 }/** Set flag that this is a parent file */ 
 define( '_VALID_MOS', 1 );E' corretto? Funge così? 
 Non ho ben capito la differenza tra i due codici proposti, questo manda una mail e l'altro salva tutto in un file di testo, è solo questa la differenza?
 Ciao! 
 
- 
							
							
							
							
							
il codice da te postato riconosce solo google, quello che sta qualche pagina dietro riconosce tutti i bot, direi che decisamente meglio  
 
- 
							
							
							
							
							
Aaaa, ma l'altro come si usa? Cioè in che file e posizione bisogna metterlo? Grazie per la risposta cmq. 
 
- 
							
							
							
							
							
basta che lo copi un file esterno e poi fai un include in tutti quelli che ti servono. o altrimenti fai come per l'altro e lo metti in cima alla index. così facendo cmq ti avvisa solo quando il bot passa sulla index. 
 
- 
							
							
							
							
							
Scusami, sono piuttosto inesperto di php... 
 Un include cioè? Puoi spiegarmi la sintassi e dove va piazzato nel corpo delle pagine (tipo nell'head...) ?
 
- 
							
							
							
							
							
Rieccomi, mi serve qualche info sul bot che ha postato TuonoRosso a pagina 1 e di cui questo è uno spaccato di codice: Codice: 
 pagina 1:
 <?php
 /* ------------------------------------------------------------ /
 / Spider-Sense /
 / Detects bot activity and alerts you to their presence /
 / By Shawn RaloffIo ho messo tutto quello che c'è nel primo riquadro in un file chiamato spider-sense.php e quello nel secondo quadrato in un altro file spider-sense.dat è corretto? 
 Poi nell'index ho scritto: include( 'spider-sense.php' );Però mi da un errore... è giusto fare così? 
 
- 
							
							
							
							
							
è giusto se i due file li metti nella stessa directory in cui metti l'include, altrimenti devi dargli una posizione diversa, o altrimenti vai nel primo forum dove ho postato il codice modificato  
 
- 
							
							
							
							
							
sto modificando lo script che uso per fare in modo che al posto che inviare una mail registri i dati in una tabella (mysql) in modo da poter avere i dati in un report di più agevole consultazione. quando cominci ad avere un po' di siti con qualche centinaio di pagine l'uno e ti fai mandare una mail per ogni bot... praticamente passi la giornata a cancellare email ed arrivi al punto di disabilitare lo script per la disperazione. invece quelle info sono importantissime  
 
- 
							
							
							
							
							
Io però credevo che non si vedesse la modifica all'index (è qui che ho messo l'include), invece appare uno spazio vuoto in cima alla pagina e ho scoperto che selezionandolo si scoprono delle scritte che hanno lo stesso colore dello sfondo e che riportano un errore. Warning: eregi(): REG_EMPTY in /web/htdocs/www.metalzena.it/home/spider-sense.php on line 27 Alla riga 27 trovo: 
 if( eregi($agent,$bot) )
 {
 mail("$email", "$agent detected on $domain", "$agent has crawled $page on $domain");
 }Ma non capisco dov'è il problema se dite che è giusto. Tra l'altro i file sono nella stessa directory dell'ndex.php 
 
- 
							
							
							
							
							
Scusate i post ravvicinati, ma ho modificato il bot trovato a pagina 1 aggiungendogli la funzione per mandare i report per mail. Ecco il codice <? $agents = array( 
 "ultraseek" => "Infoseek",
 "sidewinder/" => "Infoseek",
 "ia_archiver" => "Alexa",
 "arianna.iol.it" => "Arianna",
 "ask jeeves" => "Ask jeeves",
 "fast-webcrawler/" => "Fast",
 "googlebot-" => "Google Immagini",
 "googlebot/" => "Google",
 "mercator-" => "Altavista",
 "scooter/" => "Altavista",
 "scooter-" => "Altavista",
 "arachnoidea" => "Arachnoidea",
 "yhaoo" => "Yahoo",
 "slurp" => "Inkomi",
 "gulliver/" => "NorthernLight",
 "lycos_spider_(t-rex)" => "Lycos",
 "architextspider" => "Excite",
 "libwww-perl/" => "Excite",
 "almaden.ibm.com" => "Ibm Resarch"
 );$filename = "motori.txt"; 
 $ua = $_SERVER["HTTP_USER_AGENT"];
 $page = $_SERVER['PHP_SELF'];foreach ($agents as $ag => $motore) { 
 //print date(" d-M-Y H:i ") . " \t" . $motore . " \t" . $ag . " \t" . $page ."\n";
 if (strpos (strtolower (" " . $ua), $ag) > 0) {
 $fp = fopen($filename, "a");if ($fp) { fwrite($fp, date(" d-M-Y H:i ") . " \t" . $motore . " \t" . $ag . " \t" . $page ."\n"); fclose($fp); break; }} 
 $today = date("F j, Y, g:i a");
 mail("[email protected]", "$motore detected on $page", "$today - $motore è passato su $page");
 }?> Penso che poi aggiungerò gli altri spider elencati dal bot in 2 file. 
 
- 
							
							
							
							
							Gabryk, bravo! 
 
- 
							
							
							
							
							
Gente funziona anche troppo! 
 Arrivano ventine di email al minuto... 
 
- 
							
							
							
							
							
non ho ben capito dove sta la differenza? ci metti la data? bè cmq nn lho fatto in sql perché per le stats uso phpstats anche se con i motori non mi pare funzionare granché bene, almeno per il forum : | se ho tempo e voglia metto su qualche stats dedicata ai bot 
 
- 
							
							
							
							
							
No, la differenza è che prima quel bot non mandava mail, ma archiviava tutto su txt. Adesso fa entrambe. 
 
- 
							
							
							
							
							
@Gabryk said: Gente funziona anche troppo! 
 Arrivano ventine di email al minuto... Sì, è perchè ti è sfuggita una parentesi, il codice corretto dovrebbe essere: foreach ($agents as $ag => $motore) { 
 //print date(" d-M-Y H:i ") . " \t" . $motore . " \t" . $ag . " \t" . $page ."\n";
 if (strpos (strtolower (" " . $ua), $ag) > 0) {
 $fp = fopen($filename, "a");if ($fp) { 
 fwrite($fp, date(" d-M-Y H:i ") . " \t" . $motore . " \t" . $ag . " \t" . $page ."\n");
 fclose($fp);
 break;
 }
 $today = date("F j, Y, g:i a");
 mail("[email protected]", "$motore detected on $page", "$today - $motore è passato su $page");
 }
 }?> ciao, ciao 
 
- 
							
							
							
							
							ragazzi io ho integrato lo script postato da Tuonorosso 
 nel mio footer però ho un problem<?php 
 /* ------------------------------------------------------------ /
 / Spider-Sense /
 / Detects bot activity and alerts you to their presence /
 / By Shawn Raloff /
 / http://www.side2.com /
 / ------------------------------------------------------------ *//* ---------- You must set these variables ---------- */ 
 $domain = "http://vinarcid0810.altervista.org/";
 $email = "[email protected]";/* ---------- No need to edit beyond this point ---------- */ 
 $bot = $_SERVER['HTTP_USER_AGENT'];
 $page = $_SERVER['PHP_SELF'];/* ---------- Look for bots ---------- */ 
 ini_set("sendmail_from",'[email protected]');//mail("$email", "aaaa", "aaa"); 
 $myFile = fopen("spider-sense.dat","r");
 while(!feof($myFile))
 {
 $myLine = chop(fgets($myFile, 255));
 list($agent,$url) = split("*", $myLine);
 if( eregi($agent,$bot) )
 {
 mail("$email", "$agent detected on $domain", "$agent has crawled $page on $domain");
 }
 }fclose($myFile); //echo "Powered By Side2.com"; 
 ?>la pagina footer viene richiamata da tutte le altre pagine del sito 
 mettendo nello script l'indirizzo del sito
 http://vinarcid0810.altervista.orgnella home nn ho problemi mentre nelle altre mi da errore Fatal error: Maximum execution time of 15 seconds exceeded in /membri/vinarcid0810/footer.php on line **52 cosa devo fare lo devo integrare in ogni singola pagina????? 
 **
 
- 
							
							
							
							
							
Scusate la domanda... fare un analisi del log no?... io credo che questo genere di operazione/analisi vada fatta offline perche' su un sito molto visitato diventa troppo pesante e rischia di rallentare il server... bho... 
 
- 
							
							
							
							
							Scusate la domanda... fare un analisi del log no? cose????????????? 
 scusa l'ignoranza
 
- 
							
							
							
							
							
il log del server riporta tutti i dati per ogni singola chiamata ricevuta... comprensivi di user-agent... quindi le stesse informazioni che con quegli script si vogliono tracciare sono gia' memorizzate nei log e basta recuperarle da li... 
 Secondo me può essere controproducente tracciare in ogni pagina per diversi motivi:- ci si puo' dimenticare di aggiungere lo script in qualche pagina (quindi i dati non sono reali)
- il server perde tempo a fare i controlli per decidere se mandare la mail o scrivere su un file/db
- se si manda una mail e il server e' molto visitato allora si genera molto traffico mail
- se invece si scrivono su disco si occupa 2 volte lo spazio (una e' quella del logo, la seconda quella che scriviamo noi)
- nel tempo, manipolare il file di testo o il db con i dati diventa lento a causa del numero di dati memorizzato
 ...mio parere neh?!?...