Ho accettato una risposta, ma purtroppo credo che siamo bloccati nel nostro scenario peggiore originale: CAPTCHA tutti nei tentativi di acquisto della merda . Breve spiegazione: la memorizzazione nella cache/web farm rende impossibile tenere traccia degli hit e qualsiasi soluzione alternativa (invio di un web beacon non memorizzato nella cache, scrittura su una tabella unificata, ecc.) Rallenta il sito in modo peggiore rispetto ai bot. Probabilmente esiste un hardware costoso di Cisco o simili che può aiutare a un livello elevato, ma è difficile giustificare il costo se CAPTCHA è una alternativa per tutti. Cercherò una spiegazione più completa in seguito, oltre a ripulirla per i futuri ricercatori (anche se altri sono invitati a provare, poiché è wiki della comunità).
Si tratta delle vendite di cazzate su woot.com. Sono il presidente di Woot Workshop, la consociata di Woot che si occupa della progettazione, scrive descrizioni dei prodotti, podcast, post di blog e modera i forum. Lavoro con CSS/HTML e conosco a malapena altre tecnologie. Lavoro a stretto contatto con gli sviluppatori e ho parlato di tutte le risposte qui (e di molte altre idee che abbiamo avuto).
L'usabilità è una parte enorme del mio lavoro e rendere il sito eccitante e divertente è la maggior parte del resto. Ecco dove derivano i tre obiettivi sottostanti. CAPTCHA danneggia l'usabilità e i robot rubano il divertimento e l'eccitazione delle nostre vendite di merda.
I robot stanno sbattendo la nostra prima pagina decine di volte una seconda schermata che raschia (e/o scansiona il nostro RSS) per la vendita di Schifezze Casuali. Nel momento in cui lo vedono, innesca una seconda fase del programma che accede, fa clic su I want One, compila il modulo e acquista la merda.
lc : su StackOverflow e altri siti che utilizzano questo metodo, hanno quasi sempre a che fare con utenti autenticati (registrati), poiché l'attività che si sta tentando lo richiede.
Su Woot, gli utenti anonimi (non registrati) possono visualizzare la nostra home page. In altre parole, i robot che sbattono possono essere non autenticati (e sostanzialmente non tracciabili tranne che per indirizzo IP).
Quindi torniamo alla ricerca di IP, che a) è abbastanza inutile in questa era di reti cloud e zombie spambot eb) cattura troppi innocenti dato il numero di aziende che provengono da un indirizzo IP (per non parlare dei problemi con ISP IP non statici e potenziali risultati delle prestazioni nel tentativo di rintracciarlo).
Oh, e avere persone che ci chiamano sarebbe lo scenario peggiore possibile. Possiamo farti chiamare?
BradC : I metodi di Ned Batchelder sembrano piuttosto interessanti, ma sono abbastanza fermamente progettati per sconfiggere i robot creati per una rete di siti. Il nostro problema è che i robot sono creati appositamente per sconfiggere il nostro sito. Alcuni di questi metodi potrebbero probabilmente funzionare per un breve periodo di tempo fino a quando gli script non hanno evoluto i loro bot per ignorare l'honeypot, lo screen-scrape per i nomi delle etichette nelle vicinanze anziché gli ID dei moduli e utilizzare un controllo browser abilitato a javascript.
lc again : "A meno che, ovviamente, l'hype faccia parte del tuo schema di marketing." Sì, lo è sicuramente. La sorpresa di quando appare l'oggetto, così come l'eccitazione se riesci a ottenerne uno è probabilmente tanto o più importante della merda che effettivamente finisci per ottenere. Tutto ciò che elimina il primo arrivato/primo servito è dannoso per il brivido di "vincere" la merda.
novatrust : E, per uno, accolgo con favore i nostri nuovi signori bot. In realtà offriamo RSSfeed per consentire alle app di terze parti di scansionare il nostro sito alla ricerca di informazioni sui prodotti, ma non in anticipo rispetto all'HTML del sito principale. Se lo sto interpretando bene, la tua soluzione aiuta l'obiettivo 2 (problemi di prestazioni) sacrificando completamente l'obiettivo 1 e semplicemente dimettendosi dal fatto che i robot compreranno la maggior parte della merda. Ho votato a favore della tua risposta, perché il tuo ultimo pessimismo del paragrafo mi sembra accurato. Sembra che qui non ci siano proiettili d'argento.
Le altre risposte si basano generalmente sul tracciamento IP, che, di nuovo, sembra sia inutile (con reti bot/zombi/rete cloud) sia dannoso (catturare molti innocenti che provengono da destinazioni dello stesso IP).
Altri approcci/idee? I miei sviluppatori continuano a dire "facciamo semplicemente CAPTCHA" ma spero che ci siano metodi meno invadenti per tutti gli umani reali che vogliono un po 'della nostra merda.
Supponiamo che stai vendendo qualcosa di economico che ha un valore percepito molto elevato e che hai un importo molto limitato. Nessuno sa esattamente quando venderai questo oggetto. E oltre un milione di persone vengono regolarmente per vedere cosa stai vendendo.
Ti ritrovi con scripter e robot che tentano di capire programmaticamente [a] quando vendi detto articolo, e [b] assicurati che siano tra i primi a comprarlo. Questo fa schifo per due motivi:
Una soluzione apparentemente ovvia è quella di creare dei cerchi che i tuoi utenti possano saltare prima di effettuare l'ordine, ma ci sono almeno tre problemi con questo:
Un'altra soluzione è controllare gli IP che colpiscono troppo spesso, bloccarli dal firewall o impedire loro di ordinare. Questo potrebbe risolvere il 2. e prevenire [b] ma il colpo di prestazione della scansione per gli IP è enorme e probabilmente causerebbe più problemi come 1. che gli scripter stavano causando da soli. Inoltre, la possibilità di rete in rete e zombie spambot rende il controllo IP abbastanza inutile.
Una terza idea, forzando il caricamento del modulo d'ordine per un po 'di tempo (diciamo, mezzo secondo) potrebbe potenzialmente rallentare l'avanzamento degli ordini rapidi, ma ancora una volta, gli scripter sarebbero ancora i primi a entrare, a qualsiasi velocità non dannosa per utenti reali.
Dovresti avere un registro degli utenti che hanno acquistato BOC più spesso, perché non semplicemente vietare quegli account o qualcosa del genere. Sicuramente gli utenti legittimi verranno bannati in questo processo, ma tu sei un'azienda che fornisce un prodotto e se sei stato abusato da un gruppo di utenti e così hai il diritto di rifiutare il loro servizio. Hai molte informazioni sui tuoi utenti, inclusi Paypal e conti bancari, potresti vietare quegli account costringendo gli utenti bot a ottenere nuovi account. Certamente potrei inventare uno script per comprare BOC tutto il tempo o semplicemente scaricarne uno dalla rete, ma ho una morale migliore di quella. Non avendo mai acquistato BOC con successo, conosco la frustrazione degli utenti legittimi che vorrebbero ricevere un BOC nella speranza di ottenere molto. Forse invece di offrire un BOC come singolo articolo ogni tanto, potresti semplicemente darlo a utenti casuali ogni giorno. Quando ricevono un oggetto ricevono una piccola nota e un altro elemento che dice che hanno anche ricevuto un BOC. Quindi l'unico modo in cui qualcuno potrebbe ottenere un BOC è se legittimamente acquistassero qualcosa che solo un vero uomo avrebbe voluto. Non ci sarebbe niente di meglio che acquistare una caffettiera o qualcosa del genere e ricevere anche una TV da 42 "o qualcosa in aggiunta al tuo acquisto legittimo. Penso che la maggior parte dei kiddie di script non sarebbe più interessata al tuo sito se per ottenere un BOC dovrebbero anche impegnarsi per un acquisto di oltre 10 dollari.
Scusami se questa risposta è già stata inviata. Ci sono molte risposte per cercare di leggerle e comprenderle tutte.
Perché non potresti semplicemente cambiare l'API di acquisto di tanto in tanto? Non sarebbe completamente trasparente per gli utenti umani e praticamente ucciderebbe la maggior parte degli acquirenti di bot?
Un'implementazione sarebbe quella di cambiare i nomi dei campi che l'utente deve compilare e inviare sulla pagina dopo aver premuto il pulsante "I Want One". Quante volte all'anno vendi effettivamente BOC? Non così spesso. Quindi questo non sarebbe un enorme onere di programmazione per avere un'API di acquisto diversa programmata, testata e pronta per l'uso ogni volta che un BOC viene messo in vendita.
Assicurati solo che i robot che utilizzano l'API precedente e errata non arrestino il server. Forse ospitare ogni volta anche l'API di acquisto BOC su un server diverso. In questo modo i bot possono far crollare un server che non viene effettivamente utilizzato da noi acquirenti BOC umani.
a tal fine utilizzo Cloudflare in quanto non influisce sul mio sito ma blocca automaticamente qualsiasi utente malintenzionato con CAPTCHA e offre più funzionalità.
Se ho capito bene, il tuo problema più grande è con lo scraping dello schermo, non con l'acquisto automatico stesso.
In tal caso, il tuo passo più efficace sarebbe sconfiggere lo scraping dello schermo codificando in modo casuale la pagina in modo che appaia uguale (tipo di) ma sia sempre diversa a livello di codice. (usa codici esadecimali, codifica Java, immagini, cambia la struttura del codice circostante ...)
Ciò li costringerebbe a riscrivere costantemente il loro codice di scraping e quindi renderebbe molto più costoso per loro acquistare automaticamente la "merda". Se riescono a gestirlo. Probabilmente continuerebbero a colpire il tuo sito Web per un po 'fino a quando non si renderanno conto di non poter ottenere nulla da esso e rilasciarlo.
L'aspetto negativo di confondere l'inferno dei robot è che confonderà anche l'inferno dei crawler dei motori di ricerca.
Oggi farai abbastanza soldi per pagare il programma CAPTCHA di Cisco !! Siamo tutti abituati a comprare biglietti per concerti e altre cose ... Sembra giusto. Il modo in cui viene fatto oggi è sconvolgere alcuni e sollevare domande su una lotteria o spazzate. Sono sicuro che lo hai verificato prima di provare, ma non è davvero un modo divertente per acquistare BOC ... Prende tutto l'eccitazione!
Ottenere il BOC per primo o un ottimo prodotto anche se si è in vista attira le persone a Woot. Se non c'è motivo di rimanere in giro e acquistare tonnellate di cose che non ti servono mentre aspetti il BOC casuale, le vendite diminuiranno. Il CAPTCHA potrebbe essere l'unico modo per sconfiggere queste persone e mantenere ancora l'eccitazione di Woot.
Sono stato uno dei primi a ottenerlo per ordinare un BOC l'ultima volta e il mio primo ordine è stato scaricato con il milione di spedizioni e il secondo è andato a buon fine, ma è stato rimosso dal mio account in seguito. Ero arrabbiato. Ho lasciato Woot e non ho acquistato oggetti come facevo in passato in altri giorni. Ero disposto a riprovare, in questo modo, oggi. Dubito che lo farò in futuro senza un CAPTCHA per le cose divertenti.
Ci sono molti siti che cercano di essere come Woot. Ovviamente non sono all'altezza del tuo livello. Mi ritrovo a leggere la descrizione di un prodotto, non perché lo voglio, ma controllo anche per ridere. Non vorrei vedere qualcuno entrare con un programma più giusto e portare via la maggior parte dei tuoi affari.
Solo la mia opinione. Non so quasi nulla di robot e computer da quando sono un'infermiera .. Ma il mio voto è di passare al livello superiore ... I ragazzi con i robot dovrebbero solo mettersi in linea con il resto di noi e questo è il modo dovrebbe essere :) Lori
Per quanto riguarda CAPTCHA, perché non usare la soluzione di Google che richiede solo CAPTCHA da IP che sospetti siano bot o anche solo utenti che martellano il sito? Sono sicuro che chiedere a qualcuno un CAPTCHA quando acquistano non è poi così male se hanno martellato il sito comunque, è quasi lo stesso che stare in piedi e colpire ripetutamente F5. Ciò o forse richiede un CAPTCHA periodico durante il martellamento, diciamo ogni cento (forse più piccolo?) O giù di lì, per impedire il funzionamento dei robot di allarme. Hai bisogno di una sorta di CAPTCHA per evitare l'imbottigliamento, ma devi anche tenere conto del fatto che i tuoi utenti reali agiranno come dei robot.
Perché non cambi il nome e l'immagine del BOC ogni volta che lo offri? Sarebbe diventato parte del divertimento del wooting vedere l'ultima iterazione del BOC.
Da tempo (4 anni) utente di Woot.com e acquirente di alcuni sacchi di merda, tra i tanti altri oggetti che ora occupano spazio nel mio garage, sembra che la soluzione dovrebbe essere parte del tema generale di Woot.
Usa captcha, ma con una vena umoristica. Proprio come la promozione da $ 1,000,000, crea un gioco per identificarti come persona. Ciò ha ritardato in passato il "tutto esaurito" del BOC per un ragionevole lasso di tempo, mentre le persone, come me, si affrettano a capire il puzzle abbastanza semplice ma divertente per inserire un codice coupon.
Inoltre, mentre le persone si lamentano all'infinito per gli errori del server, non smettono di tornare. Parte del brivido di un BOC secondo me è il fatto che ci sono milioni di persone che cercano di ottenerne uno. Se i server generano un errore o una pagina funky, è un segno che sono da qualche parte in un gruppo di troppe persone che cercano di ottenere uno dei 1500 prodotti.
Se metti tanta creatività nella costruzione del puzzle, ed è abbastanza originale, ritarderà i robot abbastanza a lungo da dare a tutti gli altri la possibilità. Incorporando una parola casuale catturata come codice, inserendo una pagina intermedia tra "I Want One" e la pagina di acquisto, che richiede un'interazione unicamente umana, hai fermato i robot lì, fino a quando non capiscono cosa deve accadere.
• Non hai implementato un captcha noioso e talvolta dolorosamente difficile da leggere • hai reso il processo più divertente, • hai ridotto il carico sul server di acquisto sicuro effettivo • Formerai gli utenti di cui avranno bisogno "FARE" qualcosa per ottenere un BOC • Avrai interrotto i robot nella pagina intermedia, ritardando i loro acquisti fino a quando la maggior parte delle persone avrà almeno avuto la possibilità di provare a capire il puzzle divertente, ma non terribilmente difficile.
• Dato che essere casuali è ciò che riguarda un BOC, un puzzle/compito casuale e mutevole si adatterebbe semplicemente all'intero tono di un BOC.
Durante l'esperimento, la tecnologia dietro la pagina provvisoria può diventare più avanzata, con informazioni casuali che possono essere acquisite per l'uso nella pagina di acquisto. Da
Ho acquistato, senza l'ausilio di robot, né script diversi da wootalyzer, che ritengo un aiuto accettabile, 7 BOC dal 31/05/05. Il migliore, che non ho avuto, è stato il Please Please Me BOC. Anche le batterie B&D sono state divertenti, ma immagino che non abbiano sconcertato i robot, frustrato solo gli utenti normali.
A volte la migliore soluzione per un problema di tecnologia, non è più tecnologia.
Che cosa succede se si randomizzano o crittografano i nomi e gli ID del modulo, si randomizza l'ordine dei campi del modulo e si rende il modulo etichetta un'immagine captcha casuale, che renderebbe un attacco di script molto più difficile :-D
Rendi l'intera pagina sanguinosa un CAPTCHA!
Sorta come Sesame Street ... otto di queste cose, non appartengono qui ...
Inserisci 9 elementi, 9 moduli HTML, 9 I WANT ONE pulsanti sullo schermo.
(9 è solo il numero del giorno ... scegli il numero che desideri per rendere il layout ancora buono. 12. Forse. Forse personalizzalo per la risoluzione del browser di caricamento ...)
E rimescolarli per ogni persona.
Assicurati che il BOC debba essere "visto" per sapere quale sia ... ovviamente questo significa che anche gli altri 8 devono essere "visti solo", per sapere che NON sono l'oggetto da acquistare.
Assicurati di usare solo numeri assurdi per fare riferimento a tutto ciò che sta dietro le quinte sulla fonte della pagina. Bene, quindi il BOT vede il suo tempo BOC ... ma sarà una supposizione sfrenata scegliere il modulo HTML giusto da inviare per l'elaborazione.
Sai, se avessi pubblicato il tuo feed RSS usando pubsubhubbub, le persone non avrebbero dovuto visitare ripetutamente la tua pagina web per vedere la prossima cosa nel Woot-off, avrebbero semplicemente aspettato che comparisse sul loro Google Lettore.
Una potenziale soluzione al tuo problema specifico (e non a quello generale) sarebbe quella di richiedere agli utenti di accedere se vogliono vedere la "merda". Mostra solo i premi di merda agli utenti che hanno effettuato l'accesso. Tutti gli altri elementi possono rimanere visualizzabili dagli utenti non registrati come sempre. Quindi ai tuoi fedeli utenti viene data la priorità assoluta alla merda.
Dovresti ovviamente avvisare i tuoi utenti di questo, forse con una notifica che questo viene fatto per aumentare le possibilità che gli utenti reali trovino la merda.
Se il tuo problema specifico è la raccolta di bot per un particolare tipo di oggetto, prendi l'alternativa meno restrittiva e difendi solo da quel particolare attacco. Questa opzione eviterebbe quindi captchyas e il colpo di userability di cui sei preoccupato.
Se i robot accedono e iniziano a inviare spam, è possibile forzare il logout e bloccare l'account.
Se sono lì solo per prendere la borsa, se ne andranno abbastanza rapidamente e la tua pagina non subirà i grandi successi. Dimentica le soluzioni altamente tecniche.
2 cose:
soluzione di livello server: mod_evasive (se usi Apache)
http://www.zdziarski.com/projects/mod_evasive/
soluzione di livello frontale: captcha inverso o altro captcha non invadente
Crea una semplice regola firewall IP che elenca l'indirizzo IP se rilevi più di un max. numero di richieste in arrivo al secondo.
Avvertenze iniziali:
Non sono letterato; Non ho letto molti degli altri commenti qui.
Mi sono imbattuto in questo dalla descrizione di Woot questa mattina. Ho pensato che alcuni commenti di un utente moderato dei siti di woot (e due volte acquirente manuale di BOC) potrebbero essere utili.
Woot si trova in una posizione unica in cui si trova entrambi un sito commerciale e una destinazione con utenti fedeli, e capisco la delicatezza percepita di quell'equilibrio. Ma personalmente sento la tua preoccupazione per "l'impatto negativo dell'utente" di un Crap-CAPCHA ("CRAPCHA" - in qualche modo dubito di essere il primo a fare quel bavaglio) sugli utenti è molto sopravvalutato. Come utente sarei felice di dimostrare che sono umano. E mi fido di Woot per rendere il processo divertente e interessante, integrandolo nell'esperienza complessiva.
Questo porterà alla "corsa agli armamenti" postulata? Non lo so, ma può solo aiutare. Se, diciamo, le informazioni chiave da acquistare sono incluse nell'immagine del prodotto o implicite nella descrizione del prodotto (in un modo diverso ogni volta), il meglio che uno script potrebbe fare sarebbe aprire una pagina di acquisto al rilevamento di C-Word . In realtà, penso che vada bene: devi comunque essere on-line e il primo arrivato, primo servito, si applica ancora - Wootalyzer e strumenti simili aumentano semplicemente consapevolezza piuttosto che automatizzare l'acquisto mentre dormo o lavoro.
Buona fortuna a capirlo, e continuate così.
JGM
Stai diventando così difficile. Probabilmente mi prenderò a calci da quando ho appena vinto un BOC dal sito oggi con un sito bot, ma ho appena inserito il testo RANDOM CRAP in captcha sulla pagina principale del sito. Tutti i robot cercano il testo "RANDOM CRAP". Quindi, in pratica, eviti semplicemente di innescarli in primo luogo. Chiunque guardi con gli occhi vedrà che dice "Schifezza casuale".
Che ne dici di vendere le chiavi RSA a ciascun utente :) Ehi, se possono farlo per WoW, voi ragazzi dovreste essere in grado di farlo.
Mi aspetto un CdA per la mia risposta;)
Perché non rendere la prima pagina solo un elemento grafico mappato all'immagine (tutta un'immagine senza etichette, tag, ecc.)? Facile per un essere umano da leggere e comprendere praticamente su qualsiasi dispositivo, ma impossibile per un bot da interrogare. In sostanza, trasforma l'intera pagina iniziale in un captcha.
Probabilmente non c'è un magico proiettile d'argento che si prenderà cura dei robot, ma una combinazione di questi suggerimenti può aiutare a scoraggiarli e ridurli a un numero più gestibile.
Per favore fatemi sapere se avete bisogno di chiarimenti su uno di questi suggerimenti:
Probabilmente non capisco completamente il problema, ma questa idea mi è venuta in mente. Utilizzare AJAX per disegnare e aggiornare il contenuto dinamico a un intervallo fisso, rallentando deliberatamente il caricamento dell'intera pagina mediante l'aggiornamento.
Ad esempio, fai in modo che l'intera pagina impieghi 15 secondi interi per disegnare la prima volta che viene visitata, dopo di che il contenuto dinamico viene automaticamente aggiornato usando AJAX dopo un tempo impostato di, diciamo, 5 secondi. Sarebbe un grosso svantaggio fare una ricarica a piena pagina. La pagina può visualizzare regolarmente nuove informazioni (compresi gli annunci), ma un ridisegno di una pagina intera tramite ricarica sarebbe notevolmente più lento.
Sarà possibile per gli script kiddie capire la query AJAX e automatizzarla ma, quindi, sarebbe anche molto semplice limitare tali richieste dallo stesso IP. Poiché non esiste un metodo tipico per un utente umano standard per avviare tali richieste dal browser, sarebbe ovvio che le richieste ad alta velocità all'URL AJAX dallo stesso IP sarebbero state avviate da una qualche forma di automatizzata sistema.
utilizzare la limitazione della connessione simultanea per indirizzo IP tramite iptables sul server (se è basato su Linux) o utilizzare un "router" dedicato
Due soluzioni, una high-tech e una low-tech.
Prima l'high-tech: le offerte BOC si esauriscono in pochi secondi perché i bot ne ottengono molti nei primi millisecondi. Quindi, invece di provare a sconfiggere i robot, vendi loro quello che stanno cercando: un sacco di merda. Merda senza valore, ovviamente: graffette piegate e foto contaminate di Rosie O'Donnell. Quindi avere ritardi casuali incorporati sul server per alcuni secondi alla volta. Man mano che la vendita continua, il valore effettivo del prodotto venduto aumenterà mentre il prezzo di vendita no. In questo modo i primi acquirenti (robot nei primi millisecondi) otterranno qualcosa che vale molto meno di quello che hanno pagato (torte di cipolle marroni?), I successivi acquirenti (robot più lenti o umani più veloci) otterranno qualcosa di non spettacolare ma vale il prezzo di acquisto ( acquistato in conto consegna?) e gli ultimi acquirenti (quasi tutti gli umani) otterranno qualcosa che vale più del prezzo di acquisto (scoppiare champagne?). Quella TV a schermo piatto potrebbe essere nell'ultimo BOC acquistato.
Chiunque aspetta troppo a lungo si perderà, ma allo stesso tempo chiunque comprerà troppo in fretta verrà eliminato. Il trucco è aspettare un po 'di tempo ... ma non troppo. C'è un po 'di fortuna, che è come dovrebbe essere.
La soluzione a bassa tecnologia sarebbe quella di cambiare il nome del BOC in qualcosa che gli umani possano interpretare ma i robot non possono. Pelle di vino degli escrementi? Sacco contenente odore? Superficie topologicamente piatta adiacente a merci assortite? Non utilizzare mai lo stesso nome due volte, utilizzare immagini leggermente diverse e spiegare nella descrizione del prodotto cosa viene effettivamente venduto.
Una soluzione piuttosto semplice è quella di tracciare la differenza di tempo tra il rendering dei moduli e ottenere la risposta: i robot di solito hanno tempi di risposta estremamente brevi di millisecondi, nessun utente potrebbe farlo; o tempi di risposta estremamente lunghi di diverse ore.
C'è uno snippet Django che lo fa, insieme a una descrizione più dettagliata: