Come puoi fornire un'API pubblica scrivibile e non ricevere spam?

3

Quindi, hai un sito come StackExchange. Ora immagina di aver creato un'API scrivibile a macchina in grado di pubblicare domande e commenti e di fare tutto ciò che il tuo browser può fare.

Ovviamente, circa 5 minuti dopo il lancio, avresti così tanto spam che probabilmente avresti esaurito i tuoi server di database e sarai permanentemente nella lista nera da ogni motore di ricerca (tranne forse Ask :))

Quindi, come puoi evitare lo spam, pur consentendo a una macchina di utilizzare effettivamente la tua API (e / o avere l'automazione in questione? È possibile in questo giorno ed età? Mi aspetto che ci sia un moderatore umano alla fine di esso, ma come ridurre la maggior parte dello spam alle misure che possono essere gestite da moderatori umani?

    
posta Earlz 31.03.2013 - 05:10
fonte

2 risposte

7

Ci sono diversi approcci. Prima di tutto richiede l'iscrizione (umana) e una chiave API; questo ti permette di richiedere che le richieste siano firmate e che ti permetta di fare il passo successivo, che è la limitazione. Hai mai notato che Twitter ha un limite al numero di chiamate che puoi fare in un'ora? Questa è la forma più semplice di limitazione. È inoltre possibile utilizzare la limitazione basata sulla velocità, che può restituire messaggi di errore se si chiama un servizio troppo rapidamente. Se qualcuno persiste nel tentativo di chiamare il servizio dopo essere stato strozzato, può essere bandito per un periodo di tempo crescente - 1 minuto per il primo reato, 2 minuti per il secondo, 4 per il terzo e così via; una forma di back-off esponenziale. Le tracce di controllo indicano che, se alla fine qualcuno è determinato a diventare uno spammer, puoi semplicemente aggiungere i "contributi" in un colpo solo.

    
risposta data 31.03.2013 - 05:18
fonte
1

Ho finito per scrivere la mia "proposta" per questo, ma non sono sicuro di quanto sarebbe valida una soluzione.

Ad ogni modo, prendi il concetto di bitcoin e applicalo a un'API. Utilizzare una "difficoltà" e un valore di nonce utente fornito e richiedere loro di ritornare con un valore hash che include l'utente-nonce e corrisponde alla difficoltà / condizione richiesta. Puoi prendere questo concetto e renderlo "difficile" per rendere le chiavi API, e "più semplice" per fare commenti e simili con la tua chiave API pre-creata.

Non è sicuramente perfetto, ma sembra essere un metodo per consentire la pura registrazione della macchina e la "scrittura" sulla tua API. Ed è anche accessibile. Nessun captcha visivo o audio richiesto.

Ho scritto un post sul blog su questa idea che diventa un po 'più approfondita

    
risposta data 31.03.2013 - 07:05
fonte

Leggi altre domande sui tag