Domanda

Ho una directory blog e blog anonima accessibile in modo anonimo e vorrei monitorare il numero di visualizzazioni ricevute da ciascun post sul blog.

Voglio renderlo il più semplice possibile, la precisione deve essere solo un'approssimazione. Questo non è per l'analisi (abbiamo Google per quello) e non voglio fare alcuna analisi del registro per estrarre le statistiche poiché l'esecuzione di attività in background in questo ambiente è complicata e voglio che i numeri siano il più aggiornati possibile.

La mia soluzione attuale è la seguente:

  1. Un controllo web che registra semplicemente una vista in una tabella per ogni GET.
  2. Esclude un elenco di crawler Web noti che utilizzano una regex e una stringa UserAgent
  3. Fornisce l'esclusione di determinati indirizzi IP (spammer noti)
  4. Fornisce il blocco di alcuni post (quando arrivano gli spammer)

Questo in realtà sembra fare un ottimo lavoro, ma un paio di cose mi infastidiscono. Gli spammer continuano a colpire alcuni post, distorcendo così le visualizzazioni. Devo ancora monitorare manualmente le visualizzazioni e aggiornare il mio elenco di " male " Indirizzi IP.

Qualcuno ha dei suggerimenti migliori per me? Qualcuno sa come vengono monitorate le visualizzazioni sulle domande StackOverflow?

È stato utile?

Soluzione

Sembra che la tua soluzione attuale sia in realtà abbastanza buona.

Ne abbiamo implementato uno in cui il codice del server che ha fornito il contenuto della vista ha anche aggiornato una tabella del database che memorizzava l'URL (in realtà un codice ID speciale per l'URL poiché l'URL potrebbe cambiare nel tempo) e il conteggio delle visualizzazioni.

Questo in realtà era per un sistema con post scritti dall'utente che altri potevano commentare ma si applica ugualmente alla situazione in cui sei l'unico utente a creare i post (se capisco correttamente la tua descrizione).

Abbiamo dovuto fare quanto segue per ridurre al minimo (non eliminare, purtroppo) l'inclinazione.

  • Per gli utenti che hanno effettuato l'accesso, ogni utente può aggiungere un solo punto di vista a un post. MAI. NESSUN eccezioni.
  • Per gli utenti anonimi, ogni indirizzo IP può aggiungere un solo punto di vista a un post ogni mese. Ciò era leggermente meno affidabile in quanto gli indirizzi IP potevano essere "condivisi" (NAT e così via) dal nostro punto di vista. Il motivo per cui abbiamo rilassato "EVER" " requisito sopra era per questo motivo di condivisione.
  • I post stessi erano limitati all'aggiunta di un punto di vista per periodo di tempo (il periodo è iniziato in basso (diciamo 10 secondi) e gradualmente è aumentato (per dire, 5 minuti), quindi ai nuovi post è stato permesso di accumulare visualizzazioni più velocemente, a causa alla loro novità). Ciò si è occupato della maggior parte dei robot spam, poiché abbiamo scoperto che tendono ad attaccare molto dopo la creazione del post.
  • La rimozione di un commento spam su un post o un tentativo fallito di bypassare CAPTCHA (vedi sotto), ha aggiunto automaticamente quell'IP alla lista nera e ha ridotto il numero di visualizzazioni per quel post.
  • Se un IP nella lista nera non ha cercato di lasciare un commento in N giorni (configurabile), è stato rimosso dalla lista nera. Questa regola, e la regola precedente, riducevano al minimo l'intervento manuale nel mantenimento della lista nera, dovevamo solo monitorare le risposte per i contenuti di spam.
  • CAPTCHA. Ciò ha risolto molti lotti dei nostri problemi di spam, soprattutto perché non ci basavamo solo su cose di tipo OCR (come " che cosa è questa parola - & facoltativamente '' facoltativamente '); abbiamo effettivamente posto domande (come "cosa è 2 moltiplicato per metà di 8?") che rompono i muti robot di riconoscimento dei caratteri. Non batterà le orde di interruttori CAPTCHA a basso costo del lavoro (a meno che la loro matematica non sia davvero cattiva :-) ma i miglioramenti da no-CAPTCHA sono stati impressionanti.
  • Gli utenti che hanno effettuato l'accesso non erano soggetti a CAPTCHA ma lo spam ha ottenuto l'account immediatamente eliminato, la lista nera IP e la loro vista sottratta dal post.
  • Mi vergogno di ammettere che in realtà non abbiamo scontato i web crawler (spero che il client non stia leggendo questo :-). Ad essere onesti, probabilmente aggiungono solo un numero minimo di punti di vista ogni mese a causa della nostra regola dell'indirizzo IP (a meno che non ci brulichino di più indirizzi IP).

Quindi, in sostanza, mi vengono suggeriti i seguenti possibili miglioramenti. Ovviamente dovresti sempre monitorare come vanno a vedere se funzionano o meno.

  • CAPTCHA.
  • Aggiornamenti automatici della blacklist in base al comportamento dell'utente.
  • Limitare il conteggio delle visualizzazioni aumenta da indirizzi IP identici.
  • La limitazione del conteggio delle visualizzazioni aumenta a una determinata velocità.

Nessuno schema scelto sarà perfetto (ad esempio, la nostra regola di un mese) ma, finché tutti i post seguono lo stesso set di regole, otterrai comunque un buon valore comparativo. Come hai detto, la precisione deve essere solo un'approssimazione.

Altri suggerimenti

Suggerimenti:

  1. Sposta la logica del conteggio dei risultati da un controllo utente in una classe Page di base.
  2. Riprogettare l'elenco delle esclusioni in modo che sia aggiornabile dinamicamente (ovvero memorizzarlo in un database o anche in un file XML)
  3. Registra tutti i risultati. A intervalli regolari, fai eseguire un processo cron ai nuovi hit e determina se sono inclusi o esclusi. Se fai l'esclusione per ogni hit, ogni utente deve attendere che abbia luogo la logica corrispondente.
  4. Crea un algoritmo per rilevare automaticamente spammer / bot e aggiungerli alla tua lista nera. E / o iscriviti a una lista nera di terze parti.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top