Scripter davon abhalten, Ihre Website zu knacken
Ich angenommen habe eine Antwort, aber leider, ich glaube, wir stecken mit unserer ursprünglichen worst-case-Szenario: CAPTCHA jeder in Kauf, versucht der Mist. Kurze Erklärung: caching /web-Farmen, die es unmöglich machen, Sie zu verfolgen hat, und Abhilfe (senden einer nicht zwischengespeicherten web-beacon, das schreiben in eine einheitliche Tabelle, etc.) verlangsamt die Website down schlechter als die bots würden. Es ist wahrscheinlich etwas teuer-hardware von Cisco oder ähnliches, die helfen können, auf einem hohen Niveau, aber es ist schwer zu rechtfertigen die Kosten, wenn die CAPTCHA-ing jedermann eine alternative. Ich werde versuchen, eine weitere vollständige Erklärung später, als auch als Reinigung für die zukünftigen Suchenden (obwohl andere sind willkommen zu versuchen, da es community-wiki).
Situation
Dies ist über die bag o' crap Umsatz auf woot.com. Ich bin der Präsident von Woot Workshop, der Tochtergesellschaft von Woot, das design, schreibt die Produkt-Beschreibungen, podcasts, blog-Beiträge und moderiert die Foren. Ich arbeite mit CSS/HTML und bin kaum vertraut mit anderen Technologien. Ich arbeite eng mit den Entwicklern zusammen und haben geredet durch all die Antworten hier (und viele andere Ideen, die wir hatten).
Usability ist ein großer Teil meines Jobs, und dass die Seite spannend und lustig ist, die meisten der rest von ihm. Das ist, wo die drei Ziele unten abzuleiten. CAPTCHA harms usability und bots stehlen den Spaß und die Aufregung aus unserem Mist Verkauf.
Bots zuschlagen, unsere front-Seite, die zehn mal einen zweiten screen scraping (und/oder Scannen Sie unseren RSS) für die Random-Mist Verkauf. Der moment, in dem Sie sehen, dass es Trigger, die zweite Phase des Programms, der sich anmeldet, klickt möchte ich Einen, der das Formular ausfüllt, und kauft den Mist.
Bewertung
lc: Auf stackoverflow und anderen Websites, die diese Methode verwenden, sind Sie fast immer der Umgang mit authentifizierte (angemeldete) Nutzer, weil die Aufgabe versucht, erfordert das.
Auf Woot, anonyme (nicht angemeldete) Benutzer können die home-Seite. In anderen Worten, die hammerharten bots können nicht authentifizierte (und im Grunde nicht nachvollziehbar, außer durch IP-Adresse).
So sind wir wieder zum Scannen für IPs, die a) relativ nutzlos ist im Zeitalter von cloud networking und spambot zombies und b) fängt auch viele unschuldige, da die Zahl der Unternehmen, die von einer IP-Adresse (nicht zu vergessen die Probleme mit nicht-statischen IP-ISPs und potenzielle performance-trifft zu versuchen, die Spur dieses).
Oh, und die Leute nennen uns wäre das Schlimmste mögliche Szenario. Kann wir haben Sie rufen Sie an?
BradC: Ned Batchelder Methoden ziemlich cool Aussehen, aber Sie sind ziemlich fest entwickelt, zu besiegen bots gebaut, die für ein Netzwerk von Websites. Unser problem ist die bots, die speziell auf die Niederlage unserer Website. Einige dieser Methoden könnten wahrscheinlich Arbeit für eine kurze Zeit, bis die skriptschreiber entwickelt, die Ihre bots zu ignorieren, die honeypot -, Bildschirm-kratzen für in der Nähe Bezeichnungen anstelle von Formular-ids, und verwenden Sie einen javascript-fähigen browser Steuern.
lc wieder: "Es sei denn, natürlich, der hype ist Teil Ihrer marketing-Plan." Ja, es ist definitiv. Die überraschung, wenn der Artikel erscheint, sowie die Aufregung, wenn es Ihnen gelingt, eins zu bekommen, ist wahrscheinlich sehr viel wichtiger als die Scheiße, die Sie eigentlich am Ende immer. Alles, was eliminiert first-come/first-serve ist schädlich für den Nervenkitzel der 'Sieg' der Mist.
novatrust: Und ich, für einen, begrüßen unseren neuen bot Oberherren. Wir bieten RSSfeeds zu ermöglichen 3rd-party-apps, Scannen Sie unsere Website für Produkt-Infos, aber nicht vor dem eigentlichen HTML-Seite. Wenn ich die Auslegung richtig, deine Lösung hilft, Ziel 2 (Leistungsprobleme) komplett opfern, Ziel 1, und nur zu resignieren der Tatsache, dass bots kaufen die meisten den Mist. Ich Stimmen Sie Ihre Reaktion, denn dein letzten Absatz Pessimismus fühlt sich genau zu mir. Es scheint keine Wunderwaffe hier.
Den rest der Antworten, in der Regel verlassen auf IP-tracking, das wiederum scheint sowohl sinnlos (mit botnets/zombies/cloud-Vernetzung) und schädlich (fangen viele unschuldige, die kommen von der selben IP-Destinationen).
Andere Ansätze /Ideen? Meine Entwickler immer sagen, "lass uns einfach nur CAPTCHA", aber ich hoffe, es gibt weniger eingreifende Methoden, um alle tatsächlichen Menschen wollen etwas von unserem Mist.
Ursprüngliche Frage
Sagen, die Sie verkaufen, etwas Billig, hat eine sehr hohe Wertigkeit, und Sie haben eine sehr begrenzte Menge. Niemand weiß genau, Wann Sie verkaufen diesen Artikel. Und über eine million Menschen kommen regelmäßig, um zu sehen, was Sie verkaufen.
Dass Sie am Ende mit skriptschreiber und bots, die versuchen, programmgesteuert [a] herausfinden, wenn Sie verkaufen Ware, und [b] stellen Sie sicher, Sie sind unter den ersten, es zu kaufen. Dieser saugt aus zwei Gründen:
- Ihre Website ist schlug von nicht-Menschen, verlangsamt alles nieder für alle.
- Die skriptschreiber am Ende 'gewinnen' das Produkt, wodurch die Stammgäste fühlen sich betrogen.
Scheinbar offensichtliche Lösung besteht darin, erstellen Sie einige Reifen, die Ihren Benutzern das springen durch, bevor Sie Ihren Auftrag vergeben, es gibt aber mindestens drei Probleme mit diesem:
- Die user experience saugt für Menschen, wie Sie das CAPTCHA zu entziffern, wählen Sie die Katze, oder lösen eines mathematischen Problems.
- Wenn der wahrgenommene nutzen hoch genug ist, und die Menge groß genug ist, eine Gruppe wird den Weg finden, um zu optimieren, was zu einem Wettrüsten. (Dies ist besonders wahr, je einfacher die tweak ist; versteckt 'Kommentare' - form, re-arrangieren der Elemente bilden, die mis-Kennzeichnung, versteckt 'gotcha' text alle einmal und dann müssen geändert werden, um Kampf-targeting dieses Formular.)
- Auch wenn die skriptschreiber nicht 'lösen' Ihre optimieren, nicht verhindern, dass Sie das zuschlagen Ihrer ersten Seite, und dann klingen ein alarm für die scripter, die zum ausfüllen der Bestellung manuell. Gegeben Sie bekommen den Vorteil von der Lösung des [a], Sie werden wahrscheinlich trotzdem gewinnen, [b] da werden Sie die ersten Menschen erreichen die Bestellseite. Darüber hinaus 1. immer noch passiert, wodurch server-Fehler und eine verminderte Leistung für jedermann.
Andere Lösung ist zu beobachten, IPs schlagen zu oft, blockieren Sie Sie von der firewall, oder sonst verhindern, dass Sie von der Bestellung. Diese lösen könnte 2. und verhindern, dass [b] die Leistung, die Treffer von Scans für IPs ist Massiv-und würde wahrscheinlich mehr Probleme verursachen, wie 1. als die skriptschreiber verursacht haben, auf Ihre eigenen. Darüber hinaus die Möglichkeit, cloud-networking und spambot zombies macht die IP-Prüfung ziemlich nutzlos.
Einer Dritten Idee, zwingt das Bestellformular geladen werden für einige Zeit (sagen wir, eine halbe Sekunde) würde möglicherweise verlangsamen den Fortschritt der schnelle Aufträge, sondern wieder die skriptschreiber wäre immer noch die ersten Menschen auf, bei jeder Geschwindigkeit nicht nachteilig auf den eigentlichen Nutzer.
Ziele
- Den Artikel verkaufen zu non-scripting-Menschen.
- Damit die Website läuft mit einer Geschwindigkeit bremste nicht durch bots.
- Nicht ärger, den 'normalen' Benutzer mit anderen Aufgaben, um zu beweisen, dass Sie ein Mensch sind.
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
How über die Implementierung von etwas, das wie SO mit den CAPTCHAs?
Wenn Sie den Standort in der Regel, werden Sie wahrscheinlich nie sehen. Wenn Sie geschehen, um neu zu laden der gleichen Seite zu oft, post aufeinanderfolgenden Kommentare zu schnell, oder etwas anderes, das löst einen alarm aus, machen Sie Sie beweisen, dass Sie ein Mensch sind. In Ihrem Fall wäre dies wohl konstant lädt der gleichen Seite, nach jedem link auf einer Seite schnell, oder das ausfüllen eines Bestellformulars zu schnell, um ein Mensch zu sein.
Wenn Sie nicht die Prüfung x mal hintereinander (sagen, 2 oder 3), geben Sie diese IP timeout oder anderen solchen Maßnahme. Dann am Ende der timeout-Zeit, steckt Sie zurück, um die erneut zu prüfen.
Da haben Sie nicht registrierten Benutzern den Zugriff auf die Website, die Sie tun haben, nur IPs zu gehen. Sie können die Ausgabe-Sitzungen, um die einzelnen browser und track, die Art und Weise, wenn Sie es wünschen. Und, natürlich, werfen eine Mensch-zu-prüfen, ob zu viele sessions (re-)erstellt in Folge (im Falle der bot hält das löschen der Cookies).
Soweit fangen, zu viele unschuldige sind, können Sie eine Verzichtserklärung auf das Mensch-check Seite: "Diese Seite kann auch auftreten, wenn zu viele anonyme Benutzer betrachten unserer Website aus der gleichen Lage. Wir ermutigen Sie, sich zu registrieren oder einloggen um dies zu vermeiden." (Anpassung von Formulierungen entsprechend.)
Außerdem, was sind die Chancen, dass X Leute laden der gleichen Seite(N) gleichzeitig von einer IP? Wenn Sie sind hoch, vielleicht brauchen Sie einen anderen trigger-Mechanismus für Ihre bot-alarm.
Edit: eine Weitere option, ist wenn Sie es nicht zu viele Male, und Sie sind zuversichtlich, über das Produkt, die Nachfrage, blockieren Sie und machen Sie persönlich, RUFEN Sie die Blockierung aufheben.
Dass die Menschen es nennen, scheint wie eine asinine Messen, aber es stellt sicher, dass es ein Mensch ist, der irgendwo hinter dem computer. Der Schlüssel ist der block nur eine Bedingung, die sollte fast nie passieren, es sei denn es ist ein bot (z.B. fehlschlagen der aktivieren Sie mehrere Male in einer Reihe). Dann es KRÄFTE, die zwischenmenschliche Interaktion, das Telefon zu nehmen.
In Reaktion auf den Kommentar, dass Sie mich anrufen, es ist offensichtlich, dass der Kompromiss hier. Sind Sie besorgt genug um sicherzustellen, dass Ihre Benutzer sind Menschen zu akzeptieren, ein paar Telefonate, wenn Sie in den Verkauf gehen? Wenn ich so besorgt über ein Produkt zu bekommen, um menschliche user, ich hätte diese Entscheidung zu treffen, vielleicht dabei ein (kleines) bisschen von meiner Zeit in den Prozess.
Da es scheint, dass Sie entschlossen sind, nicht von bots erhalten Sie die Obere hand/slam Ihre Website, ich glaube, das Telefon kann eine gute option sein. Da ich das nicht machen, einen Gewinn aus Ihren Produkt, ich habe kein Interesse an der Entgegennahme dieser Anrufe. Waren Sie zu teilen, dass der Gewinn, aber ich kann zu interessieren. Als dieses ist Ihr Produkt, Sie haben zu entscheiden, wie viel Sie sich interessieren und entsprechend implementieren.
Andere Möglichkeiten der Freigabe der sperren sind einfach nicht so effektiv: ein timeout (aber Sie bekommen würde, zuschlagen, Ihre Website wieder nach, rinse-repeat), eine lange timeout (wenn es wirklich ein Mensch versuchen, Ihr Produkt zu kaufen, würden Sie zur SOL und zur Strafe für Versagen der Kontrolle), email (leicht gemacht durch bots), fax (gleichen), oder snail-mail (dauert zu lange).
Man könnte natürlich, statt die timeout-Zeit erhöhen, die pro IP-Adresse für jedes mal, wenn Sie bekommen einen timeout. Nur sicherstellen, dass Sie nicht bestrafen, wahren Menschen unbeabsichtigt.
InformationsquelleAutor der Antwort
Müssen Sie einen Weg, um die bots kaufen Zeug ist Massiv überteuert: 12mm Flügelmutter: $20. Sehen Sie, wie viele bots schnappen, bevor die script-Autoren entscheiden, dass Sie gaming.
Verwendung der Gewinne für den Kauf von Servern und zahlen für die Bandbreite.
InformationsquelleAutor der Antwort
Meine Lösung würde es sein, dass screen-scraping wertlos, indem Sie in eine etwa 10 minütige Verspätung für 'bots und Skripte.
Hier ist, wie ich es tun würde:
Müssen Sie nicht anmelden jede IP-Adresse auf jedem Treffer. Nur die Spur einer, der alle 20 trifft oder so. Ein Wiederholungstäter wird noch zeigen, bis in einer randomisierten gelegentliche tracking.
Halten einen cache von deiner Seite aus in etwa 10 Minuten früher.
Wenn eine Wiederholung-hitter/bot zuvor auf Ihrer Website, geben Sie die 10-minütige alte zwischengespeicherte Seite.
Werden Sie nicht sofort wissen, Sie sind immer eine alte Website. Sie werden in der Lage sein zu kratzen, und alles, aber Sie gewinnt keine Rennen mehr, da "echte Menschen" haben eine 10 minütige Kopf-beginnen.
Vorteile:
Nachteile
Was denkst du?
InformationsquelleAutor der Antwort
Werfen Sie einen Blick auf dieser Artikel von ned Batchelder hier. Sein Artikel ist über das stoppen von spambots, aber die gleichen Techniken könnte leicht auf Ihre Website zutreffen.
Einige andere Ideen:
EDIT: völlig klar, Ned im Artikel oben beschreiben Methoden, um zu verhindern, dass der automatische ERWERB von Gegenständen durch die Verhinderung eines Bots gehen durch die Formen, die zur Abgabe einer Bestellung. Seine Technik wäre nicht nützlich für die Verhinderung von bots von screen-scraping der Startseite, um zu bestimmen, wenn ein Bandoleer Karotten kommt zum Verkauf. Ich bin mir nicht sicher verhindern, wirklich möglich ist.
Bezug auf Ihre Kommentare über die Wirksamkeit von Ned Strategien: ja, er beschreibt, honeypots, aber ich glaube nicht, dass das seine stärkste Strategie. Seine Diskussion der SPINNER ist der ursprüngliche Grund, warum ich erwähnte seinen Artikel. Sorry, habe ich nicht zu machen, dass klarer in meinem ursprünglichen Beitrag:
Hier ist, wie könnte man realisieren, dass WOOT.com:
Ändern Sie die "Geheimnis" - Wert, der verwendet wird, als Teil des hash-jedes mal, wenn ein neues Element in den Verkauf geht. Dies bedeutet, dass wenn jemand geht, um design BOT, um auto-Kauf-Artikel, würde es nur funktionieren, bis der nächste Artikel kommt zum Verkauf!!
Selbst wenn jemand in der Lage ist zu schnell wieder beim Aufbau Ihrer bot, all die anderen realen Benutzer bereits gekauft haben, einen BOC, und Ihr problem ist gelöst!
Die andere Strategie, die er beschreibt, ist ändern die honeypot-Technik von Zeit zu Zeit (wieder ändern, wenn ein neues Element in den Verkauf geht):
Denke ich, dass meine Allgemeine Idee ist, DIE FORM zu ÄNDERN DESIGN bei jeder neuen Sache geht auf den Verkauf. Oder ZUMINDEST ändern, wenn Sie eine neue BOC geht auf den Verkauf.
Was, ein paar mal/Monat?
Wenn Sie akzeptieren diese Antwort, geben Sie mir ein heads-up auf, wenn die nächste fällig ist? 🙂
InformationsquelleAutor der Antwort
Q: Wie würden Sie aufhören, skriptschreiber aus dem flattern Ihrer Website Hunderte Male pro Sekunde?
A: Sie nicht. Es gibt keine Möglichkeit zu verhindern dieses Verhalten durch externe Agenten.
Könnten Sie beschäftigen eine Vielzahl von Technik zu analysieren die eingehenden Anfragen und heuristisch versuchen, um zu bestimmen, wer ist und ist nicht ein Mensch...aber es würde fehlschlagen. Schließlich, wenn auch nicht sofort.
Die einzige langfristig tragfähige Lösung ist, um ändern Sie das Spielso dass der Ort nicht bot-freundlich, oder weniger attraktiv für skriptschreiber.
Wie machst du das? Gut, das ist eine andere Frage! 😉
...
OK, einige Optionen gegeben haben (und abgelehnt). Ich bin nicht vertraut mit Ihrer Website, nachdem wir sahen Sie nur einmal, aber da die Menschen Lesen können, text in Bilder und die bots können das ganz einfach ändern Sie die Ankündigung zu einem Bild. Nicht ein CAPTCHAsondern nur ein Bild -
Laufzeit-Studien von echten Menschen reagiert auf diese, und ignorieren ("UPS, ein Fehler ist aufgetreten, sorry! bitte versuchen Sie es erneut') Antworten schneller als (sagen wir mal) die Hälfte dieser Zeit. Diese Veranstaltung soll auch zum auslösen einer Warnung an die Entwickler, dass mindestens ein bot hat herausgefunden, der code/das Spiel, so ist es Zeit, den code zu ändern/Spiel.
Weiterhin, das Spiel zu ändern in regelmäßigen Abständen sowieso, auch wenn keine bots auslösen, nur um die Verschwendung der skriptschreiber. Schließlich die skriptschreiber sollte der Reifen das Spiel und gehen Sie woanders...hoffen wir 😉
Einen letzten Vorschlag: wenn eine Anfrage für Ihre Haupt-Seite kommt, steckte es in eine Warteschlange und auf die Anfragen zu reagieren, um in einem separaten Prozess (Sie haben können, zu hacken/erweitern der web-server, um dies zu tun, aber es wird wahrscheinlich sein lohnt sich). Wenn eine andere Anfrage von der selben IP/agent kommt, während die erste Anforderung in der Warteschlange, ignorieren Sie es. Dies sollte automatisch Schuppen die Last von den bots.
EDIT: eine andere Möglichkeit, abgesehen von der Verwendung der Bilder, ist die Verwendung von javascript zu füllen, die kaufen/nicht-kaufen text; bots selten interpretieren von javascript, so dass Sie nicht sehen, es
InformationsquelleAutor der Antwort
Ich weiß nicht, wie dies möglich ist: ... in die offensive gehen.
Herauszufinden, welche Daten die bots Scannen nach. Füttern Sie die Daten, die Sie suchen, wenn Sie Sie NICHT verkaufen Sie den Mist. Tun dies in einer Weise, die nicht stören oder verwirren den menschlichen Benutzer. Wenn die bots trigger phase zwei, werden Sie sich einloggen und das Formular ausfüllen zu kaufen $100 roombas anstelle von BOC. Natürlich, dies setzt Voraus, dass die bots sind nicht besonders robust.
Weitere Idee ist die Umsetzung der random-Preis sinkt im Laufe der bag-o-Mist Verkauf Zeitraum. Wer kauft denn ein random bag-o-Mist für 150$, wenn Sie KLAR sagen, es ist nur im Wert von $20? Niemand, aber übereifrige bots. Aber dann 9 Minuten später ist es $35 Dollar ... dann 17 Minuten später ist es $9. Oder was auch immer.
Sicher, die zombie-Könige der Lage wäre, zu reagieren. Der Punkt ist, um Ihre Fehler sehr teuer werden für Sie (und Sie zahlen Sie, Sie zu bekämpfen).
All dies setzt Voraus, Sie wollen piss off einige bot-lords, das kann nicht sein, 100% zu empfehlen.
InformationsquelleAutor der Antwort
So, das problem scheint wirklich zu sein: die bots wollen Ihre "" bag o 'crap", denn es hat einen hohen wahrgenommenen Wert auf eine geringe wahrgenommene Preis. Sie bieten manchmal diesen Artikel und die bots lauern, warten, um zu sehen, ob es verfügbar ist und dann Sie kaufen das Element.
Da es scheint, wie die bot-Besitzer einen Gewinn (oder potenziell einen Gewinn zu erzielen), ist der trick, um diese unrentabel für Sie durch Förderung Sie die den Mist kaufen.
Zunächst immer bieten die "" bag o 'crap".
Zweitens, stellen Sie sicher, dass Mist ist in der Regel Mist.
Dritten, drehen Sie den Mist Häufig.
Einfach, nicht?
Benötigen Sie eine ständige "warum ist unser Mist manchmal Mist?" - link neben dem bieten erklären Sie den Menschen, was Los ist.
Wenn der bot sieht, dass es Mist und der Mist ist automatisch gekauft, der Empfänger wird sich furchtbar aufregen, dass Sie bezahlt haben, $10 für einen zerbrochenen Zahnstocher. Und dann einen leeren Müllsack. Und dann etwas Schmutz von der Unterseite des Schuhs.
Wenn Sie kaufen genug von diesem Mist in einem relativ kurzen Zeitraum (und Sie haben große Haftungsausschluss ganz über dem Platz zu erklären, warum Sie das tun), Sie gehen zu verlieren fair "bag 'o-cash" auf Ihr "" bag o 'crap". Auch der Eingriff des Menschen in Ihren Teil (die überprüfung, um sicherzustellen, dass das Mist ist kein Mist) kann fehlschlagen, wenn Sie drehen Sie den Mist oft genug. Was solls, vielleicht sind die bots bemerkt und auch nichts kaufen, dass in der rotation für eine zu kurze Zeit, aber das bedeutet, dass die Menschen kaufen das nicht-Mist.
Teufel, Ihre Stammkunden werden könnten, so amüsiert, dass Sie können diese in eine riesige marketing gewinnen. Start-posting, wie viel von dem "Mist" Karpfen verkauft wird. Die Leute kommen zurück, nur um zu sehen, wie schwer die bots haben gebissen worden.
Update: ich erwarte, dass Sie vielleicht ein paar Anrufe vorne mit Leute beschweren. Ich glaube nicht, dass Sie stoppen kann, ganz. Allerdings, wenn das killt die bots, können Sie immer zu stoppen und starten Sie es später.
InformationsquelleAutor der Antwort
Werden Sie wahrscheinlich nicht wollen, dies zu hören, aber #1 und #3 sind gegenseitig exklusiv.
Gut, niemand weiß du bist ein bot. Es gibt keine programatic Weg, zu sagen, ob oder nicht es eine Mensch auf dem anderen Ende der Verbindung, ohne dass der person etwas zu tun. Verhinderung von scripts/bots zu tun, Sachen auf dem web ist der ganze Grund, warum CAPTCHAs erfunden wurden. Es ist nicht so, das ist ein neues problem, das bisher nicht gesehen, eine Menge Aufwand. Wenn es einen besseren Weg, es zu tun, eine, die nicht beinhalten, den Streit um echte Nutzer, dass ein CAPTCHA nicht, würde das jeder verwenden es bereits.
Ich glaube, Sie müssen sich der Tatsache stellen, dass wenn Sie möchten, um bots aus Ihrer Bestell-Seite, ein gutes CAPTCHA ist der einzige Weg, es zu tun. Wenn die Nachfrage für Ihr random crap ist hoch genug, dass die Menschen bereit sind zu gehen, um diese Längen zu bekommen, legitime Benutzer nicht abgeschreckt werden durch ein CAPTCHA.
InformationsquelleAutor der Antwort
Die Methode Woot verwendet, um dieses Problem zu bekämpfen, ist die Veränderung der Spiel - buchstäblich. Wenn Sie ein außerordentlich wünschenswert, Artikel zum Verkauf, machen Sie Benutzern die Wiedergabe einer video-Spiel, um es zu bestellen.
Nicht nur, dass eine erfolgreiche Bekämpfung der bots (Sie können leicht kleinere änderungen im Spiel zu vermeiden, automatischer Spieler, oder sogar ein neues Spiel für jeden Verkauf), aber es gibt auch den Eindruck, die Nutzer von "gewinnen" auf das gewünschte Element, während die Verlangsamung des Bestellprozesses.
Es noch verkauft sich sehr schnell, aber ich denke, die Lösung ist gut - re-Evaluierung des Problems und die änderung der Parameter führte zu einer erfolgreichen Strategie, bei der rein technischen Lösungen einfach nicht existieren.
Ihre gesamte business-Modell basiert auf "first come, first served." Sie können nicht tun, was die radio-Stationen haben (Sie nicht länger, machen Sie den ersten Anrufer der Gewinner, Sie machen die 5 oder 20 oder 13 Anrufer-Sieger) - es passt nicht zu Ihrem primären Funktion.
Nein, es gibt keine Möglichkeit, dies zu tun, ohne änderung der Bestellung Erfahrung für den echten Nutzern.
Lassen Sie uns sagen, Sie implementieren alle diese Taktiken. Wenn ich entscheide, dass dies wichtig ist, werde ich einfach 100 Leute arbeiten mit mir, wir bauen software für unsere 100 separaten Computern, und schlagen Sie Ihre site 20 mal pro Sekunde (5 Sekunden zwischen den Zugriffen für jeden user/cookie/Konto/IP-Adresse).
Haben Sie zwei Phasen:
Können Sie nicht setzen ein captcha blockiert #1 - das verlieren echte Kunden ("Was? Ich habe zum lösen eines captcha jedes mal, wenn ich will, um zu sehen, die neuesten woot?!?").
Also meine kleine Gruppe beobachtet, zeitlich zusammen, so kommen wir auf etwa 20 Prüfungen pro Sekunde, und wer das sieht, der änderungen allen Warnungen, die andere (automatisch) aus, die Belastung der vorderen Seite noch einmal, Folgen Sie den Bestell-link und führen Sie die Transaktion (das kann auch automatisch passieren, es sei denn, Sie implementieren captcha und ändern Sie es für jedes wootoff/boc).
Können Sie ein captcha vor der #2, und während Sie verabscheuen, es zu tun, dass vielleicht der einzige Weg, um sicherzustellen, dass, selbst wenn bots beobachten Sie die front-Seite, echten Nutzern zu bekommen sind die Produkte.
Aber auch mit captcha-meine kleine Truppe von 100 würde immer noch eine erhebliche first-mover-Vorteil - und es gibt keine Weise können Sie sagen, dass wir nicht Menschen. Wenn Sie beginnen, timing unserer Zugriffe, wir würden nur hinzufügen, einige jitter. Wir könnten nach dem Zufallsprinzip auswählen, welche computer zu aktualisieren, so ist die Reihenfolge der Zugriffe ändert sich ständig - aber sieht immer noch genug, wie ein Mensch.
Erste, loszuwerden, die einfache bots
Müssen Sie eine adaptive firewall, die Uhr Anfragen und wenn jemand tut das offensichtlich blöde Sache - erfrischend mehr als einmal einen zweiten auf der selben IP dann beschäftigen Taktik, Sie zu verlangsamen (die Pakete verwerfen, zurück zu senden, verweigert oder 500-Fehler, etc).
Sollte dieser deutlich sinken Ihre Zugriffszahlen und ändern Sie die Taktiken, die die bot-user beschäftigen.
Zweiten, der server rasend schnell.
Sie wirklich nicht wollen, dies zu hören... aber...
Ich denke, dass das, was Sie brauchen, ist eine komplett kundenspezifische Lösung, von unten nach oben.
Brauchen Sie nicht zu Durcheinander mit TCP/IP-stack, aber Sie müssen möglicherweise entwickeln ein sehr, sehr, sehr schnell angepasste server -, Zweck gebaut zu korrelieren Benutzer-verbindungen und angemessen zu reagieren, werden verschiedene Angriffe.
Apache, lighthttpd, ... das alles sind ideal für Flexibilität, aber Sie führen ein single-purpose-website, und Sie wirklich brauchen, um in der Lage, sowohl mehr tun, als dem aktuellen Server tun in der Lage sind (sowohl im Umgang mit Verkehr und in entsprechend Bekämpfung der bots).
Indem er eine weitgehend statische Webseite (updates alle 30 Sekunden oder so) auf einen benutzerdefinierten server sollte man nicht nur in der Lage sein, um Griff-10x die Anzahl der Anfragen und Verkehr (weil die server nicht irgendetwas anderes mache, als immer den Wunsch, und liest die Seite aus dem Speicher in das TCP/IP-Puffer), aber es wird auch geben Ihnen Zugriff auf Metriken, die helfen könnten, Sie verlangsamen bots. Beispielsweise durch Korrelation von IP-Adressen können Sie einfach blockieren mehr als eine Verbindung pro Sekunde pro IP. Menschen können nicht schneller gehen als das, und sogar Menschen mit dem gleichen Len IP-Adresse wird nur selten gesperrt werden. Sie wollen, um zu tun, einen langsamen block - lassen Sie die Verbindung allein für eine volle Sekunde, bevor er offiziell die Beendigung der session. Diese können die Feeds in eine firewall zu geben, längerfristig blockiert, um besonders schwere Straftäter.
Aber die Realität ist, dass, egal was Sie tun, es gibt keine Möglichkeit zu sagen, ein Mensch, abgesehen von einem bot wenn der bot benutzerdefinierte gebaut von einem Menschen für einen einzigen Zweck. Der bot ist nur ein proxy für den Menschen.
Abschluss
Am Ende des Tages, Sie können nicht sagen, ein Mensch und ein computer außer für die Beobachtung der vorderen Seite. Sie können stoppen von bots bei der Bestellung Schritt, aber die bot-user immer noch einen first mover advantage, und Sie haben immer noch eine große Last zu verwalten.
Können Sie fügen Sie Blöcke für die einfache bots, die die Messlatte höher zu werden und immer weniger Menschen mit plagen. Das kann ausreichen.
Aber ohne änderung der Basis-Modell, sind Sie aus Glück heraus. Das beste, was Sie tun können, ist aufzupassen, den einfachen Fällen, die server so schnell regelmäßige Nutzer merken das gar nicht, und verkaufen so viele Einzelteile, dass selbst wenn Sie haben ein paar Millionen bots, wie viele regelmäßige Nutzer wie möchten Sie erhalten Sie.
Könnten Sie die Einrichtung eines honeypot und Kennzeichnung, Benutzer-accounts bot-Benutzer, aber das wird eine riesige negative-community Umkehrspiel.
Jedes mal, wenn ich denke: "gut, was ist zu tun..." kann ich mich immer gegen Sie mit einem geeigneten bot Strategie.
Selbst wenn Sie die front-Seite ein captcha, um zu der Bestellseite ("Dieser Artikel die Bestell-Schaltfläche ist blau mit rosa funkelt, irgendwo auf dieser Seite") die bots werden öffnen Sie einfach alle links auf der Seite, und je nachdem, was kommt zurück mit einer Bestell-Seite. Das ist einfach keine Möglichkeit, dieses zu gewinnen.
Machen die Server fallen, in ein reCaptcha (die einzige, die ich gefunden habe, die nicht leicht getäuscht werden, aber es ist wahrscheinlich viel zu langsam für Ihre Anwendung) auf der Bestell-Seite, und über Wege nachzudenken, wie das Modell ändern so leicht an normale Benutzer haben so gut eine chance, wie die bot-user.
-Adam
InformationsquelleAutor der Antwort
Disclaimer: Diese Antwort ist völlig non-Programmierung-Verwandte. Es tut, jedoch, versuchen, angreifen, der Grund für die scripts in den ersten Platz.
Andere Idee ist, wenn Sie wirklich haben eine begrenzte Menge zu verkaufen, warum nicht ändern Sie es von einem first-come-first-served-Methodik? Es sei denn, natürlich, der hype ist Teil Ihrer marketing-Plan.
Gibt es viele andere Möglichkeiten, und ich bin sicher, dass andere denken kann, einige verschiedene:
einer Bestellung queue (pre-order-system) - Einige Skripte könnten noch bis Ende an der Vorderseite der Warteschlange, aber es ist wahrscheinlich schneller, nur manuell geben Sie die info.
Tombola-system (jeder, der versucht, um eine in das system eingegeben werden) - auf Diese Weise die Menschen mit den Scripten haben nur die gleichen Chancen wie Personen ohne.
rush priority-queue - Wenn es wirklich einen hohen wahrgenommenen Wert, können die Menschen bereit, mehr zu zahlen. Implementieren Sie eine Bestellung Warteschlange, aber Leuten erlauben, mehr zu bezahlen, um eine höhere Platzierung in der Warteschlange.
Auktion (Kredit geht an David Schmitt, für diesen einen, Kommentare, sind meine eigenen) - die Menschen können immer noch bei der Verwendung von Skripts zur Schnepfe in der letzten minute, aber es wird nicht nur ändern die Preisstruktur, die Leute erwarten zu kämpfen es heraus mit anderen. Sie können auch Dinge tun, die zu beschränken, die Anzahl der Angebote in einem bestimmten Zeitraum, machen Menschen Telefon im Voraus für die ein auth-code, etc.
InformationsquelleAutor der Antwort
Egal, wie sicher sich die Nazis dachten auch, Ihre Mitteilungen waren, würden die Nato-Staaten brechen oft Ihre Nachrichten. Egal, wie Sie versuchen, um bots zu stoppen, die aus der Verwendung Ihrer Website der bot-Besitzer wird die Arbeit einen Weg um ihn herum. Tut mir Leid, wenn Sie, der Nazi 🙂
Ich denke, eine andere Denkweise erforderlich ist
Holen Sie sich in die Denkweise, dass es egal ist, ob der Kunde von Ihrer Website ist ein Mensch oder ein bot, beide sind nur zahlende Kunden, aber man hat einen unfairen Vorteil gegenüber den anderen. Einige Benutzer, ohne viel von einem gesellschaftlichen Leben (Einsiedler) kann nur als ärgerlich für Ihre Website andere Nutzer als bots.
Notieren Sie die Zeit, die Sie veröffentlichen ein Angebot und die Zeit, die ein Konto entscheidet sich, es zu kaufen.
Variieren Sie die Zeit des Tages, die Sie veröffentlichen bietet.
Laufe der Zeit ein Bild.
01: können Sie sehen, welche Konten werden regelmäßig Produkte kaufen, innerhalb von Sekunden von Ihnen gehen live. Was darauf hindeutet, dass Sie vielleicht bots.
02: Sie können auch einen Blick auf die Fenster von Zeit verwendet, für die Angebote, wenn das Fenster 1 Stunde dann einige frühe Käufer werden Menschen. Ein Mensch wird nur selten aktualisieren, für 4 Stunden aber. Wenn die verstrichene Zeit ziemlich konstant zwischen publish/Kauf unabhängig von der Fenster Dauer, dann ist das ein bot ist. Wenn die publish/Kauf mal kurz für kleine Fenster und bekommt mehr für große Fenster, das ist ein Einsiedler!
Nun statt zu stoppen, die bots aus den mit Ihrer Website Sie haben genügend Informationen, um Ihnen zu sagen, welche Konten werden sicherlich Nutzung von bots, und die Konten sind wahrscheinlich von Einsiedlern. Was Sie mit dieser information tun, ist bis zu Ihnen, aber Sie können sicher verwenden es, um Ihre Website fairer für Leute, die ein Leben haben.
Ich denke, dass ein Verbot der bot-accounts sinnlos wäre, wäre es ähnlich zu telefonieren, Hitler und sagte: "vielen Dank für die Positionen der U-Boote!" Irgendwie müssen Sie die Informationen in einer Weise, dass der Kontoinhaber nicht realisieren. Mal sehen, ob ich träumen kann alles.....
Bestellungen in einer Warteschlange:
Wenn der Kunde eine Bestellung Sie erhalten sofort ein Bestätigungs-E-Mail, erzählen Sie Ihre Bestellung in eine Warteschlange und werden dann benachrichtigt, wenn es verarbeitet wurde. Ich erlebe diese Art der Sache mit Bestellung/Versand bei Amazon und es stört mich nicht, überhaupt, ich glaube nicht daran, immer eine E-Mail Tage später erzählte mir meine Bestellung versandt wurde, solange bekomme ich sofort eine E-Mail sagen mir, dass Amazon weiß, ich will das Buch. In Ihrem Fall wäre es eine E-Mail für
Anwender denken, dass Sie in eine faire Warteschlange. Prozess-Warteschlange jede 1 Stunde so, dass normale Benutzer auch eine Warteschlange, damit Sie nicht Verdacht zu erregen. Nur Bestellungen von bot und Einsiedler-Konten, sobald Sie in die Warteschlange für den "durchschnittlichen Menschen bestellzeit + x Stunden". Eine effektive Senkung des bots auf den Menschen.
InformationsquelleAutor der Antwort
Ich sagen, aussetzen der Preis, Informationen über eine API. Dies ist der unintuitive Lösung aber es funktioniert, um Ihnen die Kontrolle über die situation. Fügen Sie einige Einschränkungen der API, um es etwas weniger funktionaler als die website.
Könnten Sie tun das gleiche für Sie bestellen. Sie Experimentieren konnten, mit kleinen änderungen an der API-Funktionalität/Leistung, bis Sie den gewünschten Effekt.
Gibt es proxies und Botnetze zu besiegen IP-Kontrollen. Es gibt captcha Lesen Skripte, die sind extrem gut. Es gibt sogar teams von Arbeitern in Indien, die Niederlage captchas für einen kleinen Preis. Jede Lösung, die Sie kommen mit einigermaßen besiegt. Gar Ned Batchelder ' s Lösungen können verstärkt werden Vergangenheit durch die Verwendung eines WebBrowser-Steuerelement oder andere simulierte browser, kombiniert mit einem botnet oder proxy-Liste.
InformationsquelleAutor der Antwort
Sind wir derzeit mit der neuesten generation von BigIP Loadbalancer von F5, dies zu tun. Die BigIP hat erweiterte traffic-management-Funktionen, die identifizieren können scrapersand bots basierend auf der Häufigkeit und Muster der Verwendung, auch unter einer Reihe von Quellen, die hinter einer einzigen IP. Es kann dann Gas diese, Ihnen alternative Inhalte oder einfach den tag mit Header oder cookies, so können Sie identifizieren, Sie in Ihrer Anwendung code.
InformationsquelleAutor der Antwort
Wie etwa die Einführung einer Verzögerung, die menschlichen Interaktion erfordert, wie eine Art "CAPTCHA-Spiel". Zum Beispiel könnte es ein kleines Flash-Spiel, wo während der 30 Sekunden, die Sie haben, zu platzen karierten Bälle und vermeiden Sie platzen festen Bälle (Vermeidung von Farbenblindheit Fragen!). Das Spiel würde gegeben werden eine Zufallszahlen-seed und was das Spiel überträgt zurück zu dem server werden die Koordinaten und Zeitstempel des angeklickten Punkte, zusammen mit dem Samen verwendet.
Auf dem server simuliert man die Spielmechanik mit, die Samen zu sehen, ob die Klicks würde tatsächlich platzen die Kugeln. Wenn Sie es Taten, Sie waren nicht nur Menschen, aber Sie haben 30 Sekunden, um zu überprüfen sich selbst. Geben Sie Ihnen eine session-id.
Lassen Sie, dass die session-id zu tun, was er will, aber wenn zu viele Anfragen, können Sie nicht fortfahren, ohne wieder zu spielen.
InformationsquelleAutor der Antwort
Erste, lassen Sie mich rekapitulieren, was wir hier tun müssen. Ich weiß, ich bin nur um die ursprüngliche Frage, aber es ist wichtig, dass wir diese 100% gerade, da gibt es viele tolle Anregungen, dass man 2 oder 3 von 4 Recht, aber wie ich zeigen wird, benötigen Sie einen vielfältigen Ansatz zur Abdeckung aller Anforderungen.
Anforderung 1: Getting rid der "bot zuschlagen':
Rapid-fire 'zuschlagen' front-Seite tut der Website-performance und ist der Kern des Problems. Die 'zuschlagen' stammt von sowohl Einzel-als auch IP-bots und - angeblich - von botnets sowie. Wir wollen, um loszuwerden, beide.
Anforderung 2: Don ' T mess with the user experience:
Konnten wir fix den bot situation ziemlich effektiv durch die Umsetzung einer fiesen Prüfverfahren wie telefonieren, ein Mensch, der Lösung einer Reihe von CAPTCHAs oder ähnliches, aber das wäre wie zwingen, jedes unschuldige Passagier-Flugzeug zu springen, durch verrückte Sicherheits-Reifen nur für die slim chance, sich der sehr dümmsten Terroristen. Oh warte, wir wirklich tun. Aber lasst uns sehen, ob wir nicht tun woot.com.
Anforderung 3: die Vermeidung des "arms race":
Als Sie schweigen, wollen Sie nicht zu verfangen in der spambot-Wettrüsten. So können Sie nicht verwenden einfache Tricks wie hidden oder wirre form, Felder, mathematische Fragen, etc., da Sie sind im wesentlichen dunkel Maßnahmen, die trivial erkannt und umgangen.
Anforderung 4: Abwehr der "alarm" - bots:
Dies ist möglicherweise die schwierigsten Anforderungen. Auch wenn wir eine effektive Mensch-überprüfung Herausforderung, bots könnte noch Umfrage Ihre Homepage und informiert den scripter, wenn es ein neues Angebot. Wir wollen diese bots unmöglich als gut. Dies ist eine stärkere version der ersten Forderung, da nicht nur nicht die bots Ausgabe performance-schädlichen rapid-fire-Anforderungen-Sie kann auch nicht Problem genug wiederholt Anfragen zu senden einen "alarm" an die scripter in der Zeit zu gewinnen bieten.
Okay, also wenn se treffen wir uns alle vier Anforderungen. Erstens, wie ich bereits erwähnte, niemand Maßnahme wird den trick tun. Sie haben zu kombinieren, ein paar tricks um es zu erreichen, und haben Sie zu schlucken zwei ärgernisse:
Ich erkennen, diese sind ärgerlich, aber wenn wir die 'kleine' Anzahl klein genugich hoffe, Sie Stimmen das positive überwiegt das negative.
Erste Maßnahme: Benutzer-basierte Drosselung:
Zweite Maßnahme: eine form der IP-Drosselung, wie vorgeschlagen, von fast allen:
Dritte Maßnahme: Cloaking die Drosselklappe mit zwischengespeicherten Antworten:
Vierte Maßnahme: reCAPTCHA:
Fünfte Maßnahme: Decoy crap:
Sechste Maßnahme: Botnet-Drosselung:
Okay............ Ich habe jetzt die meiste Zeit damit verbracht mein Abend über dieses denken, versuchen verschiedene Ansätze.... global Verzögerungen.... cookie-basierte Token.. in der Warteschlange dienen... 'fremden Drosselung'.... Und es funktioniert einfach nicht. Tut es das nicht. Ich erkannte, der Hauptgrund, warum Sie noch nicht angenommen haben, keine Antwort bisher war, dass niemand hatte vorgeschlagen, eine Möglichkeit zu vereiteln einer verteilten/zombie net/botnet-Attacke.... also ich wollte wirklich, um es zu knacken. Ich glaube, ich brach das botnet-problem für die Authentifizierung in einem anderen threadalso ich hatte große Hoffnungen für Ihr problem. Aber mein Ansatz nicht übersetzen. Sie müssen nur die IPs, um durch zu gehen, und ein genügend großes botnet entfaltet sich nicht in der Analyse-basierend auf IP-Adressen.
So haben Sie es: Meine sechste Maßnahme nichts. Nichts. Zip. Es sei denn, die botnet ist klein und/oder schnell genug, um gefangen in den üblichen IP-Gas, das ich nicht sehen alle wirksame Maßnahme gegen botnets, die nicht die explizite Mensch-überprüfung wie CAPTHAs. Tut mir Leid, aber ich denke, die Kombination der fünf oben genannten Maßnahmen ist Ihre beste Wette. Und könnte Sie wahrscheinlich gut mit nur abelenky 10-Minuten-caching-trick allein.
InformationsquelleAutor der Antwort Jens Roland
Gibt es ein paar andere /bessere Lösungen schon gepostet, aber der Vollständigkeit halber, ich dachte, ich würde erwähnen:
Wenn Ihr Hauptanliegen ist, den Leistungsabfall, und Sie suchen bei true hammeringdann sind Sie eigentlich den Umgang mit einem DoS-Angriff, und Sie sollten wahrscheinlich versuchen, Sie zu behandeln es entsprechend. Ein gängiger Ansatz ist einfach, Pakete von einer IP in der firewall nach einer Anzahl von verbindungen pro Sekunde/minute/usw. Zum Beispiel, die standard-Linux-firewall, iptables, hat eine standard-operation-matching-Funktion "hashlimit", die verwendet werden könnten, zu korrelieren Verbindungsanfragen pro Zeiteinheit auf eine IP-Adresse.
Obwohl, diese Frage wäre wahrscheinlich passender sein für den nächsten, SO-Derivat erwähnt, auf der letzten SO-podcast hat es nicht lanciert noch nicht, also denke ich es ist ok zu beantworten 🙂
EDIT:
Wie bereits von novatrust, es gibt noch ISPs KEINE Zuordnung von IP-Adressen an Ihre Kunden, also effektiv, einen Skript-Kunden ein ISP wäre, deaktivieren Sie alle Kunden aus, die ISP.
InformationsquelleAutor der Antwort
Schreiben Sie einen reverse-proxy auf einem apache-server vor Ihrer Anwendung, die implementiert eine Tarpit (Wikipedia-Artikel) zu bestrafen bots. Es wäre einfach zu verwalten, eine Liste von IP-Adressen, die eine Verbindung in den letzten Sekunden. Sie erkennen einen Ausbruch von Anfragen von einer einzigen IP-Adresse und dann exponentiell verzögern diese Anforderungen, bevor Sie reagieren.
Natürlich, mehrere Menschen kommen aus der gleichen IP-Adresse, wenn Sie eine NAT-Netzwerkverbindung, aber es ist unwahrscheinlich, dass ein Mensch würde Sie daran, Ihre Antwort mal für 2mS auf 4mS (oder sogar 400mS) in der Erwägung, dass ein bot wird dadurch behindert werden, dass die zunehmende Verzögerung ziemlich schnell.
InformationsquelleAutor der Antwort
Essen, bis Ihre Bandbreite.
alle warten random
Zeit von bis zu 45 Sekunden
oder etwas, je nachdem, was
Sie sind auf der Suche nach genau. Genau
was sind deine timing constraints?
InformationsquelleAutor der Antwort
Zunächst, per definition, ist es unmöglich, support, stateless, d.h. wirklich anonym, die Transaktionen, während Sie auch in der Lage, trennen Sie die bots, die von legitimen Benutzern.
Wenn wir annehmen, eine Annahme, die wir verhängen kann einige Kosten auf eine Marke-spanking-neue woot Besucher auf seiner ersten Seite Treffer(en), ich denke ich habe eine mögliche Lösung. Aus Mangel an einem besseren Namen, werde ich Locker nennen diese Lösung "Ein Besuch der DMV."
Lassen Sie uns sagen, dass es ein Autohaus, bietet ein anderes, neues Auto jeden Tag, und an manchen Tagen, Sie können kaufen Sie einen exotischen Sportwagen für 5 $jeder (Grenzwert 3), plus ein $5 Ziel Gebühr.
Der Haken ist, das Autohaus erfordert, dass Sie besuchen Sie das Autohaus und zeigen Sie einen gültigen Führerschein, bevor Ihnen erlaubt wird, durch die Tür, um zu sehen, was für ein Auto ist auf den Verkauf. Darüber hinaus müssen Sie haben gesagt, gültigen Führerschein, um den Kauf zu tätigen.
So, das erste mal Besucher (nennen wir ihn Bob) zu diesem Auto-Händler ist die Einreise verweigert wird, und ist gemäß der DMV-office (welches praktischerweise direkt nebenan) erhalten Sie einen Führerschein.
Anderen Besuchern mit einer gültigen Fahrerlaubnis ist, ist es erlaubt, sich nach Vorlage seines Führerscheins. Eine person, die macht ein ärgernis von sich selbst durch Herumlungern den ganzen Tag, nervt die Verkäufer, greifen Broschüren und Entleerung der Kostenlose Kaffee und Kekse wird schließlich abgewiesen werden.
Nun, zurück zu Bob ohne Lizenz -- alles, was er zu tun hat, wird ertragen den Besuch der DMV einmal. Danach kann er besuchen, Autohaus und Autos zu kaufen Wann immer er mag, es sei denn, er versehentlich seine Brieftasche zu Hause, oder seine Lizenz ist otherwised zerstört oder widerrufen werden.
Den Führerschein in dieser Welt ist fast unmöglich zu fälschen.
Den Besuch der DMV umfasst zunächst immer das Anmeldeformular an die "Hier Starten" - Warteschlange. Bob hat zu nehmen, den ausgefüllten Antrag zu Fenster #1, wo der erste von vielen mürrische Beamte nimmt seine Anwendungs -, Prozess -, und wenn alles in Ordnung ist, Stempel der Anwendung für die Fenster und senden Sie ihn an das nächste Fenster. Und so, sagt Bob von windows auf Fenster, warten auf jedem Schritt seiner Anwendung durch zu gehen, bis er bekommt endlich zu Ende und erhält seine drivere Lizenz.
Es gibt keinen Sinn zu versuchen, den "Kurzschluss" der DMV. Wenn die Formulare nicht korrekt ausgefüllt, in dreifacher Ausfertigung, oder falsche Antworten gegeben auf alle Fenster, die Anwendung ist zerrissen, und die nichtsahnenden Kunden zurück geschickt an den start.
Interessanterweise, egal wie voll oder leer das Büro ist, es dauert ungefähr die gleiche Menge an Zeit, um gewartet bei jeder der aufeinanderfolgenden Fenster. Auch wenn Sie die einzige person in der Linie, es scheint, dass das Personal gerne um Sie, warten Sie eine minute hinter der gelben Linie, bevor er, "Weiter!"
Sind die Dinge nicht ganz so schrecklich an der DMV, jedoch. Während alle das warten und die Verarbeitung, um die Lizenz Los ist, können Sie sehen eine sehr unterhaltsame und informative Werbesendung für das Autohaus, während Sie in der DMV-lobby. In der Tat, die infomerical läuft gerade lange genug, um die Menge der Zeit verbringen Sie immer Ihre Lizenz.
Etwas mehr technische Erklärung:
Wie gesagt an der Spitze, wird es notwendig, einige statusbehaftete Objekte auf dem client-server-Beziehung, die ermöglicht es Ihnen, zu trennen den Menschen von bots. Sie wollen es in einer Weise, die nicht übermäßig bestrafen, die anonyme (nicht authentifizierte) menschliche Besucher.
Dieser Ansatz wahrscheinlich erfordert eine AJAX-y client-seitige Verarbeitung. Eine Marke-spanking-neue Besucher woot ist angesichts der "Willkommen Neue User!" Seite voll von text und Grafiken, die (durch entsprechende serverseitige Drosselung) dauert ein paar Sekunden komplett geladen. Während dies geschieht (und der Besucher ist vermutlich beschäftigt, Lesen Sie die willkommen-Seite(s)), die seiner Identifizierung token wird langsam zusammengesetzt.
Sagen wir mal, für eine Diskussion, die token (aka "driver' s license) besteht aus 20 Segmenten. Um jedes folgende Stück, der client-seitige code Unterwerfen muss eine gültige Anfrage an den server. Der server beinhaltet eine bewusste Verzögerung (sagen wir mal 200 Millisekunden), bevor das nächste Stück zusammen mit dem "Stempel" benötigt, um den nächsten chunk request (d.h. das Stempeln benötigt, um zu gehen von einem DMV-Fenster zum nächsten). Alles in allem hat es etwa 4 Sekunden, die verstreichen müssen, bis Ende die Brocken-challenge-response-Brocken-challenge-response-...-Brocken-challenge-response-Abwicklung.
Am Ende dieses Prozesses, der Besucher hat eine Spielfigur, die erlaubt ihm zu gehen, um die Produkt-Seite mit der Beschreibung und, im Gegenzug, gehen Sie auf die Kauf-Seite. Das token ist eine eindeutige ID für jeden Besucher, und kann verwendet werden, um Gas seine Aktivitäten.
Auf der server-Seite, die Sie akzeptieren nur Seitenaufrufe von Kunden, die einen gültigen token. Oder, wenn es wichtig ist, dass jeder kann schließlich sehen die Seite, legte eine Zeitstrafe auf Anfragen, fehlt ein gültiges token.
Nun, um dies zu relatiely gutartig, um die legitimen menschlichen Besucher,t stellen Sie den token ausstellen Prozess geschieht relativ unaufdringlichem in den hintergrund. Daher die Notwendigkeit für die willkommen-Seite mit unterhaltsamen kopieren und Grafiken, die bewusst etwas verlangsamt.
Dieser Ansatz erzwingt, dass ein Gas-down-bots entweder verwenden Sie einen vorhandenen token, oder nehmen Sie die minimale setup-Zeit, um ein neues token. Natürlich, das hilft nicht so viel gegen komplexe Angriffe über ein verteiltes Netzwerk von faux Besucher.
InformationsquelleAutor der Antwort
Kann man nicht völlig verhindern, dass bots, sogar mit einem captcha. Aber man kann es ein Schmerz zu schreiben und zu verwalten ein bot und daher verringern Sie die Anzahl. Vor allem durch Sie zu zwingen, zu aktualisieren, Ihren bots täglich werden Sie verursachen die meisten das Interesse daran verlieren.
Hier sind einige Ideen, um es schwieriger zu schreiben bots:
Erfordern die Ausführung einer javascript-Funktion. Javascript macht es viel mehr ein Schmerz zu schreiben, ein bot. Vielleicht erfordern ein captcha, wenn Sie nicht ausgeführt javascript, um immer noch erlauben, die tatsächlichen nicht-javascript-Nutzer (minimal).
Zeit der Tastenanschläge bei der Eingabe in der form (wieder mittels javascript). Wenn es nicht Menschen wie Sie dann ablehnen. Es ist ein Schmerz, um imitieren menschliche Eingabe in einem bot.
Schreiben Sie Ihren code zu aktualisieren Sie Ihre Feld-ID ' s täglich einen neuen zufälligen Wert. Dieser wird Sie zwingen, zu aktualisieren, Ihren bot täglich ist ein Schmerz.
Schreiben Sie Ihren code, um die Reihenfolge Ihrer Felder auf einer täglichen basis (offenbar in gewisser Weise, ist nicht zufällig für Ihre Benutzer). Wenn Sie sich darauf verlassen, dass die Reihenfolge der Felder, wird diese Reise Sie auf und wieder Kraft für die tägliche Wartung, um Ihre bot-code.
Könnte man sogar noch weiter gehen und verwenden von Flash-Inhalten. Flash ist völlig Schmerz zu schreiben, bot gegen.
In der Regel, wenn Sie beginnen, die eine Einstellung nicht verhindern, dass Sie, aber machen es noch mehr Arbeit für Sie, können Sie wahrscheinlich das Ziel zu erreichen, die Sie suchen.
InformationsquelleAutor der Antwort
Stick ein 5-minute-Verzögerung auf alle Produkt-Ankündigungen für nicht registrierte Benutzer. Gelegentliche Nutzer nicht wirklich bemerken dies und noncasual Benutzer registriert werden jedenfalls.
InformationsquelleAutor der Antwort
Ich bin nicht zu sehen, die große Bürde, dass Sie Anspruch auf die Prüfung der eingehenden IPs. Im Gegenteil, ich habe ein Projekt für einen meiner Kunden analysiert, die den HTTP-access-logs, die alle fünf Minuten (könnte es wirklich gewesen sein-Zeit, aber er wollte nicht, dass für einige Grund, dass ich nie ganz verstanden) und erstellt die firewall-Regeln zum blockieren von verbindungen von jeder beliebigen IP-Adressen generieren, dass eine übermäßige Anzahl von Anfragen, es sei denn die Adresse kann bestätigt werden, wie die Zugehörigkeit zu einer legitimen Suchmaschine (google, yahoo, etc.).
Dieser client wird ein web-hosting-service und das ausführen dieser Applikation auf drei Servern, die sich mit insgesamt 800-900 domains. Peak-Aktivität ist in der tausend-hits-pro-Sekunden-Bereich, und es hat nie ein performance-Problem - firewalls sind sehr effizient bei der Drop-Pakete von Blacklist-Adressen.
Sind, und ja, DDOS-Technologie, die definitiv nicht existieren, wäre die Niederlage dieses Systems, aber er ist nicht zu sehen, dass passieren, in der realen Welt. Im Gegenteil, er sagt, es ist stark reduziert die Last auf seinen Servern.
InformationsquelleAutor der Antwort
Mein Ansatz wäre, den Fokus auf nicht-technische Lösungen (sonst bist du die Eingabe ein Wettrüsten, du wirst verlieren, oder zumindest verbringen Sie viel Zeit und Geld auf). Ich würde meinen Fokus auf die Rechnungs - /Versand - Ersatzteile- finden Sie bots, indem Sie entweder nach mehreren Lieferungen an dieselbe Adresse oder mehrere Ladungen zu einer einzelnen Zahlung Methode. Sie können dies sogar auf Gegenstände, die über mehrere Wochen, so dass, wenn ein Benutzer bekam einen vorherigen Element (indem Sie Antworten wirklich sehr schnell) er zugeordnet werden kann, irgendeine Art von "Behinderung" dieses mal herum.
Wäre dies auch ein Nebeneffekt (von Vorteil, würde ich denken, aber ich könnte falsch sein marketing-Weise für Ihren Fall), vielleicht weitet man den Kreis der Leute, die Glück haben und bekommen, um zu kaufen, juhuu.
InformationsquelleAutor der Antwort
Meisten rein technischen Lösungen wurden bereits angeboten. Ich werde daher vorschlagen, einen anderen Blick auf das problem.
Wie ich es verstehe, sind die bots werden von Menschen wirklich versuchen zu kaufen die Taschen, die Sie verkaufen. Das problem ist,
Anstatt zu versuchen zu vermeiden, die bots, können Sie potenzielle Tasche-Käufer zu abonnieren, um eine E-Mail oder sogar SMS-update, um benachrichtigt zu werden, wenn ein Verkauf stattfinden wird. Sie können sogar geben Ihnen ein oder zwei Minuten Vorsprung (eine spezielle URL, wo das verkaufen beginnt, nach dem Zufallsprinzip generiert, und verschickt die E-mail - /SMS).
Wenn diese Käufer gehen, um zu kaufen Sie sind in sind Sie Website, können Sie zeigen Sie Ihnen, was Sie wollen in der Seite Banner oder was auch immer. Jene, auf denen die bots lieber einfach registrieren, um Ihre Benachrichtigungs-service.
Bots Läufer könnte noch laufen bots auf Ihre Meldung fertig zu kaufen schneller. Einige Lösungen werden können, bietet eine one-click-kaufen.
Durch die Art und Weise, die Sie erwähnt Ihre Benutzer nicht registriert ist, aber es klingt wie diejenigen, die den Kauf dieser Taschen sind nicht zufällige Käufer, sondern Menschen, die freuen uns auf diesen Verkauf. Als solche werden Sie bereit sein könnten, zu registrieren, um einen Vorteil in den versuchen zu "gewinnen" eine Tasche.
Im wesentlichen, was ich Vorschlage, ist zu versuchen, und betrachten das problem als ein Soziales, weniger eine technische als vielmehr eine.
Asaf
InformationsquelleAutor der Antwort Asaf R
Zeit-block-user-agents, die machen so viele Anfragen pro minute. Wenn du z.B. hast jemand eine Seite anfordert genau alle 5 Sekunden für 10 Minuten, sind Sie wahrscheinlich nicht ein user... Aber könnte es schwierig sein, dieses Recht zu bekommen.
Wenn Sie einen alert auslösen, leiten jede Anfrage an eine statische Seite mit so wenig DB-IO wie möglich mit einer Nachricht, damit Sie wissen, Sie werden dürfen zurück in X Minuten.
Es ist wichtig hinzuzufügen, dass Sie sollten wahrscheinlich nur dieses auf Anfragen für Seiten und ignoriert alle Anfragen für Medien (js, images, etc.).
InformationsquelleAutor der Antwort
Vermeidung von DoS-würde besiegen #2 von @davebug die Ziele, die er von oben, "damit die Website bei einer Geschwindigkeit von nicht verlangsamt durch bots" aber wäre es nicht notwendig, lösen #1, "den Gegenstand Verkaufen zu non-scripting-Menschen"
Ich bin mir sicher, dass ein scripter könnte etwas schreiben, schlittschuh laufen, genau unter die übermäßige limit, das wäre immer noch schneller als ein Mensch gehen konnte, durch die Bestellformulare.
InformationsquelleAutor der Antwort
Alle rechts, so dass die Spammer nicht mehr konkurrieren, normale Leute zu gewinnen, die "Moor Mist" Auktion? Warum machen Sie nicht die nächste Auktion ein literal "bag of crap"? Die Spammer bezahlen gutes Geld für eine Tasche voller doggy tun, und wir alle lachen über Sie.
InformationsquelleAutor der Antwort
Die wichtige Sache hier ist, das system zu ändern, zu entfernen, die Last von Ihrem server, um bots aus dem Gewinn, den Sack der Mist, OHNE dass die botlords wissen, dass Sie spielen Sie, oder Sie überarbeiten Ihre Strategie. Ich glaube nicht, dass es irgendeinen Weg gibt, dies zu tun, ohne einige der Verarbeitung an Ihrem Ende.
So, notieren Sie Sie trifft auf Ihrer Homepage. Wenn jemand hat die Seite, die Verbindung ist im Vergleich zu seinem letzten hit, und wenn es zu schnell ist, dann ist es geschickt, eine version der Seite ohne das Angebot. Diese kann getan werden, indem eine Art von load balancing Mechanismus, der sendet bots (die trifft, die sind zu schnell) zu einem server, der dient lediglich zwischengespeicherte Versionen von der Homepage; Reale Menschen geschickt bekommen, um die guten server. Dies nimmt die Last aus dem main-server und macht sich die bots denken, dass Sie noch bedient werden die Seiten korrekt.
Sogar besser, wenn das Angebot kann abgelehnt werden, in gewisser Weise. Dann können Sie immer noch die Angebote auf den faux-server, aber wenn der bot das Formular ausfüllt sagen "Sorry, Sie waren nicht schnell genug" 🙂 Dann haben Sie auf jeden Fall denken, Sie sind immer noch im Spiel.
InformationsquelleAutor der Antwort
Wie Sie wissen, gibt es skriptschreiber Bestellungen?
Den Kern Ihres Problems ist, dass Sie können nicht voneinander trennen die skriptschreiber von der berechtigten Benutzer und kann daher nicht blockieren, so wie Sie ist, dass Sie wissen, es gibt skriptschreiber?
Wenn Sie einen Weg, um diese Frage zu beantworten, dann haben Sie eine Reihe von Merkmale die Sie verwenden können, um die filter der skriptschreiber.
InformationsquelleAutor der Antwort
Wenden wir uns dem problem auf den Kopf - Sie haben die bots kaufen Sachen, die Sie wollen echte Menschen zu kaufen, wie etwa die konkrete chance, dass die bots kaufen Zeug, dass Sie nicht wollen die echten Menschen zu kaufen.
Haben eine zufällige chance für einige nicht angezeigt, html-Code, der die Schaben bots denke, das ist die Reale situation, sondern echte Menschen, die nicht sehen (und vergessen Sie nicht, dass echte Menschen gehören die blinden, so überlegen, Bildschirm-Lesegeräte, etc), und dieser fährt bis zum Kauf etwas exorbitant teuer ist (oder nicht den eigentlichen Kauf, sondern bekommt die Zahlung details für Sie zusammengestellt, die auf eine Bannliste).
Selbst wenn die bots wechseln zu", warnen den Benutzer, anstatt in den Kauf zu tätigen', wenn Sie genug bekommen können Fehlalarme, können Sie in der Lage sein, um es hinreichend wertlos für die Menschen (vielleicht nicht alle, aber einige Reduktion in der scamming ist besser als gar keiner), nicht zu stören.
InformationsquelleAutor der Antwort