506 Stimmen

Scripter daran hindern, Ihre Website zu blockieren

Ich habe eine Antwort akzeptiert, aber ich glaube leider, dass wir bei unserem ursprünglichen Worst-Case-Szenario bleiben müssen: CAPTCHA jeder auf Kaufversuche der Mist . Kurze Erklärung: Caching/Webfarmen machen es unmöglich, Zugriffe zu verfolgen, und jede Umgehung (Senden eines nicht gecachten Web-Beacons, Schreiben in eine einheitliche Tabelle usw.) verlangsamt die Website stärker, als es die Bots tun würden. Es gibt wahrscheinlich teure Hardware von Cisco oder ähnlichem, die auf hohem Niveau helfen kann, aber es ist schwer, die Kosten zu rechtfertigen, wenn das CAPTCHA-Verfahren für alle eine Alternative ist. Ich werde später versuchen, eine ausführlichere Erklärung abzugeben und die Seite für künftige Suchende zu säubern (obwohl andere es gerne versuchen können, da es sich um ein Community-Wiki handelt).

Situation

Hier geht es um die Tüten-Mist-Verkäufe auf woot.com. Ich bin der Präsident von Woot Workshop, der Tochtergesellschaft von Woot, die das Design macht, die Produktbeschreibungen, Podcasts und Blogbeiträge schreibt und die Foren moderiert. Ich arbeite mit CSS/HTML und bin mit anderen Technologien nur wenig vertraut. Ich arbeite eng mit den Entwicklern zusammen und habe alle Antworten hier (und viele andere Ideen, die wir hatten) durchgesprochen.

Die Benutzerfreundlichkeit macht einen großen Teil meiner Arbeit aus, und die Website spannend und unterhaltsam zu gestalten, macht den größten Teil der Arbeit aus. Daraus leiten sich die drei folgenden Ziele ab. CAPTCHA schadet der Benutzerfreundlichkeit, und Bots stehlen den Spaß und die Spannung aus unseren Mistverkäufen.

Bots stürmen unsere Titelseite zig Mal pro Sekunde und scannen (und/oder scannen unser RSS) für den Random Crap Sale. In dem Moment, in dem sie das sehen, wird eine zweite Stufe des Programms ausgelöst, die sich anmeldet, auf "I want One" klickt, das Formular ausfüllt und den Mist kauft.

Bewertung

lc : Bei Stackoverflow und anderen Seiten, die diese Methode verwenden, handelt es sich fast immer um authentifizierte (angemeldete) Benutzer, weil die Aufgabe, die versucht wird, dies erfordert.

Auf Woot können anonyme (nicht angemeldete) Benutzer unsere Homepage sehen. Mit anderen Worten, die Slamming-Bots können nicht authentifiziert sein (und sind im Wesentlichen nicht verfolgbar, außer über die IP-Adresse).

Also müssen wir wieder nach IPs scannen, was a) im Zeitalter von Cloud-Networking und Spambot-Zombies ziemlich nutzlos ist und b) angesichts der Anzahl von Unternehmen, die von einer IP-Adresse ausgehen, zu viele Unschuldige erwischt (ganz zu schweigen von den Problemen mit nicht-statischen IP-ISPs und den potenziellen Leistungseinbußen bei dem Versuch, dies zu verfolgen).

Oh, und dass man uns anruft, wäre das schlimmstmögliche Szenario. Können wir sie Sie anrufen lassen?

BradC : Die Methoden von Ned Batchelder sehen ziemlich cool aus, aber sie sind eindeutig darauf ausgelegt, Bots zu besiegen, die für ein Netz von Websites entwickelt wurden. Unser Problem ist, dass die Bots speziell dafür entwickelt wurden, unsere Website zu überwinden. Einige dieser Methoden könnten wahrscheinlich für eine kurze Zeit funktionieren, bis die Skripter ihre Bots so weiterentwickelt haben, dass sie den Honeypot ignorieren, den Bildschirm nach nahegelegenen Labelnamen anstelle von Formular-IDs durchsuchen und eine javascriptfähige Browsersteuerung verwenden.

Nochmals lc : "Es sei denn, der Hype ist Teil Ihres Marketingkonzepts." Ja, das ist er definitiv. Die Überraschung, wenn der Artikel erscheint, sowie die Aufregung, wenn man es schafft, einen zu bekommen, ist wahrscheinlich genauso wichtig oder wichtiger als der Mist, den man am Ende tatsächlich bekommt. Alles, was das Prinzip "Wer zuerst kommt, mahlt zuerst" abschafft, schadet dem Nervenkitzel beim "Gewinnen" des Mistes.

novatrust : Und ich für meinen Teil begrüße unsere neuen Bot-Oberherren. Wir bieten tatsächlich RSS-Feeds an, damit Anwendungen von Drittanbietern unsere Website nach Produktinformationen durchsuchen können, aber nicht vor dem HTML-Code der Hauptseite. Wenn ich es richtig interpretiere, hilft Ihre Lösung Ziel 2 (Leistungsprobleme), indem sie Ziel 1 komplett opfert und sich mit der Tatsache abfindet, dass Bots den meisten Mist kaufen werden. Ich habe Ihre Antwort hochgestuft, weil ich Ihren Pessimismus im letzten Absatz für richtig halte. Es scheint hier kein Patentrezept zu geben.

Die übrigen Antworten stützen sich im Allgemeinen auf die IP-Verfolgung, die wiederum sowohl nutzlos (bei Botnetzen/Zombies/Cloud-Networking) als auch nachteilig zu sein scheint (es werden viele Unschuldige erwischt, die von denselben IP-Zielen kommen).

Gibt es andere Ansätze/Ideen? Meine Entwickler sagen immer wieder "lasst uns einfach CAPTCHA machen", aber ich hoffe, dass es weniger aufdringliche Methoden gibt, um alle tatsächlichen Menschen, die etwas von unserem Mist wollen.

Ursprüngliche Frage

Angenommen, Sie verkaufen etwas Billiges, das einen sehr hohen Wert hat, und Sie haben nur eine sehr begrenzte Menge. Niemand weiß genau, wann Sie diesen Artikel verkaufen werden. Und über eine Million Menschen kommen regelmäßig vorbei, um zu sehen, was Sie verkaufen.

Das führt dazu, dass Skripter und Bots programmgesteuert versuchen, [a] herauszufinden, wann du den besagten Gegenstand verkaufst, und [b] sicherzustellen, dass sie unter den ersten sind, die ihn kaufen. Das ist aus zwei Gründen ätzend:

  1. Ihre Website wird von nicht-menschlichen Nutzern überflutet und verlangsamt die Abläufe für alle.
  2. Am Ende "gewinnen" die Drehbuchautoren das Produkt, wodurch sich die Stammkunden betrogen fühlen.

Eine scheinbar offensichtliche Lösung ist es, einige Hürden zu schaffen, durch die Ihre Nutzer springen müssen, bevor sie ihre Bestellung aufgeben können, aber es gibt mindestens drei Probleme dabei:

  • Die Benutzererfahrung für Menschen ist miserabel, da sie CAPTCHA entziffern, die Katze herauspicken oder eine Matheaufgabe lösen müssen.
  • Wenn der wahrgenommene Nutzen hoch genug und die Menge groß genug ist, wird eine Gruppe einen Weg finden, jede Verbesserung zu umgehen, was zu einem Wettrüsten führt. (Dies gilt umso mehr, je einfacher die Änderung ist; ein verstecktes "Kommentar"-Formular, die Neuanordnung der Formularelemente, eine falsche Beschriftung, ein versteckter "Fauxpas"-Text - all dies funktioniert einmal und muss dann geändert werden, um dieses spezielle Formular zu bekämpfen).
  • Selbst wenn die Skripter Ihren Tweak nicht "lösen" können, hindert sie das nicht daran, Ihre Titelseite zuzuschlagen und dann einen Alarm auszulösen, damit der Skripter den Auftrag manuell ausfüllen kann. Da sie durch die Lösung von [a] im Vorteil sind, werden sie wahrscheinlich trotzdem [b] gewinnen, da sie die ersten Menschen sein werden, die die Bestellseite erreichen. Außerdem tritt 1. immer noch auf, was zu Serverfehlern und einer verminderten Leistung für alle führt.

