Sviluppo di un sistema di rilevamento di bot / web crawler

5

Sto cercando di creare un sistema per la mia azienda che desideri verificare la presenza di modelli insoliti / abusivi di utenti (principalmente web scrapers).

Attualmente la logica che ho implementato analizza i log di accesso http e tiene conto dei seguenti parametri per calcolare il potenziale di un utente come raschietto o bot:

  1. Controlla il rapporto di richieste HTTP POST / GET per ogni IP

  2. Calcola il rapporto tra URL univoci e numero totale di hit (sparsità) per ogni IP

Sulla base dei due parametri precedenti, proviamo a bloccare qualsiasi IP che mostri un comportamento insolito, ma questi due parametri da soli non sono stati sufficienti per il rilevamento dei bot. Quindi mi piacerebbe sapere:

  1. Esistono altri parametri che possono essere inclusi per migliorare il rilevamento?

  2. Ho trovato un articolo pubblicato nella libreria ACM che segue l'approccio bayesiano per rilevare un crawler. Qualcuno ha usato questo? Quanto è efficace questo?

  3. Stack Overflow e altri siti ad alto traffico hanno implementato questo tipo di sistemi, quale logica seguiranno per tenere lontani in tempo reale spammer / crawler indesiderati?

posta bilkulbekar 23.12.2011 - 07:11
fonte

4 risposte

5

Che cosa stai cercando di proteggere contro? La preoccupazione è che il bot userà una larghezza di banda eccessiva o che otterrà una copia di tutto il contenuto del tuo sito web?

In entrambi i casi, un'analisi del file di registro dopo il fatto non farà nulla per impedirlo. Se sei preoccupato con qualcuno che ruba i tuoi contenuti, a cosa serve sapere che qualcuno l'ha appena fatto la scorsa notte? Un po 'come chiudere la porta dopo che sei stato derubato.

Molto meglio semplicemente implementare la limitazione della larghezza di banda, limitando semplicemente il numero di pagine per unità di tempo (minuto / ora qualunque) che il sito Web fornirà a uno specifico indirizzo IP, o meglio ancora un blocco di indirizzi IP.

Ricorda che qualcuno che cerca di rubare i tuoi contenuti potrebbe essere molto intelligente. Il più probabile utilizzerà più indirizzi IP.

Sappi anche che ci sono dispositivi hardware che possono essere installati in un centro dati per farlo in tempo reale.

    
risposta data 23.12.2011 - 14:13
fonte
1

Basta incorporare alcuni collegamenti invisibili nel tuo html. Chiunque ne segua uno è un robot o un raschietto.

    
risposta data 23.12.2011 - 07:43
fonte
1

Mi piacciono le richieste per sessione al secondo, le sessioni per IP e chiedono il ritmo nel tempo.

Le prime - richieste per sessione al secondo - saranno quasi invariabilmente diverse tra umani e robot.

Il secondo - sessioni-per-IP - potrebbe apparire per essere facile da fare, ma probabilmente non sarai in grado di distinguere tra un gran numero di utenti dietro un NAT / firewall -e- un bot multithread. È probabilmente un buon "indicatore addizionale", tuttavia.

Il terzo passo della richiesta nel tempo richiede una piccola spiegazione. I robot tendono ad avere il loro ritmo di analisi, elaborazione "lag" e tempi di risposta tra le richieste di pagina. A seconda di quello che stanno facendo, un bot può recuperare e analizzare decine di kilobyte di contenuto della pagina web senza battere ciglio, e girarsi e fare ancora un'altra richiesta. Tuttavia, questo non differisce da ciò che un umano potrebbe fare quando, per esempio, vede immediatamente un collegamento che desidera e fa clic su di esso prima che il resto della pagina venga caricato.

Tuttavia, un essere umano, anche uno che visita frequentemente il tuo sito, probabilmente ricorderà solo come navigare rapidamente nei primi livelli del tuo sito usando questo metodo. Dopo alcuni livelli, l'umano probabilmente "rallenterà" e leggerà più contenuti / impiegherà più tempo per elaborare ciò che ha richiesto. Un bot, d'altra parte, continuerà al suo ritmo originale per tutta la sua intera interazione con il tuo sito.

Sulla base di questo, direi che qualsiasi sessione che rapidamente (più che umanamente possibile?) elabora il contenuto recuperato dovrebbe essere inizialmente classificato come un bot, ma non troncato. Se, dopo due, forse tre livelli di navigazione nel tuo sito, la sessione continua a fare richieste "più veloci dell'umano", definirla definitivamente come un bot e tagliarla.

Se un essere umano può effettivamente raggiungere un'interazione così elevata e prolungata con il tuo sito, probabilmente devi riprogettare il tuo sito comunque (lol), e dare agli utenti scorciatoie a parti profonde del tuo sito, o "appiattire" il tuo sito del tutto.

    
risposta data 23.12.2011 - 18:30
fonte
0

Esaminare la frequenza alla quale le richieste arrivano e, se è eccessivamente alta, limitare le richieste. In questo modo, non stai bloccando nessuno, eppure nessuno può consumare troppa larghezza di banda.

    
risposta data 23.12.2011 - 09:34
fonte

Leggi altre domande sui tag