Domanda

  

Ho accettato una risposta, ma purtroppo, credo che siamo bloccati con il 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, in quanto wiki della community).

Situazione

Riguarda le 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.

Valutazione

  

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 i problemi con gli ISP IP non statici e i potenziali risultati delle prestazioni nel tentativo di rintracciarli).

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 ben progettati per sconfiggere i bot 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 invece degli ID dei moduli e utilizzare un controllo browser compatibile con javascript.

& nbsp;

  

lc again : " A meno che, ovviamente, l'hype faccia parte del tuo schema di marketing. & Quot; 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.

& nbsp;

  

È stato utile?

Soluzione

Che ne dici di implementare qualcosa come SO fa con i CAPTCHA?

Se stai usando il sito normalmente, probabilmente non ne vedrai mai uno. Se ti capita di ricaricare la stessa pagina troppo spesso, pubblicare commenti successivi troppo rapidamente o qualcos'altro che innesca un allarme, fai loro dimostrare che sono umani. Nel tuo caso, si tratterebbe probabilmente di ricaricare costantemente la stessa pagina, seguire rapidamente tutti i link di una pagina o compilare un modulo d'ordine troppo velocemente per essere umani.

Se falliscono il controllo x volte di seguito (diciamo, 2 o 3), dai a quell'IP un timeout o altra misura simile. Quindi alla fine del timeout, scaricali di nuovo al controllo.


Poiché hai utenti non registrati che accedono al sito, hai solo gli IP per continuare. Puoi inviare sessioni a ciascun browser e tracciare in questo modo, se lo desideri. E, naturalmente, lancia un controllo umano se troppe sessioni vengono (ri) create in successione (nel caso in cui un bot continui a eliminare il cookie).

Per quanto riguarda la cattura di troppi innocenti, puoi mettere un disclaimer nella pagina di controllo umano: " Questa pagina può anche apparire se troppi utenti anonimi stanno visualizzando il nostro sito dalla stessa posizione. Ti invitiamo a registrarti o effettuare il login per evitarlo. & Quot; (Regola la formulazione in modo appropriato.)

Inoltre, quali sono le probabilità che X persone stiano caricando le stesse pagine contemporaneamente da un IP? Se sono alti, forse hai bisogno di un meccanismo di attivazione diverso per il tuo allarme bot.


Modifica: un'altra opzione è se falliscono troppe volte, e sei sicuro della domanda del prodotto, per bloccarli e farli CHIAMARE personalmente per rimuovere il blocco.

Far chiamare le persone sembra una misura asinina, ma si assicura che ci sia un essere umano da qualche parte dietro il computer . La chiave è avere il blocco in atto solo per una condizione che non dovrebbe quasi mai accadere a meno che non sia un bot (ad es. Fallire il controllo più volte di seguito). Quindi FORZA l'interazione umana - per prendere il telefono.

In risposta al commento di avermi chiamato, c'è ovviamente quel compromesso qui. Sei abbastanza preoccupato di garantire che i tuoi utenti siano umani per accettare un paio di telefonate quando vanno in vendita? Se fossi così preoccupato per un prodotto che arriva agli utenti umani, dovrei prendere questa decisione, forse sacrificando un po 'del mio tempo nel processo.

Dal momento che sembra che tu sia determinato a non permettere ai robot di avere il sopravvento / sbattere il tuo sito, credo che il telefono possa essere una buona opzione. Dal momento che non traggo profitto dal tuo prodotto, non ho interesse a ricevere queste chiamate. Se dovessi condividere parte di quel profitto, tuttavia, potrei diventare interessato. Poiché questo è il tuo prodotto, devi decidere quanto tieni e implementare di conseguenza.


Gli altri modi per rilasciare il blocco non sono altrettanto efficaci: un timeout (ma dovrebbero sbattere di nuovo il tuo sito dopo, risciacquare-ripetere), un lungo timeout (se fosse davvero un essere umano che cerca di acquistare il tuo prodotto, sarebbero SOL e puniti per aver fallito il controllo), e-mail (facilmente eseguita dai robot), fax (stesso) o posta ordinaria (impiega troppo tempo).

Ovviamente potresti invece aumentare il periodo di timeout per IP ogni volta che ottengono un timeout. Assicurati solo di non punire inavvertitamente i veri umani.

Altri suggerimenti

Devi trovare un modo per fare in modo che i robot acquistino roba che è molto costosa: dado 12mm: $ 20. Scopri quanti robot si attivano prima che gli sceneggiatori decidano che li stai giocando.

Utilizza i profitti per acquistare più server e pagare per la larghezza di banda.

La mia soluzione sarebbe quella di rendere inutile la raschiatura dello schermo inserendo un ritardo di circa 10 minuti per "robot e script.

Ecco come lo farei:

  • Registra e identifica eventuali ripetitori.

Non è necessario registrare tutti gli indirizzi IP ad ogni hit. Traccia solo uno su ogni 20 colpi circa. Un trasgressore ripetuto apparirà comunque in un tracciamento occasionale randomizzato.

  • Conserva una cache della tua pagina da circa 10 minuti prima.

  • Quando un ripetitore / bot colpisce il tuo sito, dai loro la pagina cache di 10 minuti.

Non sapranno immediatamente che stanno ottenendo un vecchio sito. Saranno in grado di raschiarlo e tutto il resto, ma non vinceranno più alcuna gara, perché "persone reali" avrà un vantaggio di 10 minuti.

Vantaggi:

  • Nessuna seccatura o problema per gli utenti (come CAPTCHA).
  • Implementato completamente sul lato server. (nessuna dipendenza da Javascript / Flash)
  • La pubblicazione di una pagina cache più vecchia dovrebbe richiedere meno prestazioni rispetto a una pagina live. Puoi effettivamente ridurre il carico sui tuoi server in questo modo!

Inconvenienti

  • Richiede il monitoraggio di alcuni indirizzi IP
  • Richiede la conservazione e il mantenimento di una cache di pagine precedenti.

Cosa ne pensi?

Dai un'occhiata a questo articolo di ned Batchelder qui . Il suo articolo riguarda l'interruzione degli spambots, ma le stesse tecniche potrebbero facilmente applicarsi al tuo sito.

  

Invece di fermare i robot avendo   le persone si identificano, possiamo   fermare i robot rendendolo difficile   per loro di fare un post di successo, o   facendoli identificare inavvertitamente   se stessi come robot. Questo rimuove il   carico da parte delle persone, e lascia il   modulo di commento privo di anti-spam visibile   misure.

     

Questa tecnica è come prevengo   spambots su questo sito. Funziona. Il   il metodo descritto qui non guarda   il contenuto.

