Sono stato recentemente ispirato a scrivere filtri antispam in JavaScript, in stile Greasemonkey, per diversi siti Web che uso che sono inclini allo spam (specialmente nei commenti). Quando considero le mie opzioni su come procedere, mi rendo conto di avere diverse opzioni, ciascuna con pro/contro. Il mio obiettivo per questa domanda è di espandere l'elenco che ho creato e, auspicabilmente, determinare il modo migliore per filtrare lo spam sul lato client con JavaScript.Qual è il modo migliore per filtrare lo spam con JavaScript?
Per quanto riguarda ciò che rende filtro spam il "migliore", direi che questi sono i criteri:
- più accurata
- meno vulnerabile agli attacchi
- più veloce
- più trasparente
Inoltre, si prega di notare che sto cercando di filtrare il contenuto che esiste già su siti Web che non sono miei, utilizzando Greasemonkey Userscripts. In altre parole, non posso impedire lo spam; Posso solo filtrarlo.
Ecco il mio tentativo, finora, di compilare un elenco dei vari metodi con i loro difetti e benefici:
basati su regole filtri:
Cosa fa : "Livelli" un messaggio assegnando un valore in punti a criteri diversi (vale a dire tutto maiuscolo, tutto non alfanumerico, ecc.) A seconda del punteggio, il messaggio viene scartato o conservato.
Vantaggi:
- facile da implementare
- Per lo più trasparenti
Carenze:
- trasparente- di solito è facile da decodificare il codice su disco oltre le regole, e quindi creare messaggi che non verranno ritirati
- Valori difficili da bilanciare (falsi positivi)
- Può essere lento; più regole devono essere eseguiti su ogni messaggio, un sacco di volte utilizzando le espressioni regolari
- In un ambiente client-side, interazione server o interazione dell'utente è necessaria per aggiornare le regole
filtraggio bayesiano:
Che cosa fa: Analizza la frequenza delle parole (o la frequenza del trigramma) e la confronta con i dati che è stata addestrata con.
Benefici:
- Non c'è bisogno di regole artigianali
- veloce (relativamente)
- più difficile da decodificare
Carenze:
- Richiede formazione per essere efficace
- I dati addestrati devono essere ancora accessibili a JavaScript; di solito sotto forma di JSON leggibile, XML o file flat
- set di dati può ottenere abbastanza grande
- filtri mal progettato sono facili da confondere con una buona dose di parole comuni per abbassare il rating spamacity
- Le parole che non sono state viste prima non possono essere classificate con precisione; a volte con conseguente classificazione errata di tutto il messaggio
- In un ambiente client-side, server o interazione interazione dell'utente è necessaria per aggiornare le regole
bayesiano Filtraggio sul lato server:
Cosa lo fa: Applica lato server di filtraggio bayesiano inviando ciascun messaggio a un server remoto per l'analisi.
Vantaggi:
- Tutti i benefici di una regolare il filtraggio bayesiano
- dati di addestramento non è rivelato per gli utenti/indietro ingegneri
Carenze:
- Traffico pesante
- ancora vulnerabile alle parole non comuni
- ancora vulnerabile ad aggiungere parole comuni per diminuire spamacity
- Il servizio stesso può essere abusato
- Per addestrare il classificatore, può essere auspicabile per consentire agli utenti di inviare i campioni di spam per allenamento. Gli aggressori possono abusare di questo servizio
Liste nere:
Cosa fa: applica una serie di criteri per un messaggio o qualche attributo di esso. Se uno o più (o un numero specifico di) criteri corrispondono, il messaggio viene rifiutato. Un po 'come il filtro basato su regole , quindi vedere la sua descrizione per i dettagli.
CAPTCHA, e simili:
non è fattibile per questo tipo di applicazione. Sto cercando di applicare questi metodi a siti già esistenti. Greasemonkey sarà usato per fare questo; Non posso iniziare a richiedere CAPTCHA in posti che non erano prima che qualcuno installasse il mio script.
Qualcuno può aiutarmi a compilare gli spazi vuoti? Grazie,
Quindi il tuo obiettivo è aggiungere il controllo dello spam sul browser delle persone per i siti che non hanno una protezione sufficiente incorporata? Che puoi rimuovere in modo dinamico i commenti dal sito. Interessante, anche se non sono sicuro di quanti siti potrebbero trarne beneficio. –
In realtà quello che sto cercando di fare è creare una piattaforma che consenta proprio questo. Questo viene prima. Quindi lo applicherò a siti diversi. Facebook è uno dei miei obiettivi principali, poiché la maggior parte dei commenti è spam. –
I filtri antispam sono banali da aggiungere nel back-end. Se gli amministratori del sito in questione sono troppo pigri per farlo, è meglio non usare il sito per cominciare. Perché premiare un sito schifoso facendo il loro lavoro per loro? È strano che tu menzioni Facebook, perché non ho mai visto spam lì. Potresti semplicemente voler disapprovare gli spammer ... – Cerin