Eine andere Lösung besteht darin, auf IPs zu achten, die zu oft auftauchen, sie in der Firewall zu blockieren oder sie anderweitig an der Bestellung zu hindern. Dies könnte 2. lösen und [b] verhindern, aber der Leistungseinbruch durch das Scannen nach IPs ist massiv und würde wahrscheinlich mehr Probleme wie 1. verursachen, als die Skripter selbst verursachen. Außerdem macht die Möglichkeit von Cloud-Netzwerken und Spambot-Zombies die IP-Prüfung ziemlich nutzlos.

Eine dritte Idee, nämlich das Laden des Bestellformulars für eine gewisse Zeit (z.B. eine halbe Sekunde) zu erzwingen, würde möglicherweise den Fortschritt der schnellen Bestellungen verlangsamen, aber auch hier wären die Skripter immer noch die ersten, und das bei einer Geschwindigkeit, die für die tatsächlichen Benutzer nicht nachteilig ist.

Ziele

  1. Verkaufen Sie den Gegenstand an Menschen, die keine Skripte schreiben.
  2. Sorgen Sie dafür, dass die Website mit einer Geschwindigkeit läuft, die nicht durch Bots gebremst wird.
  3. Belästigen Sie die "normalen" Benutzer nicht mit Aufgaben, die sie erfüllen müssen, um zu beweisen, dass sie Menschen sind.

12voto

Robert Venables Punkte 5903

Ich würde sagen, die Preisinformationen sollten über eine API zugänglich gemacht werden. Das ist eine unintuitive Lösung, aber sie gibt Ihnen die Kontrolle über die Situation. Fügen Sie der API einige Einschränkungen hinzu, damit sie etwas weniger funktional ist als die Website.

Das Gleiche könnte man auch für die Bestellung tun. Sie könnten mit kleinen Änderungen an der API-Funktionalität/Leistung experimentieren, bis Sie den gewünschten Effekt erzielen.

Es gibt Proxys und Botnets, um IP-Kontrollen zu umgehen. Es gibt Captcha-Leseskripte, die extrem gut sind. Es gibt sogar Teams von Arbeitern in Indien, die Captchas für einen geringen Preis umgehen. Jede Lösung, die Sie sich einfallen lassen, kann vernünftig umgangen werden. Sogar die Lösungen von Ned Batchelder können umgangen werden, indem man eine WebBrowser-Kontrolle oder einen anderen simulierten Browser in Verbindung mit einem Botnet oder einer Proxy-Liste verwendet.

12voto

Peter Morris Punkte 15720

Egal, wie sicher die Nazis ihre Kommunikation auch einschätzten, die Alliierten unterbrachen ihre Nachrichten oft. Ganz gleich, wie Sie versuchen, Bots von der Nutzung Ihrer Website abzuhalten, die Bot-Besitzer werden einen Weg finden, dies zu umgehen. Es tut mir leid, wenn Sie dadurch zum Nazi werden :-)

Ich denke, es ist eine andere Denkweise erforderlich.

  • Versuchen Sie nicht, Bots von der Nutzung Ihrer Website abzuhalten
  • Versuchen Sie nicht, eine Lösung zu finden, die sofort funktioniert, sondern gehen Sie langfristig vor

Machen Sie sich klar, dass es keine Rolle spielt, ob der Kunde Ihrer Website ein Mensch oder ein Bot ist, beide sind nur zahlende Kunden; aber der eine hat einen unfairen Vorteil gegenüber dem anderen. Einige Nutzer ohne ein ausgeprägtes Sozialleben (Einsiedler) können für die anderen Nutzer Ihrer Website genauso lästig sein wie Bots.

Erfassen Sie den Zeitpunkt, zu dem Sie ein Angebot veröffentlichen, und den Zeitpunkt, zu dem sich ein Kunde für den Kauf entscheidet.

Dies gibt Ihnen Aufschluss darüber, wie schnell der Kunde etwas kauft.

Variieren Sie die Tageszeit, zu der Sie Angebote veröffentlichen.

Zum Beispiel, ein 3-Stunden-Fenster haben das zu einer unbestimmten Zeit des Tages (Mitternacht?) Nur Bots und Einsiedler werden eine Seite 3 Stunden lang ständig aktualisieren Stunden eine Seite aktualisieren, nur um eine Bestellung innerhalb Sekunden einzugeben. Variieren Sie niemals die Basiszeit, nur die Größe des Fensters.

Mit der Zeit wird sich ein Bild ergeben.

01: Sie können sehen, welche Kunden regelmäßig Produkte kaufen, und zwar innerhalb von Sekunden nach deren Veröffentlichung. Das deutet darauf hin, dass es sich um Bots handeln könnte.

02: Sie können sich auch das Zeitfenster für die Angebote ansehen. Wenn das Zeitfenster 1 Stunde beträgt, werden einige frühe Käufer Menschen sein. Ein Mensch wird jedoch selten 4 Stunden lang aktualisieren. Wenn die verstrichene Zeit zwischen Veröffentlichung und Kauf unabhängig von der Dauer des Zeitfensters ziemlich konstant ist, handelt es sich um einen Bot. Wenn die Zeit zwischen Veröffentlichung und Kauf bei kleinen Fenstern kurz ist und bei großen Fenstern länger wird, dann ist das ein Einsiedler!

Anstatt Bots von der Nutzung Ihrer Website abzuhalten, haben Sie nun genügend Informationen, um festzustellen, welche Konten mit Sicherheit von Bots genutzt werden und welche Konten wahrscheinlich von Einsiedlern verwendet werden. Was Sie mit diesen Informationen machen, bleibt Ihnen überlassen, aber Sie können sie sicherlich nutzen, um Ihre Website für Menschen, die ein Leben haben, fairer zu gestalten.

Ich denke, dass es sinnlos wäre, die Bot-Konten zu sperren. Das wäre so, als würde man Hitler anrufen und sagen: "Danke für die Positionen deiner U-Boote! Irgendwie muss man die Informationen so nutzen, dass die Kontobesitzer es nicht merken. Mal sehen, ob mir etwas einfällt.....

Aufträge in einer Warteschlange verarbeiten:

Wenn der Kunde eine Bestellung aufgibt, erhält er sofort eine Bestätigungs-E-Mail, die ihm mitteilt, dass seine Bestellung in der Warteschlange steht und er benachrichtigt wird, sobald sie bearbeitet wurde. Ich erlebe diese Art von Bestellung/Versand bei Amazon und es stört mich überhaupt nicht. Es macht mir nichts aus, Tage später eine E-Mail zu erhalten, die mir mitteilt, dass meine Bestellung versandt wurde, solange ich sofort eine E-Mail erhalte, die mir mitteilt, dass Amazon weiß, dass ich das Buch haben möchte. In Ihrem Fall wäre das eine E-Mail für

  1. Ihre Bestellung wurde aufgegeben und befindet sich in einer Warteschlange.
  2. Ihre Bestellung wurde bearbeitet.
  3. Ihre Bestellung wurde versandt.

Die Nutzer glauben, dass sie sich in einer fairen Warteschlange befinden. Bearbeiten Sie Ihre Warteschlange alle 1 Stunde, so dass auch normale Nutzer eine Warteschlange erleben, um keinen Verdacht zu erregen. Bearbeiten Sie Bestellungen von Bot- und Einsiedlerkonten erst, wenn sie die "durchschnittliche menschliche Bestellzeit + x Stunden" in der Warteschlange verbracht haben. Dadurch werden Bots auf Menschen reduziert.

9voto

Wir verwenden dazu derzeit die neueste Generation von BigIP-Load-Balancern von F5. BigIP verfügt über fortschrittliche Funktionen zur Verwaltung des Datenverkehrs, mit denen Scraper und Bots auf der Grundlage von Häufigkeit und Nutzungsmustern identifiziert werden können, und zwar selbst aus einer Reihe von Quellen, die sich hinter einer einzigen IP-Adresse befinden. Er kann diese dann drosseln, ihnen alternative Inhalte anbieten oder sie einfach mit Headern oder Cookies kennzeichnen, damit Sie sie in Ihrem Anwendungscode identifizieren können.

7voto

Jens Roland Punkte 26963

Lassen Sie mich zunächst rekapitulieren, was wir hier tun müssen. Mir ist klar, dass ich die ursprüngliche Frage nur umschreibe, aber es ist wichtig, dass wir das zu 100 % richtig verstehen, denn es gibt eine Menge großartiger Vorschläge, die 2 oder 3 von 4 richtig machen, aber wie ich zeigen werde, brauchen Sie einen vielschichtigen Ansatz, um alle Anforderungen zu erfüllen.

Anforderung 1: Abschaffung des "Bot-Slammings":

Das schnelle "Zuschlagen" Ihrer Titelseite beeinträchtigt die Leistung Ihrer Website und ist der Kern des Problems. Das "Slamming" kommt sowohl von Single-IP-Bots als auch - angeblich - von Botnetzen. Wir wollen beides loswerden.

Anforderung 2: Bringen Sie die Nutzererfahrung nicht durcheinander:

Wir könnten die Bot-Situation ziemlich effektiv lösen, indem wir ein fieses Verifizierungsverfahren einführen, wie das Anrufen eines menschlichen Operators, das Lösen einer Reihe von CAPTCHAs oder ähnliches, aber das wäre so, als würden wir jeden unschuldigen Flugpassagier dazu zwingen, durch verrückte Sicherheitsschleifen zu springen, nur für die geringe Chance, den dümmsten aller Terroristen zu erwischen. Oh, Moment - das machen wir ja schon. Aber schauen wir mal, ob wir es schaffen pas tun Sie das auf woot.com.

Anforderung 3: Vermeidung des "Wettrüstens":

Wie Sie bereits erwähnt haben, möchten Sie nicht in das Wettrüsten der Spambots verwickelt werden. Sie können also keine einfachen Maßnahmen wie versteckte oder durcheinandergewürfelte Formularfelder, mathematische Fragen usw. verwenden, da es sich dabei im Wesentlichen um Verschleierungsmaßnahmen handelt, die auf triviale Weise automatisch erkannt und umgangen werden können.

Anforderung 4: Vereiteln von "Alarm"-Bots:

Dies ist vielleicht die schwierigste Ihrer Anforderungen. Selbst wenn wir eine wirksame Herausforderung für die menschliche Überprüfung schaffen können, könnten Bots immer noch Ihre Startseite abfragen und den Skripter alarmieren, wenn es ein neues Angebot gibt. Wir wollen auch diese Bots unmöglich machen. Dies ist eine stärkere Version der ersten Anforderung, da die Bots nicht nur keine leistungsschädigenden Schnellfeueranfragen stellen können, sondern nicht einmal genug wiederholte Anfragen stellen können, um dem Skripter rechtzeitig einen "Alarm" zu senden, um das Angebot zu gewinnen.


Okay, dann wollen wir mal sehen, ob wir alle vier Anforderungen erfüllen können. Wie ich bereits erwähnt habe, reicht eine einzige Maßnahme nicht aus. Sie müssen einige Tricks kombinieren, um das Ziel zu erreichen, und Sie müssen zwei Ärgernisse in Kauf nehmen:

  1. Eine kleine Anzahl von Nutzern wird durch Reifen springen müssen
  2. Eine kleine Anzahl von Nutzern wird die Sonderangebote nicht erhalten können

Mir ist klar, dass das lästig ist, aber wenn wir die "kleine" Zahl klein genug Ich hoffe, Sie stimmen zu, dass die positiven Aspekte die negativen überwiegen.

Erste Maßnahme: Benutzerbasierte Drosselung:

Das ist ein absolutes Muss, und ich bin sicher, dass Sie es bereits tun. Wenn ein eingeloggter Benutzer 600 Mal pro Sekunde (oder so ähnlich) die Seite aufruft, reagieren Sie nicht mehr und sagen ihm, er soll sich beruhigen. Wahrscheinlich drosseln Sie seine Anfragen sogar deutlich früher, aber Sie verstehen schon. Auf diese Weise wird ein eingeloggter Bot gebannt/gedrosselt, sobald er beginnt, Ihre Website abzufragen. Das ist der einfache Teil. Die nicht authentifizierten Bots sind unser eigentliches Problem, also kommen wir zu ihnen:

Zweite Maßnahme: Eine Form der IP-Drosselung, wie von fast allen vorgeschlagen:

Egal, was Sie tun, Sie müssen einige IP-basierte Drosselung, um das "Bot-Slamming" zu vereiteln. Da es Ihnen wichtig zu sein scheint, dass nicht authentifizierte (nicht eingeloggte) Besucher die Sonderangebote erhalten können, haben Sie zunächst nur IPs zur Verfügung, die zwar nicht perfekt sind, aber faire gegen Single-IP-Bots funktionieren. Botnets sind eine andere Sache, aber darauf werde ich zurückkommen. Für den Moment werden wir einige einfache Drosselungen vornehmen, um schnell feuernde Single-IP-Bots zu schlagen.

Die Leistungseinbußen sind vernachlässigbar, wenn Sie die IP-Prüfung vor allen anderen Verarbeitungen durchführen, einen Proxyserver für die Drosselungslogik verwenden und die IPs in einer für Memcached Lookup optimierten Baumstruktur speichern.

Dritte Maßnahme: Tarnung der Drosselklappe mit zwischengespeicherten Antworten:

Wenn die schnellen Single-IP-Bots gedrosselt sind, müssen wir uns immer noch mit langsamen Single-IP-Bots befassen, d. h. mit Bots, die speziell darauf getrimmt sind, unter dem Radar zu fliegen, indem sie die Anfragen etwas weiter auseinander halten, als es die Drosselung erlaubt.

Um langsame Einzel-IP-Bots sofort unbrauchbar zu machen, verwenden Sie einfach die von abelenky vorgeschlagene Strategie: Senden Sie 10 Minuten alte Seiten aus dem Cache an alle IPs, die in den letzten 24 Stunden (oder so) gesichtet wurden. Auf diese Weise erhält jede IP eine "Chance" pro Tag/Stunde/Woche (je nach dem von Ihnen gewählten Zeitraum), und es wird keine sichtbare Belästigung für echte Nutzer geben, die nur auf "neu laden" drücken, außer dass sie das Angebot nicht gewinnen.

Das Schöne an dieser Maßnahme ist, dass sie auch vereitelt "Alarm-Bots", solange sie nicht aus einem Botnetz stammen.

(Ich weiß, dass es Ihnen wahrscheinlich lieber wäre, wenn echte Benutzer immer wieder aktualisieren dürften, aber es gibt keine Möglichkeit, einen Refresh-Spammer von einem Request-Spammer-Bot zu unterscheiden, ohne ein CAPTCHA oder ähnliches)

Vierte Maßnahme: reCAPTCHA:

Sie haben Recht, dass CAPTCHAs die Benutzerfreundlichkeit beeinträchtigen und vermieden werden sollten. Allerdings, in _ein_ Situation können sie Ihr bester Freund sein: Wenn Sie ein sehr restriktives System entwickelt haben, um Bots zu vereiteln, das - aufgrund seiner Restriktivität - auch eine Reihe von Falschmeldungen abfängt, dann dient ein CAPTCHA als letztes Mittel ermöglicht es den echten Nutzern, die erwischt werden, Ihre Drosselung zu umgehen (und so lästige DoS-Situationen zu vermeiden).

Am besten ist es natürlich, wenn ALLE Bots in Ihrem Netz gefangen werden, während extrem wenige echte Nutzer durch das CAPTCHA gestört werden.

Wenn Sie die 10 Minuten alten Seiten aus dem Cache anbieten, sollten Sie auch eine Alternative anbieten, optional CAPTCHA-überprüften "Frontpage Refresher", dann Menschen, die wirklich immer wieder aktualisieren möchten, können dies tun, ohne die alte Seite aus dem Zwischenspeicher zu erhalten, allerdings um den Preis, dass sie bei jeder Aktualisierung ein CAPTCHA lösen müssen. Das es ein Ärgernis, sondern eine optionale nur für die eingefleischten Nutzer, die eher nachsichtig sind, weil sie wissen dass sie das System ausnutzen, um ihre Chancen zu verbessern, und dass bessere Chancen nicht umsonst zu haben sind.