Alcune altre idee:

  • Crea un meccanismo ufficiale di notifica automatica (feed RSS? Twitter?) a cui le persone possono abbonarsi quando il tuo prodotto è in vendita. Ciò riduce la necessità per le persone di creare script.
  • Cambia la tua tecnica di offuscamento subito prima un nuovo articolo sarà messo in vendita. Quindi, anche se gli scripter possono intensificare la corsa agli armamenti, sono sempre indietro di un giorno.

MODIFICA: Per essere totalmente chiari, l'articolo di Ned sopra descrive i metodi per impedire l'acquisto automatico di articoli impedendo a un BOT di esaminare i moduli per inviare un ordine. Le sue tecniche non sarebbero utili per impedire ai robot di raschiare lo schermo della home page per determinare quando un Bandoleer of Carrots è in vendita. Non sono sicuro che prevenire QUELLO sia davvero possibile.

Per quanto riguarda i tuoi commenti sull'efficacia delle strategie di Ned: Sì, discute gli honeypot, ma non penso che sia la sua strategia più forte. La sua discussione sul SPINNER è il motivo originale per cui ho citato il suo articolo. Mi dispiace non averlo chiarito nel mio post originale:

  

Lo spinner è un campo nascosto utilizzato per   alcune cose: si unisce insieme a   numero di valori che impediscono   manomissione e replay, ed è abituato   nomi di campo oscuri. Lo spinner è un   Hash MD5 di:

     
      
  • Il timestamp,
  •   
  • L'indirizzo IP del client,
  •   
  • L'ID della voce del blog commentato e
  •   
  • Un segreto.
  •   

Ecco come è possibile implementarlo su WOOT.com:

Modifica il " segreto " valore utilizzato come parte dell'hash ogni volta che un nuovo articolo viene messo in vendita. Ciò significa che se qualcuno progetterà un BOT per l'acquisto automatico di articoli, funzionerebbe solo fino a quando l'articolo successivo non sarà in vendita !!

Anche se qualcuno è in grado di ricostruire rapidamente il proprio bot, tutti gli altri utenti effettivi avranno già acquistato un BOC e il tuo problema è risolto!

L'altra strategia che discute è di cambiare la tecnica honeypot di volta in volta (di nuovo, cambiarla quando un nuovo oggetto sarà in vendita):

  • Utilizza le classi CSS (ovviamente randomizzate) per impostare i campi o un elemento contenitore da visualizzare: nessuno.
  • Colora i campi allo stesso modo (o in modo molto simile) allo sfondo della pagina.
  • Utilizza il posizionamento per spostare un campo fuori dall'area visibile della pagina.
  • Rendi un elemento troppo piccolo per mostrare il campo honeypot contenuto.
  • Lascia i campi visibili, ma usa il posizionamento per coprirli con un elemento oscuro.
  • Usa Javascript per effettuare queste modifiche, richiedendo a un bot di avere un motore Javascript completo.
  • Lascia gli honeypot visualizzati come gli altri campi, ma dì alle persone di non inserire nulla in essi.

Immagino che la mia idea generale sia quella di CAMBIARE IL DESIGN DELLA FORMA quando ogni nuovo articolo sarà messo in vendita. O almeno, cambiarlo quando viene messo in vendita un nuovo BOC.

Qual è, un paio di volte al mese?

Se accetti questa risposta, mi darai un avvertimento quando è prevista la prossima? :)

D: Come impediresti agli scripter di sbattere il tuo sito centinaia di volte al secondo?
A: Non lo fai. Non c'è modo di prevenire questo comportamento da parte di agenti esterni.

Potresti impiegare una vasta gamma di tecnologie per analizzare le richieste in arrivo e tentare euristicamente di determinare chi è e non è umano ... ma fallirebbe. Alla fine, se non immediatamente.

L'unica soluzione praticabile a lungo termine è cambiare il gioco in modo che il sito non sia adatto ai bot o sia meno attraente per gli script.

Come lo fai? Bene, questa è una domanda diversa! ; -)

...

OK, alcune opzioni sono state fornite (e rifiutate) sopra. Non ho familiarità con il tuo sito, dopo averlo visto solo una volta, ma poiché le persone possono leggere il testo in immagini e i robot non possono farlo facilmente, cambia l'annuncio in un'immagine. Non un CAPTCHA , solo un'immagine -

  • genera l'immagine (ovviamente memorizzata nella cache) quando viene richiesta la pagina
  • mantieni lo stesso nome della fonte dell'immagine, in modo da non dare via il gioco
  • la maggior parte delle volte l'immagine avrà un testo normale e sarà allineata per far parte della pagina HTML in linea
  • quando il gioco è "acceso", l'immagine cambia nel testo dell'annuncio
  • il testo dell'annuncio rivela un URL e / o un codice che devono essere inseriti manualmente per acquisire il premio. CAPTCHA il codice se vuoi, ma probabilmente non è necessario.
  • per ulteriore sicurezza, il codice può essere un token una tantum generato appositamente per la richiesta / IP / agente, in modo che le richieste ripetute generino codici diversi. Oppure puoi pre-generare un gruppo di codici casuali (un pad una tantum) se la generazione su richiesta è troppo faticosa.

Esegui le prove a tempo di persone reali che rispondono a questo, e ignora le risposte ('oops, si è verificato un errore, scusa! per favore riprova') più velocemente di (diciamo) metà di questo tempo. Questo evento dovrebbe anche attivare un avviso agli sviluppatori che almeno un bot ha capito il codice / gioco, quindi è tempo di cambiare il codice / gioco.

Continua comunque a cambiare periodicamente il gioco, anche se nessun robot lo attiva, solo per perdere tempo negli script. Alla fine gli scripter dovrebbero stancarsi del gioco e andare altrove ... speriamo ;-)

Un ultimo suggerimento: quando arriva una richiesta per la tua pagina principale, inseriscila in una coda e rispondi alle richieste in ordine in un processo separato (potresti dover hackerare / estendere il web server per fare questo, ma sarà probabilmente utile). Se arriva un'altra richiesta dallo stesso IP / agente mentre la prima richiesta è nella coda, ignorarla. Ciò dovrebbe automaticamente eliminare il carico dai robot.

MODIFICA: un'altra opzione, oltre all'uso delle immagini, è usare JavaScript per compilare il testo di acquisto / non acquisto; i robot raramente interpretano javascript, quindi non lo vedrebbero

Non so quanto sia fattibile: ... vai all'offensiva.

Scopri quali dati stanno cercando i robot. Dai loro i dati che stanno cercando quando NON vendi la merda. Fallo in modo da non disturbare o confondere gli utenti umani. Quando i bot attivano la seconda fase, accedono e compilano il modulo per acquistare $ 100 roombas anziché BOC. Naturalmente, questo presuppone che i robot non siano particolarmente robusti.

Un'altra idea è quella di implementare cali di prezzo casuali nel corso del periodo di vendita dei bagagli. Chi comprerebbe una valigia a caso per $ 150 quando DICHIARA CHIARAMENTE che vale solo $ 20? Nessuno ma robot troppo zelanti. Ma poi 9 minuti dopo sono $ 35 dollari ... poi 17 minuti dopo sono $ 9. O qualunque altra cosa.

Certo, i re degli zombi sarebbero in grado di reagire. Il punto è rendere i loro errori molto costosi per loro (e farli pagare per combatterli).

Tutto questo presuppone che tu voglia far incazzare alcuni signori dei bot, il che potrebbe non essere consigliabile al 100%.

Quindi il problema sembra essere davvero: i robot vogliono la loro "borsa" o merda " perché ha un alto valore percepito a un basso prezzo percepito. A volte offri questo oggetto e i robot si nascondono, aspettando di vedere se è disponibile e poi acquistano l'oggetto.

Dal momento che sembra che i proprietari dei bot stiano realizzando un profitto (o potenzialmente realizzando un profitto), il trucco è renderli non redditizi per incoraggiandoli a comprare la merda.

In primo luogo, sempre offre il "quot" bag 'o crap " ;.

In secondo luogo, assicurati che la merda di solito sia una merda.

Terzo, ruota frequentemente le schifezze.

Semplice, no?

Avrai bisogno di un permanente "perché la nostra schifezza a volte è una schifezza?" link accanto all'offerta per spiegare agli umani cosa sta succedendo.

Quando il bot vede che c'è una schifezza e la schifezza viene acquistata automaticamente, il destinatario sarà terribilmente arrabbiato per aver pagato $ 10 per uno stecchino rotto. E poi un sacco della spazzatura vuoto. E poi un po 'di sporco dal fondo della scarpa.

Se acquistano abbastanza di questa merda in un periodo di tempo relativamente breve (e hai grosse dichiarazioni di non responsabilità in tutto il luogo che spiegano perché lo stai facendo), perderanno un "bag" o cash " equo ; sulla tua "borsa" o schifezza ". Anche l'intervento umano da parte loro (verificando che la cagata non sia una cagata) può fallire se si ruota la cagata abbastanza spesso. Cavolo, forse i robot noteranno e non compreranno nulla che è stato nella rotazione per un tempo troppo breve, ma ciò significa che gli umani compreranno la non merda.

Diamine, i tuoi clienti abituali potrebbero essere così divertiti da poterlo trasformare in un'enorme vittoria di marketing. Inizia a pubblicare la quantità di "crap " la carpa viene venduta. Le persone torneranno solo per vedere quanto sono stati morsi i robot.

Aggiornamento: mi aspetto che potresti ricevere alcune chiamate in anticipo con le persone che si lamentano. Non penso che tu possa fermarlo del tutto. Tuttavia, se questo uccide i robot, puoi sempre fermarlo e riavviarlo in seguito.

  
      
  1. Vendi l'oggetto a umani non scripting.

  2.   
  3. Mantieni il sito in esecuzione a una velocità non rallentata dai bot.

  4.   
  5. Non disturbare gli utenti "normali" con nessuna attività da completare per dimostrare che sono umani.

  6.   

Probabilmente non vuoi sentirlo, ma # 1 e # 3 si escludono a vicenda.

Su Internet, nessuno sa che sei un cane

Beh, nessuno sa nemmeno che sei un bot. Non esiste un modo programmatico per dire se c'è un essere umano dall'altra parte della connessione senza richiedere alla persona di fare qualcosa. Impedire a script / bot di fare cose sul web è il motivo principale per cui sono stati inventati i CAPTCHA. Non è che questo sia un nuovo problema che non ha visto molti sforzi. Se ci fosse un modo migliore per farlo, uno che non comportava la seccatura per gli utenti reali di un CAPTCHA, tutti lo userebbero già.

Penso che tu debba affrontare il fatto che se vuoi tenere i robot fuori dalla tua pagina di ordinazione, un buon CAPTCHA è l'unico modo per farlo. Se la domanda per le tue schifezze casuali è abbastanza alta da consentire alle persone di fare di tutto per ottenerle, gli utenti legittimi non saranno scoraggiati da un CAPTCHA.

Il metodo utilizzato da Woot per combattere questo problema sta cambiando il gioco - letteralmente. Quando presentano in vendita un oggetto straordinariamente desiderabile, fanno in modo che gli utenti giochino un videogioco per ordinarlo.

Non solo combatte con successo i robot (possono facilmente apportare piccole modifiche al gioco per evitare i giocatori automatici o persino fornire un nuovo gioco per ogni vendita), ma dà anche l'impressione agli utenti di "vincere". l'articolo desiderato mentre rallenta il processo di ordinazione.

Si esaurisce ancora molto rapidamente, ma penso che la soluzione sia buona: rivalutare il problema e modificare i parametri ha portato a una strategia di successo in cui semplicemente non esistevano soluzioni strettamente tecniche.


L'intero modello di business si basa su "primo arrivato, primo servito". Non puoi fare ciò che hanno fatto le stazioni radio (non vincono più il primo chiamante, vincono il 5 ° o 20 ° o 13 ° chiamante) - non corrisponde alla tua funzione principale.

No, non c'è modo di farlo senza cambiare l'esperienza di ordinazione per gli utenti reali.

Supponiamo che tu attui tutte queste tattiche. Se decido che questo è importante, farò semplicemente lavorare 100 persone con me, creeremo software per funzionare sui nostri 100 computer separati e accederemo al tuo sito 20 volte al secondo (5 secondi tra gli accessi per ciascun utente / cookie / account / indirizzo IP).

Hai due fasi:

  1. Guarda la prima pagina
  2. Ordine

Non puoi mettere un blocco captcha n. 1 - questo perderà i clienti reali (" Cosa? Devo risolvere un captcha ogni volta che voglio vedere l'ultimo woot?!? ").

Quindi il mio piccolo gruppo guarda, cronometrato insieme in modo da ottenere circa 20 controlli al secondo, e chiunque vede la modifica per primo avvisa tutti gli altri (automaticamente), che caricherà di nuovo la prima pagina, seguirà il link dell'ordine ed eseguirà la transazione (che può anche avvenire automaticamente, a meno che tu non implementi captcha e lo cambi per ogni wootoff / boc).

Puoi mettere un captcha di fronte al n. 2, e mentre detesti farlo, potrebbe essere l'unico modo per assicurarti che anche se i robot guardano la prima pagina, gli utenti reali stanno ottenendo i prodotti.

Ma anche con captcha la mia piccola banda di 100 avrebbe comunque un vantaggio significativo sulla prima mossa - e non c'è modo di dire che non siamo umani. Se inizi a programmare i nostri accessi, aggiungeremmo un po 'di jitter. Potremmo selezionare casualmente il computer da aggiornare in modo che l'ordine degli accessi cambi costantemente - ma sembra ancora abbastanza come un essere umano.

Per prima cosa, sbarazzati dei semplici robot

È necessario disporre di un firewall adattivo che controllerà le richieste e se qualcuno sta facendo l'ovvia cosa stupida: aggiornare più di una volta al secondo allo stesso IP, quindi utilizzare tattiche per rallentarle (rilasciare i pacchetti, rispedire rifiutati o 500 errori, ecc.).

Ciò dovrebbe ridurre significativamente il traffico e alterare le tattiche utilizzate dagli utenti di bot.

Secondo, rendi il server incredibilmente veloce.

Davvero non vuoi sentire questo ... ma ...

Penso che ciò di cui hai bisogno sia una soluzione completamente personalizzata dal basso verso l'alto.

Non è necessario pasticciare con lo stack TCP / IP, ma potrebbe essere necessario sviluppare un server personalizzato molto, molto, molto veloce, appositamente progettato per correlare le connessioni utente e reagire in modo appropriato a vari attacchi.

Apache, lighthttpd, ecc. sono tutti ottimi per essere flessibili, ma gestisci un sito web a scopo singolo e devi davvero essere in grado di fare entrambi più di quanto gli attuali server siano in grado di fare (sia nella gestione del traffico, sia in combattere adeguatamente i robot).

Servendo una pagina Web in gran parte statica (aggiornamenti ogni 30 secondi circa) su un server personalizzato non dovresti solo essere in grado di gestire 10 volte il numero di richieste e traffico (perché il server non sta facendo altro che ottenere la richiesta e leggendo la pagina dal mem

Dichiarazione di non responsabilità: questa risposta è completamente non legata alla programmazione. Tuttavia, cerca di attaccare il motivo degli script in primo luogo.

Un'altra idea è se hai davvero una quantità limitata da vendere, perché non la cambi da una metodologia del primo arrivato, primo servito? A meno che, ovviamente, l'hype non faccia parte del tuo schema di marketing.

Ci sono molte altre opzioni e sono sicuro che altri possano pensarne alcune diverse:

  • una coda di ordinazione (sistema di pre-ordine) - Alcuni script potrebbero ancora finire nella parte anteriore della coda, ma è probabilmente più veloce inserire manualmente le informazioni.

  • un sistema di lotteria (tutti coloro che cercano di ordinarne uno sono entrati nel sistema) - In questo modo le persone con gli script hanno le stesse possibilità di quelle senza.

  • una coda prioritaria - Se c'è davvero un alto valore percepito, le persone potrebbero essere disposte a pagare di più. Implementa una coda di ordinazione, ma consenti alle persone di pagare di più per essere posizionate più in alto nella coda.

  • asta (il merito va a David Schmitt per questo, i commenti sono miei) - Le persone possono ancora usare gli script per accedere all'ultimo minuto, ma non solo cambia la struttura dei prezzi, ma le persone si aspettano di combatterlo con gli altri. Puoi anche fare qualcosa per limitare il numero di offerte in un determinato periodo di tempo, fare in modo che le persone telefonino in anticipo per un codice di autorizzazione, ecc.

Non importa quanto i nazisti pensassero sicuri delle loro comunicazioni, gli alleati spesso rompevano i loro messaggi. Indipendentemente dal modo in cui si tenta di impedire ai bot di utilizzare il proprio sito, i proprietari dei bot si adopereranno per aggirarlo. Mi dispiace se questo ti rende il nazista :-)

Penso che sia necessaria una mentalità diversa

  • Non tentare di impedire ai bot di utilizzare il tuo sito
  • Non cercare una soluzione che funzioni immediatamente, gioca con il gioco lungo

Pensa che non importa se il cliente del tuo sito è un essere umano o un bot, entrambi pagano solo clienti; ma uno ha un vantaggio sleale rispetto all'altro. Alcuni utenti senza molta vita sociale (eremiti) possono essere altrettanto fastidiosi per gli altri utenti del tuo sito come i robot.

Registra l'ora in cui pubblichi un'offerta e l'ora in cui un account decide di acquistarla.

  

Questo ti dà una registrazione di quanto velocemente   il cliente sta acquistando roba.

Varia l'ora del giorno in cui pubblichi le offerte.

  

Ad esempio, avere una finestra di 3 ore   a partire da qualche tempo oscuro del   giorno (mezzanotte?) Solo robot ed eremiti   aggiornerà costantemente una pagina per 3   ore solo per ottenere un ordine entro   secondi. Non variare mai il tempo di base,   solo le dimensioni della finestra.

Nel tempo emergerà un'immagine.

01: puoi vedere quali account acquistano regolarmente prodotti in pochi secondi dal momento in cui vengono pubblicati. Suggerendo che potrebbero essere dei robot.

02: puoi anche guardare la finestra del tempo usata per le offerte, se la finestra è di 1 ora, alcuni dei primi acquirenti saranno umani. Tuttavia, un essere umano raramente si aggiorna per 4 ore. Se il tempo trascorso è abbastanza coerente tra pubblicazione / acquisto indipendentemente dalla durata della finestra, si tratta di un bot. Se il tempo di pubblicazione / acquisto è breve per finestre piccole e aumenta per finestre grandi, è un eremita!

Ora invece di impedire ai bot di utilizzare il tuo sito, hai abbastanza informazioni per dirti quali account sono certamente utilizzati dai bot e quali account saranno probabilmente utilizzati dagli eremiti. Quello che fai con queste informazioni dipende da te, ma puoi certamente usarlo per rendere il tuo sito più giusto per le persone che hanno una vita.

Penso che vietare gli account dei bot sarebbe inutile, sarebbe come telefonare a Hitler e dire "Grazie per le posizioni delle tue U-boat!" In qualche modo è necessario utilizzare le informazioni in un modo che i proprietari dell'account non realizzeranno. Vediamo se riesco a sognare qualcosa .....

Elaborazione degli ordini in una coda:

Quando il cliente effettua un ordine, riceve immediatamente un'e-mail di conferma in cui gli comunica che il suo ordine è stato inserito in una coda e verrà avvisato al momento dell'elaborazione. Provo questo genere di cose con l'ordine / la spedizione su Amazon e non mi disturba affatto, non mi dispiace ricevere un'e-mail giorni dopo che mi dice che il mio ordine è stato spedito fintanto che ricevo immediatamente un'e-mail che mi dice che Amazon sa che voglio il libro. Nel tuo caso sarebbe un'e-mail per

  1. Il tuo ordine è stato effettuato ed è in coda.
  2. Il tuo ordine è stato elaborato.
  3. Il tuo ordine è stato spedito.

Gli utenti pensano di essere in una coda corretta. Elabora la coda ogni 1 ora in modo che anche gli utenti normali possano sperimentare una coda, in modo da non destare sospetti. Elaborare gli ordini da account bot ed eremiti solo dopo che sono stati in coda per il "tempo medio di ordini umani + x ore". Ridurre efficacemente i robot per l'uomo.

Dico esporre le informazioni sul prezzo usando un'API. Questa è la soluzione non intuitiva ma funziona per darti il ??controllo della situazione. Aggiungi alcune limitazioni all'API per renderlo leggermente meno funzionale rispetto al sito Web.

Potresti fare lo stesso per l'ordinazione. Puoi sperimentare piccole modifiche alla funzionalità / prestazioni dell'API fino a ottenere l'effetto desiderato.

Esistono proxy e botnet per sconfiggere i controlli IP. Ci sono script di lettura captcha che sono estremamente buoni. Ci sono persino squadre di lavoratori in India che sconfiggono i captcha a un piccolo prezzo. Qualsiasi soluzione che puoi trovare può essere ragionevolmente sconfitta. Anche le soluzioni di Ned Batchelder possono essere superate utilizzando un controllo WebBrowser o un altro browser simulato combinato con un elenco di botnet o proxy.

Attualmente stiamo utilizzando i bilanciatori di carico BigIP di ultima generazione da F5 per fare ciò. Il BigIP ha funzionalità avanzate di gestione del traffico in grado di identificare raschiatori e robot in base alla frequenza e ai modelli di utilizzo anche tra una serie di fonti dietro un singolo IP. Può quindi limitarli, offrire loro contenuti alternativi o semplicemente taggarli con intestazioni o cookie in modo da poterli identificare nel codice dell'applicazione.

Che ne dici di introdurre un ritardo che richiede l'interazione umana, come una sorta di "gioco CAPTCHA". Ad esempio, potrebbe essere un piccolo gioco Flash in cui durante 30 secondi devono far scoppiare le palle a scacchi ed evitare di far scoppiare palle solide (evitando problemi di daltonismo!). Al gioco verrebbe assegnato un seme di numero casuale e ciò che il gioco trasmette al server sarebbero le coordinate e i timestamp dei punti cliccati, insieme al seme usato.

Sul server simuli le meccaniche di gioco usando quel seme per vedere se i clic avrebbero effettivamente fatto scoppiare le palle. Se lo facessero, non solo erano umani, ma impiegavano 30 secondi per convalidare se stessi. Dai loro un ID di sessione.

Hai lasciato che l'id della sessione facesse quello che gli piace, ma se fa troppe richieste, non possono continuare senza giocare di nuovo.

Prima di tutto, lasciami riassumere ciò che dobbiamo fare qui. Mi rendo conto che sto solo parafrasando la domanda originale, ma è importante ottenere questo risultato al 100%, perché ci sono molti ottimi suggerimenti che danno 2 o 3 su 4 giusti, ma come dimostrerò, avrai bisogno di un approccio poliedrico per soddisfare tutti i requisiti.

Requisito 1: sbarazzarsi del "bot slamming":

Il rapido "sbattere" della tua prima pagina sta danneggiando le prestazioni del tuo sito ed è al centro del problema. Lo 'slamming' proviene da entrambi i bot a singolo IP e - presumibilmente - anche dalle botnet. Vogliamo sbarazzarci di entrambi.

Requisito 2: non scherzare con l'esperienza dell'utente:

Potremmo risolvere la situazione del bot in modo abbastanza efficace implementando una brutta procedura di verifica come telefonare a un operatore umano, risolvere un gruppo di CAPTCHA o simili, ma sarebbe come costringere ogni passeggero aereo innocente a saltare attraverso pazzi cerchi di sicurezza solo per la minima possibilità di catturare il più stupido dei terroristi. Oh aspetta - lo facciamo davvero. Ma vediamo se possiamo non farlo su woot.com.

Requisito 3: evitare la "corsa agli armamenti":

Come accennato, non vuoi essere coinvolto nella corsa agli armamenti di spambot. Quindi non puoi usare semplici modifiche come campi di moduli nascosti o confusi, domande di matematica, ecc., Poiché sono essenzialmente misure di oscurità che possono essere banalmente individuate e aggirate.

Requisito 4: contrastare i robot di "allarme":

Questo potrebbe essere il più difficile dei tuoi requisiti. Anche se siamo in grado di fare un'efficace sfida di verifica umana, i robot potrebbero comunque eseguire il polling della tua prima pagina e avvisare lo script quando c'è una nuova offerta. Vogliamo anche rendere impossibile quei robot. Questa è una versione più forte del primo requisito, poiché non solo i robot non possono emettere richieste di lancio rapido dannose per le prestazioni, ma non possono nemmeno emettere richieste ripetute sufficienti per inviare un "allarme" allo scripter in tempo per vincere l'offerta.


Va ??bene, quindi vediamo se possiamo soddisfare tutti e quattro i requisiti. Innanzitutto, come ho già detto, nessuna misura farà il trucco. Dovrai combinare un paio di trucchi per ottenerlo e dovrai ingoiare due fastidi:

  1. Sarà richiesto un numero limitato di utenti per saltare attraverso i cerchi
  2. Un numero limitato di utenti non sarà in grado di ottenere le offerte speciali

Mi rendo conto che sono fastidiosi, ma se riusciamo a rendere il numero "piccolo" abbastanza piccolo , spero che concorderai che gli aspetti positivi superano quelli negativi.

Prima misura: limitazione basata sull'utente:

  

Questo è un gioco da ragazzi, e sono sicuro che lo fai già. Se un utente ha effettuato l'accesso e continua ad aggiornare 600 volte al secondo (o qualcosa del genere), smetti di rispondere e gli dici di raffreddarlo. In effetti, probabilmente rallenti le sue richieste in modo significativo prima di quello, ma hai l'idea. In questo modo, un bot connesso verrà bannato / limitato non appena inizierà il polling del tuo sito. Questa è la parte facile. I robot non autenticati sono il nostro vero problema, quindi su di loro:

Seconda misura: una qualche forma di limitazione dell'IP, come suggerito da quasi tutti:

  

Indipendentemente da ciò, dovrai fare alcuni throttling basato su IP per contrastare il "bot slamming". Poiché ti sembra importante consentire ai visitatori non autenticati (non registrati) di ottenere le offerte speciali, inizialmente hai solo gli IP da percorrere e, sebbene non siano perfetti, funzionano contro i bot a singolo IP. Le botnet sono una bestia diversa, ma tornerò a quelle. Per ora, faremo qualche semplice limitazione per battere i bot single-IP a fuoco rapido.

     

Il calo delle prestazioni è trascurabile se si esegue il controllo IP prima di ogni altra elaborazione, si utilizza un server proxy per la limitazionelogica e archivia gli IP in una struttura ad albero ottimizzata per la ricerca memcached.

Terza misura: occultare l'acceleratore con le risposte memorizzate nella cache:

  

Con i bot a IP singolo a fuoco rapido strozzati, dobbiamo ancora affrontare i bot a IP singolo lento, ad es. i robot che sono specificamente ottimizzati per "volare sotto il radar" spaziando le richieste leggermente più distanti di quanto impedisce la limitazione.

     

Per rendere istantaneamente inutili i bot lenti a IP singolo, è sufficiente utilizzare la strategia suggerita da abelenky: servire pagine memorizzate nella cache di 10 minuti a tutti gli IP individuati nelle ultime 24 ore (circa). In questo modo, ogni IP ottiene una "possibilità" al giorno / ora / settimana (a seconda del periodo scelto) e non ci sarà alcun fastidio visibile agli utenti reali che stanno solo colpendo "ricarica", tranne per il fatto che non vincono l'offerta.

     

Il bello di questa misura è che anche evita i "robot di allarme", purché non provengano da una botnet.

     

(So che probabilmente lo preferiresti se agli utenti reali fosse permesso di aggiornare più e più volte, ma non c'è modo di distinguere un umano di aggiornamento-spam da un bot di richiesta-spam a parte senza un CAPTCHA o simile)

Quarta misura: reCAPTCHA:

  

Hai ragione sul fatto che i CAPTCHA danneggiano l'esperienza dell'utente e dovrebbero essere evitati. Tuttavia, nella situazione _one_ possono essere il tuo migliore amico: se hai progettato un sistema molto restrittivo per contrastare i robot, questo - a causa della sua limitatezza - cattura anche un numero di falsi positivi; quindi un CAPTCHA servito come ultima risorsa consentirà a quegli utenti reali che vengono catturati di scivolare dalla tua limitazione (evitando così fastidiose situazioni DoS).

     

Il punto debole, ovviamente, è quando TUTTI i robot vengono catturati nella tua rete, mentre estremamente pochi utenti reali vengono infastiditi dal CAPTCHA.

     

Se tu, quando offri le pagine memorizzate nella cache di 10 minuti, offri anche un'alternativa opzionale , "aggiornamento della prima pagina" verificata da CAPTCHA, allora gli umani che davvero desidera continuare ad aggiornare, può ancora farlo senza ottenere la vecchia pagina memorizzata nella cache, ma a costo di dover risolvere un CAPTCHA per ogni aggiornamento. Che sia un fastidio, ma facoltativo solo per gli utenti irriducibili, che tendono a perdonare di più perché sanno che sono giocare con il sistema per migliorare le sue possibilità e quelle migliori non sono gratuite.

Quinta misura: schifo di esca:

  

Christopher Mahan ha avuto un'idea che mi piaceva piuttosto, ma ci avrei messo un altro giro. Ogni volta che stai preparando una nuova offerta, prepara anche altre due "offerte" che nessun essere umano sceglierebbe, come un galletto da 12 mm per $ 20. Quando l'offerta appare sulla prima pagina, inserisci tutte e tre le "offerte" nella stessa immagine, con i numeri corrispondenti a ciascuna offerta. Quando l'utente / bot effettivamente procede per ordinare l'oggetto, dovrà scegliere (un pulsante di opzione) quale offerta desidera e, poiché la maggior parte dei robot indovinerebbe semplicemente, in due casi su tre, i robot acquisterebbero inutili spazzatura.

     

Naturalmente, questo non riguarda i "robot di allarme", e c'è una (sottile) possibilità che qualcuno possa costruire un bot in grado di scegliere l'oggetto corretto. Tuttavia, il rischio di acquistare inavvertitamente spazzatura dovrebbe far girare gli scripter completamente dai robot completamente automatizzati.

Sesta misura: limitazione della botnet:

  

[soppresso]

Okay ............ Ora ho trascorso gran parte della mia serata a pensarci, provando approcci diversi .... ritardi globali .... token basati su cookie ... servizio in coda ... "Strane strozzature" .... E non funziona. Non Ho capito che il motivo principale per cui non avevi ancora accettato una risposta era che nessuno aveva proposto un modo per contrastare una rete / bot distribuita / zombi

Ci sono alcune altre / migliori soluzioni già pubblicate, ma per completezza, ho pensato di menzionarlo:

Se la tua preoccupazione principale è il degrado delle prestazioni e stai osservando il vero martellamento , allora stai effettivamente affrontando un attacco DoS e probabilmente dovresti provare a gestirlo di conseguenza. Un approccio comune è semplicemente quello di eliminare i pacchetti da un IP nel firewall dopo un numero di connessioni al secondo / minuto / ecc. Ad esempio, il firewall Linux standard, iptables, ha una funzione di corrispondenza delle operazioni standard 'hashlimit', che potrebbe essere utilizzata per correlare le richieste di connessione per unità di tempo a un indirizzo IP.

Sebbene, questa domanda sarebbe probabilmente più adatta per il prossimo derivato SO menzionato nell'ultimo podcast SO, non è ancora stato lanciato, quindi immagino che sia ok rispondere :)

EDIT:
Come sottolineato da Novatrust, in realtà ci sono ancora ISP che NON assegnano IP ai propri clienti, quindi in modo efficace, un cliente script di tale ISP disabiliterebbe tutti i clienti da quell'ISP.

Scrivi un proxy inverso su un server Apache di fronte alla tua applicazione che implementa un Tarpit (Articolo di Wikipedia) per punire i robot. Gestirebbe semplicemente un elenco di indirizzi IP collegati negli ultimi secondi. Rileva una raffica di richieste da un singolo indirizzo IP e quindi ritarda esponenzialmente tali richieste prima di rispondere.

Ovviamente, più umani possono provenire dallo stesso indirizzo IP se si trovano su una connessione di rete NAT ma è improbabile che un umano si preoccupi del tempo di risposta andando da 2mS a 4mS (o anche 400mS) mentre un bot sarà ostacolato dal ritardo crescente piuttosto rapidamente.

  1. Fornisci un feed RSS in modo che non lo faccia mangia la tua larghezza di banda.
  2. Al momento dell'acquisto, fai in modo che tutti aspettino un casuale quantità di tempo fino a 45 secondi o qualcosa del genere, a seconda di cosa stai cercando esattamente. Esattamente quali sono i tuoi vincoli temporali?
  3. Concedi a tutti 1 minuto per inserire il proprio nome per il disegno, quindi seleziona a caso le persone. Penso che questo sia il modo più giusto.
  4. Monitorare gli account (includere alcune volte nella sessione e archiviarlo?) e aggiungere ritardi agli account che sembrano essere al di sotto della soglia di velocità umana. Ciò renderà almeno i robot programmati per rallentare e competere con gli umani.

Prima di tutto, per definizione, è impossibile supportare transazioni senza stato, ovvero veramente anonime, pur essendo in grado di separare i robot dagli utenti legittimi.

Se possiamo accettare una premessa che possiamo imporre dei costi a un visitatore di woot nuovo di zecca sulla sua hit della prima pagina, penso di avere una possibile soluzione. Per mancanza di un nome migliore, chiamerò vagamente questa soluzione "Una visita al DMV."

Supponiamo che ci sia un concessionario di automobili che offre una nuova auto diversa ogni giorno e che in alcuni giorni è possibile acquistare un'auto sportiva esotica per $ 5 ciascuno (limite 3), più una tassa di destinazione di $ 5.

Il problema è che la concessionaria richiede di visitare la concessionaria e mostrare una patente di guida valida prima che ti sia permesso entrare dalla porta per vedere quale auto è in vendita. Inoltre, per poter effettuare l'acquisto devi aver dichiarato la patente di guida valida.

Quindi, al visitatore per la prima volta (chiamiamolo Bob) a questo concessionario viene rifiutato l'ingresso e viene inviato all'ufficio DMV (che si trova proprio accanto) per ottenere la patente di guida.

Altri visitatori con una patente di guida valida sono ammessi dopo aver mostrato la patente di guida. Una persona che si preoccupa di se stesso bighellonando tutto il giorno, infastidendo i venditori, afferrando opuscoli e svuotando il caffè e i biscotti gratuiti alla fine verrà respinta.

Ora, tornando a Bob senza la licenza, tutto ciò che deve fare è sopportare una volta la visita al DMV. Successivamente, può visitare la concessionaria e acquistare auto ogni volta che lo desidera, a meno che non abbia accidentalmente lasciato il suo portafoglio a casa, o che la sua licenza venga altrimenti distrutta o revocata.

La patente di guida in questo mondo è quasi impossibile da forgiare.

La visita al DMV prevede prima di tutto di ottenere il modulo di domanda presso " Inizia qui " coda. Bob deve portare la domanda completa alla finestra n. 1, dove il primo di molti funzionari scontrosi prenderà la sua domanda, la elaborerà e, se tutto è in ordine, timbrare la domanda per la finestra e inviarlo alla finestra successiva. E così, Bob passa da una finestra all'altra, in attesa che passi ogni fase della sua applicazione, fino a quando non arriva alla fine e riceve la licenza di Drivere.

Non ha senso tentare di "cortocircuitare". il DMV. Se i moduli non vengono compilati correttamente in triplice copia o se vengono fornite risposte errate in qualsiasi finestra, la domanda viene strappata e il cliente sfortunato viene rinviato all'inizio.

È interessante notare che, non importa quanto sia pieno o vuoto l'ufficio, ci vuole circa la stessa quantità di tempo per ottenere assistenza in ogni finestra successiva. Anche quando sei l'unica persona in fila, sembra che al personale piace farti aspettare un minuto dietro la linea gialla prima di pronunciare, " Next! & Quot;

Le cose non sono così terribili al DMV, comunque. Mentre tutta l'attesa e l'elaborazione per ottenere la licenza sono in corso, puoi guardare un infomercial molto divertente e informativo per il concessionario auto mentre sei nella hall DMV. In effetti, l'infomerical corre abbastanza a lungo da coprire il tempo che impieghi a ottenere la tua licenza.

La spiegazione leggermente più tecnica:

Come ho detto all'inizio, diventa necessario avere un po 'di stato sulla relazione client-server che consente di separare gli umani dai robot. Vuoi farlo in un modo che non penalizzi eccessivamente il visitatore umano anonimo (non autenticato).

Questo approccio probabilmente richiede un'elaborazione lato client AJAX-y. Un visitatore nuovo di zecca per fare il woot riceve il "Benvenuto nuovo utente!" pagina piena di testo e grafica che (mediante un'appropriata limitazione lato server) richiede alcuni secondi per caricarsi completamente. Mentre ciò accade (e presumibilmente il visitatore è impegnato a leggere le pagine di benvenuto), il suo token identificativo è rallentato

Non puoi impedire totalmente i robot, anche con un captcha. Tuttavia, è difficile scrivere e mantenere un bot e quindi ridurre il numero. Soprattutto costringendoli ad aggiornare quotidianamente i loro robot, causerai la maggior parte degli interessi.

Ecco alcune idee per rendere più difficile la scrittura di robot:

  • Richiede l'esecuzione di una funzione JavaScript. Javascript rende molto più difficile scrivere un bot. Forse è necessario un captcha se non eseguono javascript per consentire comunque agli utenti reali non javascript (minimo).

  • Tempo in cui i tasti premuti durante la digitazione nel modulo (di nuovo tramite javascript). Se non è umano, respingilo. È un dolore imitare la tipizzazione umana in un bot.

  • Scrivi il tuo codice per aggiornare quotidianamente l'ID del tuo campo con un nuovo valore casuale. Questo li costringerà ad aggiornare quotidianamente il loro bot, il che è una seccatura.

  • Scrivi il tuo codice per riordinare i tuoi campi su base giornaliera (ovviamente in qualche modo non è casuale per i tuoi utenti). Se si basano sull'ordine dei campi, questo li farà inciampare e forzerà nuovamente la manutenzione giornaliera sul loro codice bot.

  • Potresti andare oltre e utilizzare il contenuto Flash. Flash è totalmente una pena contro cui scrivere un bot.

Generalmente se inizi a pensare di non prevenirli, ma di renderli più efficaci per loro, probabilmente puoi raggiungere l'obiettivo che stai cercando.

Attendi un ritardo di 5 minuti su tutti gli annunci di prodotti per utenti non registrati. Gli utenti occasionali non se ne accorgeranno davvero e gli utenti non casuali verranno comunque registrati.

Non vedo il grande onere che pretendi dal controllo degli IP in arrivo. Al contrario, ho realizzato un progetto per uno dei miei clienti che analizza i registri di accesso HTTP ogni cinque minuti (avrebbe potuto essere in tempo reale, ma non lo voleva per qualche motivo che non avevo mai compreso appieno) e crea regole firewall per bloccare le connessioni da qualsiasi indirizzo IP che generi un numero eccessivo di richieste a meno che l'indirizzo non possa essere confermato come appartenente a un motore di ricerca legittimo (google, yahoo, ecc.).

Questo client esegue un servizio di web hosting ed esegue questa applicazione su tre server che gestiscono un totale di 800-900 domini. L'attività di picco è nell'intervallo di migliaia di hit al secondo e non c'è mai stato un problema di prestazioni: i firewall sono molto efficienti nel far cadere i pacchetti dagli indirizzi nella lista nera.

E, sì, esiste sicuramente la tecnologia DDOS che sconfiggerebbe questo schema, ma non vede che ciò accada nel mondo reale. Al contrario, afferma che ha notevolmente ridotto il carico sui suoi server.

Il mio approccio sarebbe quello di concentrarmi su soluzioni non tecnologiche (altrimenti stai entrando in una corsa agli armamenti che perderai, o almeno spenderai molto tempo e denaro). Mi concentrerei sulle parti di fatturazione / spedizione: puoi trovare i robot trovando più consegne allo stesso indirizzo o con più addebiti in un unico metodo di pagamento. Puoi persino farlo su più articoli per diverse settimane, quindi se un utente ha ricevuto un articolo precedente (rispondendo molto velocemente) potrebbe essere assegnato una sorta di "handicap" questa volta.

Ciò avrebbe anche un effetto collaterale (utile, penso, ma potrei essere sbagliato dal punto di vista del marketing per il tuo caso) forse allargando la cerchia di persone che sono fortunate e arrivano ad acquistare woot.

Sono già state offerte soluzioni puramente tecniche. Suggerirò quindi un'altra visione del problema.

A quanto ho capito, i robot sono impostati da persone sinceramente che cercano di acquistare i sacchetti che vendi. Il problema è -

  1. Altre persone, che non gestiscono i robot, meritano la possibilità di acquistare e stai offrendo un numero limitato di borse.
  2. Desideri attrarre gli umani sul tuo sito e vendere semplicemente le borse.

Invece di cercare di evitare i robot, puoi consentire ai potenziali acquirenti di borse di iscriversi a un messaggio di posta elettronica, o anche ad un aggiornamento SMS, per ricevere una notifica quando si svolgerà una vendita. Puoi anche dare loro un minuto o due di vantaggio (un URL speciale in cui inizia la vendita, generato casualmente e inviato con la posta / SMS).

Quando questi acquirenti vanno a comprare sono nel tuo sito, puoi mostrare loro quello che vuoi nei banner laterali o qualunque cosa. Coloro che eseguono i robot preferiranno semplicemente registrarsi al servizio di notifica.

I corridori di robot potrebbero comunque eseguire robot sulla tua notifica per completare l'acquisto più velocemente. Alcune soluzioni possono offrire un acquisto con un clic.

A proposito, hai detto che i tuoi utenti non sono registrati, ma sembra che quelli che acquistano queste borse non siano acquirenti casuali, ma persone che non vedono l'ora di queste vendite. Pertanto, potrebbero essere disposti a registrarsi per ottenere un vantaggio nel tentativo di "vincere". una borsa.

In sostanza, ciò che sto suggerendo è cercare di considerare il problema come un problema sociale, piuttosto che tecnico.

Asaf

Agenti utente a tempo che fanno così tante richieste al minuto. Ad esempio, se hai qualcuno che richiede una pagina esattamente ogni 5 secondi per 10 minuti, probabilmente non è un utente ... Ma potrebbe essere complicato farlo bene.

Se attivano un avviso, reindirizza ogni richiesta a una pagina statica con il minor DB-IO possibile con un messaggio che li informi che saranno riaccesi tra X minuti.

È importante aggiungere che probabilmente dovresti applicarlo solo alle richieste di pagine e ignorare tutte le richieste di media (js, immagini, ecc.)

Prevenire DoS avrebbe sconfitto # 2 degli obiettivi di @ davebug che ha delineato sopra, "Mantieni il sito a una velocità non rallentata dai robot" ma non è necessario risolvere il n. 1, "Vendi l'oggetto a persone che non fanno script" "

Sono sicuro che uno scripter potrebbe scrivere qualcosa per pattinare appena sotto il limite eccessivo che sarebbe ancora più veloce di quanto un umano potrebbe passare attraverso i moduli di ordinazione.

Va ??bene così gli spammer sono in competizione con le persone normali per vincere la "palude di merda" all'asta? Perché non rendere la prossima asta un letterale "sacco di merda"? Gli spammer pagano buoni soldi per una borsa piena di cagnolini, e tutti ridiamo di loro.

La cosa importante qui è cambiare il sistema per rimuovere il carico dal tuo server, impedire ai robot di vincere il sacco di merda SENZA far sapere ai botlord che stai giocando o che rivedranno la loro strategia. Non credo che ci sia modo di farlo senza qualche elaborazione da parte tua.

Quindi registri gli hit sulla tua home page. Ogni volta che qualcuno accede alla pagina, tale connessione viene confrontata con l'ultima hit e, se è stata troppo rapida, viene inviata una versione della pagina senza l'offerta. Questo può essere fatto da una sorta di meccanismo di bilanciamento del carico che invia bot (gli hit che sono troppo veloci) a un server che serve semplicemente versioni cache della tua home page; le persone vere vengono inviate al buon server. Ciò toglie il carico dal server principale e fa pensare ai robot che le pagine vengano ancora servite correttamente.

Ancora meglio se l'offerta può essere rifiutata in qualche modo. Quindi puoi ancora fare le offerte sul server falso ma quando il bot compila il modulo dì " Siamo spiacenti, non sei stato abbastanza veloce " :) Quindi penseranno sicuramente di essere ancora in gioco.

Come fai a sapere che ci sono programmatori che effettuano ordini?

Il punto cruciale del tuo problema è che non puoi separare gli script dagli utenti legittimi e quindi non puoi bloccarli, quindi come fai a sapere che ci sono script?

Se hai un modo per rispondere a questa domanda, allora hai una serie di caratteristiche che puoi usare per filtrare gli script.

Risolviamo il problema: hai dei robot che comprano cose che vuoi che le persone vere comprino, che ne dici di fare una vera possibilità che i robot comprino cose che non vuoi persone vere da acquistare.

Avere una possibilità casuale per alcuni html non visualizzati che i robot di raschiamento penseranno che sia la situazione reale, ma le persone reali non vedranno (e non dimenticare che le persone reali includono i non vedenti, quindi considera anche gli screen reader ecc. ) e questo passa attraverso l'acquisto di qualcosa di esorbitantemente costoso (o non effettua l'acquisto effettivo, ma ottiene i dettagli di pagamento da inserire in una lista).

Anche se i robot passano a "avvisare l'utente" piuttosto che a "effettuare l'acquisto", se riesci a ottenere abbastanza falsi allarmi, potresti essere in grado di renderlo sufficientemente inutile per le persone (forse non tutti, ma una certa riduzione la truffa è meglio di niente) per non disturbare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top