• User

    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! 😄


  • User Attivo

    il codice da te postato riconosce solo google, quello che sta qualche pagina dietro riconosce tutti i bot, direi che decisamente meglio 😉


  • User

    Aaaa, ma l'altro come si usa? Cioè in che file e posizione bisogna metterlo?

    Grazie per la risposta cmq.


  • User Attivo

    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.


  • User

    Scusami, sono piuttosto inesperto di php...
    Un include cioè? Puoi spiegarmi la sintassi e dove va piazzato nel corpo delle pagine (tipo nell'head...) ?


  • User

    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 Raloff

    Io 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ì?


  • User Attivo

    è 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 😉


  • Super User

    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 🙂


  • User

    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


  • User

    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.


  • Community Manager

    Gabryk, bravo!


  • User

    Gente funziona anche troppo!
    Arrivano ventine di email al minuto... 😮


  • User Attivo

    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


  • User

    No, la differenza è che prima quel bot non mandava mail, ma archiviava tutto su txt. Adesso fa entrambe.


  • User Newbie

    @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


  • User Attivo

    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.org

    nella 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?????
    **


  • User Attivo

    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...


  • User Attivo

    Scusate la domanda... fare un analisi del log no?

    cose?????????????
    scusa l'ignoranza


  • User Attivo

    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:

    1. ci si puo' dimenticare di aggiungere lo script in qualche pagina (quindi i dati non sono reali)
    2. il server perde tempo a fare i controlli per decidere se mandare la mail o scrivere su un file/db
    3. se si manda una mail e il server e' molto visitato allora si genera molto traffico mail
    4. se invece si scrivono su disco si occupa 2 volte lo spazio (una e' quella del logo, la seconda quella che scriviamo noi)
    5. 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?!?...


  • User Attivo

    scusami ancora ma io questo file visot ke ho come dominio altervista dove lo trovo??