Come posso identificare che la mia pagina è richiesta dal robot, ma non dal browser dell'utente?

10

Come posso rilevare che la mia pagina è richiesta dal robot, ma non dal browser dell'utente? Sono a conoscenza dei trucchi di base:

  1. Guarda le intestazioni o gli URL errati. Ad esempio, url con hash o intestazione con URL completo - OTTIENI www.yoursite.com/test
  2. Rileva che diverse pagine non correlate sono state richieste direttamente da qualche IP (non abbastanza buono)
  3. Guarda le intestazioni mancanti
  4. Guarda gli agenti utente obsoleti

Esistono altri modi per rilevare i robot?

UPDATE : alcuni buoni robot si identificano nell'intestazione User-Agent:

User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
    
posta Paul Podlipensky 11.07.2012 - 21:59
fonte

4 risposte

5

Il rilevamento di Javascript sembra essere il modo comune per rilevare un bot, con un token casuale generato usando Javascript e inviato insieme alle richieste.

Mi piace l'idea di avere una pagina "honeypot" sulla tua applicazione web. Questa pagina sarebbe collegata all'utilizzo di un collegamento nascosto, che nessun utente finale avrebbe mai visto. In questo modo, se questa pagina honeypot viene mai raggiunta (da un bot che esegue la scansione del codice sorgente HTML per i collegamenti), puoi essere abbastanza sicuro che si tratta di un bot o altro scanner dannoso e bloccare temporaneamente tale indirizzo IP.

Ci sono anche strumenti là fuori (come weblabyrinth ) che mirano ad intrappolare bot in un ciclo generando dinamicamente link falsi per il bot da seguire.

    
risposta data 12.07.2012 - 00:47
fonte
5

Alcune delle funzionalità utilizzate nel mining del log web per identificare se una richiesta viene eseguita da robot o meno:

  • numero di clic: numero di richieste http in una sessione
  • Rapporto HTML-immagine: i robot generalmente ignorano le immagini
  • percentuale di richieste pdf / ps: i robot richiederanno per tutti loro, mentre gli umani ne richiederanno selettivamente alcuni
  • percentuale di risposte di errore 4xx: i robot avranno questa metrica più alta
  • percentuale di richieste HEAD HTTP: per ridurre la quantità di dati da un sito, i robot utilizzano le richieste HEAD
  • percentuale di richieste con referrer non assegnati
  • Richiesta di file Robots.txt
  • deviazione standard della profondità della pagina richiesta: alta per i robot
  • percentuale di richieste consecutive sequenziali HTTP: superiore per sessioni umane (richieste di creazione di browser per immagini / script contenute nella pagina per conto dell'utente)

Sono tratti da "Valutazione delle funzionalità per il rilevamento del crawler Web con tecniche di data mining" link

    
risposta data 13.11.2012 - 03:40
fonte
3

Generalmente, i robot non eseguono JavaScript (probabilmente il 99% dei casi), tuttavia sappi che alcuni robot usano WebKit, che esegue il JS e rende la pagina completa.

È possibile controllare le voci nel file di registro. È probabile che sia un robot se:

  • richiede la pagina HTML ma nessuna immagine
  • prima richiede un robots.txt
  • è della rete di google ecc
  • puoi vedere che sta eseguendo la scansione e non sta esplorando
risposta data 11.07.2012 - 22:40
fonte
2

Finora un solido consiglio.

Volevo solo dire che le sfide JS non devono essere usate come indicatori unici come alcuni robot (ad esempio alcuni robot di Google ma anche alcuni cattivi / mascherati) eseguiranno JS e d'altra parte alcuni utenti non attiveranno JS per motivi di sicurezza (raro ma succede).

La cosa migliore da fare è eseguire un controllo incrociato del bot usando le seguenti regole:

  1. Metodo - "POST" è fishy
  2. Ordine di intestazione - se anormale è pericoloso (ma può essere solo una cosa proxy)
  3. robots.txt - se prima va lì, è molto sospetto
  4. Intervallo IP: se dalla geo-localizzazione "insolita" merita un altro aspetto
  5. Tasso di richiesta: la percentuale molto alta è molto sospetta
  6. Risorse - se non scarica file (immagini, css, js ed ecc.) allora è difficile
  7. Sfida JS e Cookie - se non riesce a passarlo, allora è difficile

Impostazione di un punteggio per ogni test (non dare lo stesso "valore" dato che alcuni sono più importanti) e la combinazione dei dati fornirà i risultati migliori.

@ xpn-security: è stato fantastico conoscere il weblabyrinth. Grazie.

    
risposta data 18.07.2012 - 17:13
fonte

Leggi altre domande sui tag