/ / Come determinare l'utente reale sta visitando il mio sito o sta semplicemente eseguendo la scansione o altrimenti in PHP - php, javascript, html, iframe

Come determinare l'utente reale sta navigando nel mio sito o semplicemente eseguendo la scansione o in PHP - php, javascript, html, iframe

Voglio sapere se un utente sta effettivamente guardando il mio sito (so che è solo caricato dal browser e visualizzato su umano, non realmente umano che lo guarda).

So che due metodi funzioneranno.

  1. Javascript.

    Se la pagina è stata caricata dal browser, eseguirà automaticamente il codice js, ad eccezione del divieto del browser. Quindi utilizzare AJAX per richiamare il server.

  2. 1 × 1 immagine trasparente di nel codice HTML.

    Usa img per richiamare il server.

Qualcuno conosce la trappola di questi metodi o qualche metodo migliore?

Inoltre, non so come determinare un iframe 0 × 0 o 1 × 1 per impedire il metodo sopra.

risposte:

5 per risposta № 1
  1. Un bot può accedere a un browser, ad es. http://browsershots.org

  2. Il bot può richiedere quell'immagine 1x1.

In breve, non c'è vero modo di dire. Il meglio che potresti fare è usare un CAPTCHA, ma poi degrada l'esperienza per l'uomo.

Basta usare un CAPTCHA dove richiesto (iscrizione utente, ecc.).


1 per risposta № 2

Voglio sapere se un utente sta effettivamente guardando il mio sito (so che è solo caricato dal browser e visualizzato su umano, non realmente umano che lo guarda).

L'immagine sembra migliore, come potrebbe Javascriptessere disattivato anche dagli utenti normali. I robot generalmente non caricano le immagini, quindi dovrebbe funzionare davvero. Tuttavia, se stai solo cercando di filtrare un set noto di robot (diciamo Google e Yahoo), puoi semplicemente controllare l'intestazione dell'agente utente HTTP, poiché quei robot si identificheranno effettivamente come robot.


1 per risposta № 3

puoi creare un account webmaster di Google e ti dice come configurare il tuo sito per i robot mostra anche come il robot leggerà il tuo sito web


1 per risposta № 4

Sono d'accordo con gli altri qui, questo è davvero difficile -generalmente i simpatici crawler si identificheranno come crawler, quindi usare l'User-Agent è un buon modo per filtrare quei tipi. Una buona fonte per le stringhe dell'agente utente è disponibile all'indirizzo http://www.useragentstring.com. Ho usato lo script php di Chris Schulds (http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/) con buoni risultati in passato.

Puoi anche filtrare questi ragazzi a livello di server usando il file di configurazione di Apache o .htaccess, ma ho scoperto che si tratta di una battaglia persa per tenerlo al passo.

Tuttavia, se guardi i log del tuo server, vedraimolte attività sospette con user-agent (browser) validi o user-agent funky, quindi funzionerà solo finora. Puoi giocare alla blacklist / whitelist IP game, ma invecchierà rapidamente.

Molti cingolati fare caricare immagini (ad es. ricerca di immagini di Google), quindi non credo che funzionerà sempre.

Pochissimi crawler avranno motori Javascript,quindi è probabilmente un buon modo per differenziarli. E ammettiamolo, quanti utenti attualmente girano Javascript in questi giorni? Ho visto le statistiche su questo, ma penso che quelle statistiche siano molto distorte dal numero puro di crawler / robot là fuori che non si identificano. Tuttavia, un avvertimento è che ho visto che il bot di Google fa esegui Javascript ora.

Quindi, linea di fondo, è dura. Sicuramente seguirò una strategia ibrida: se filtrate usando user-agent, immagini, IP e javascript, sono sicuro che otterrete la maggior parte dei robot, ma mi aspetto che ce la facciano.

Un'altra idea, potresti sempre usare una stranezza nota del browser Javascript per verificare se l'agente utente segnalato (se è un browser) è effettivamente quel browser?


0 per risposta № 5

I robot "carini" come quelli di Google o Yahoo rispettano di solito a robots.txt file. Anche il filtro per useragent potrebbe essere d'aiuto.

Ma alla fine - se qualcuno vuole ottenere un accesso automatizzato, sarà molto difficile impedirlo; dovresti essere sicuro che valga la pena.


0 per risposta № 6

Ispezionare l'intestazione User-Agent della richiesta http. I crawler dovrebbero impostarlo su qualsiasi cosa tranne che su un browser noto.

ecco l'intestazione google-bot http://code.google.com/intl/nl-NL/web/controlcrawlindex/docs/crawlers.html

In php puoi ottenere l'agente utente con:

$Uagent=$_SERVER["HTTP_USER_AGENT"];

Quindi lo confronti con le intestazioni note come suggerimento preg_match () potrebbe essere utile per fare tutto questo in poche righe di codice.