Fünfte Maßnahme: Lockvogel-Mist:

Christopher Mahan hatte eine Idee, die mir sehr gut gefiel, aber ich würde sie anders formulieren. Jedes Mal, wenn Sie ein neues Angebot vorbereiten, bereiten Sie auch zwei andere "Angebote" vor, die kein Mensch auswählen würde, z. B. eine 12-mm-Flügelmutter für 20 Dollar. Wenn das Angebot auf der Titelseite erscheint, fügen Sie alle drei "Angebote" in dasselbe Bild ein, mit Nummern, die den einzelnen Angeboten entsprechen. Wenn der Benutzer/Bot den Artikel tatsächlich bestellt, muss er sich für das gewünschte Angebot entscheiden (eine Optionsschaltfläche), und da die meisten Bots nur raten würden, würden sie in zwei von drei Fällen wertlosen Schrott kaufen.

Dies gilt natürlich nicht für "Alarm-Bots", und es besteht eine (geringe) Chance, dass jemand einen Bot baut, der den richtigen Gegenstand auswählt. Das Risiko, versehentlich Schrott zu kaufen, sollte Skripter jedoch dazu bringen, sich ganz von den vollautomatischen Bots abzuwenden.

Sechste Maßnahme: Drosselung von Botnetzen:

[gelöscht]

Okay............ Ich habe jetzt die meiste Zeit meines Abends damit verbracht, darüber nachzudenken und verschiedene Ansätze auszuprobieren.... global delays.... cookie-based tokens... queued serving... 'Fremde Drosselung'.... Und es funktioniert einfach nicht. Es funktioniert nicht. Mir wurde klar, dass der Hauptgrund, warum Sie bisher keine Antwort akzeptiert haben, der war, dass niemand einen Weg vorgeschlagen hatte, einen verteilten/Zombie-Netz/Botnet-Angriff zu vereiteln...., also wollte ich ihn wirklich knacken. Ich glaube, ich habe das Botnetz-Problem für die Authentifizierung in einem anderer Thread Deshalb hatte ich auch große Hoffnungen für Ihr Problem. Aber mein Ansatz lässt sich nicht auf dieses Problem übertragen. Sie haben nur IPs als Anhaltspunkte, und ein ausreichend großes Botnetz lässt sich bei einer Analyse auf der Grundlage von IP-Adressen nicht erkennen.

Da haben Sie es also : Meine sechste Maßnahme ist nichts. Nichts. Null. Solange das Botnetz nicht klein und/oder schnell genug ist, um von der üblichen IP-Drosselung erfasst zu werden, sehe ich nicht jede wirksame Maßnahme gegen Botnetze, die keine explizite menschliche Verifizierung wie CAPTHAs erfordert. Es tut mir leid, aber ich denke, dass eine Kombination der oben genannten fünf Maßnahmen die beste Lösung ist. Und wahrscheinlich kommen Sie auch mit dem 10-Minuten-Caching-Trick von abelenky allein gut zurecht.

7voto

Paul Dixon Punkte 286600

Wie wäre es, eine Verzögerung einzuführen, die menschliche Interaktion erfordert, wie eine Art "CAPTCHA-Spiel". Es könnte z. B. ein kleines Flash-Spiel sein, bei dem 30 Sekunden lang karierte Bälle zerplatzen müssen, ohne dass einfarbige Bälle zerplatzen (um Probleme mit Farbenblindheit zu vermeiden!). Dem Spiel wird ein Zufallswert zugewiesen, und das Spiel übermittelt die Koordinaten und Zeitstempel der angeklickten Punkte zusammen mit dem verwendeten Wert an den Server zurück.

Auf dem Server simulieren Sie die Spielmechanik mit diesem Seed, um zu sehen, ob die Klicks die Kugeln tatsächlich zum Platzen gebracht hätten. Wenn ja, dann waren sie nicht nur menschlich, sondern brauchten auch 30 Sekunden, um sich zu bestätigen. Geben Sie ihnen eine Sitzungsnummer.

Man lässt die Sitzungsnummer machen, was sie will, aber wenn sie zu viele Anfragen stellt, kann sie nicht weitermachen, ohne erneut zu spielen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X