Visualizzazione risultati 1 fino 3 di 3

Discussione: Funzione per tracciare il passaggio dello spider

  1. #1
    L'avatar di netgreg
    netgreg non è connesso Utente giovane
    Data registrazione
    24-11-2007
    Residenza
    Brescia
    Messaggi
    79

    Predefinito Funzione per tracciare il passaggio dello spider

    Questa funzione mi scrive su un file quando passano i vari spider:

    if (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')){$bot='Googlebot';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mediapartners')){$bot='Adsense';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'Slurp')){$bot='Hot Bot';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'ichiro')){$bot='ichiro';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'msnbot')){$str_bot='Msn';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'bingBot')){$str_bot='Bing';}

    Funziona, ma non con tutti i bot.

    Per esempio, dal log del server vedo che è passato "bingbot" ma la funzione non scrive nulla.
    Invece scrive quando passa Googlebot, ichiro....

    Come mai questo strano comportamento?

  2. #2
    L'avatar di soulcanada
    soulcanada non è connesso Utente giovane
    Data registrazione
    12-08-2011
    Messaggi
    75

    Predefinito

    Potrei ipotizzare che succeda perchè utilizzi la funzione strstr che è case-sensitive mentre ti consiglio di utilizzare la stristr che non è case-sensitive.

    Se bing arriva come bingbot allora strstr(USER_AGENT, bingBot) = false mentre se arriva come bingBot allora strstr(USER_AGENT, bingBot) = true.

    Per la stristr bingBot e bingbot sono la stessa cosa quindi stristr(USER_AGENT, bingBot) = true e stristr(USERAGENT, bingbot) = true.

    Prova a sostituirla, dovresti aver risolto il problema...

  3. #3
    L'avatar di netgreg
    netgreg non è connesso Utente giovane
    Data registrazione
    24-11-2007
    Residenza
    Brescia
    Messaggi
    79

    Predefinito

    Ciao sulcanada, e grazie per la risposta.

    Premesso che cambiaero la funzione con quella suggerita da te che non conoscevo, io sono stabe ben attento al case, poichè rilevo il testo esatto dal log accessi del mio server.

    Per esempio, non riesco in alcun modo a intercettare questo bot che si presenta con questo user_agent:
    findlinks/2.6 (+http://wortschatz.uni-leipzig.de/findlinks/)

    e mi falliscono tutti questi test sulla stringa:
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'leipzig')){$bot='lp1';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'links')){$bot='lp2l';}
    else if (strstr($_SERVER['HTTP_USER_AGENT'], 'worts')){$bot='lp3';}

    Ci sarà da qualche parte una stupidata che non riesco a vedere... :(


    PS
    in ogni caso un errore l'ho gia trovato: la variabile dove metto il risultato una volta è $str_bot e una volta è $bot.
    messo a posto, ma il problema con quel bot (e altri) rimane
    Ultima modifica di netgreg : 11-08-2012 alle ore 12.25.13

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •