- Home
- Categorie
- Coding e Sistemistica
- PHP
- 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?!?...