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:
- Ihre Website wird von nicht-menschlichen Nutzern überflutet und verlangsamt die Abläufe für alle.
- 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
- Verkaufen Sie den Gegenstand an Menschen, die keine Skripte schreiben.
- Sorgen Sie dafür, dass die Website mit einer Geschwindigkeit läuft, die nicht durch Bots gebremst wird.
- Belästigen Sie die "normalen" Benutzer nicht mit Aufgaben, die sie erfüllen müssen, um zu beweisen, dass sie Menschen sind.