Wie kann man Missbrauch (Botting) der Online-Spiel-API erkennen und verhindern?


49

In meiner Freizeit habe ich gelegentlich an einer Spielidee gearbeitet. Das Gameplay und der Inhalt machen es zu einem Online-Multiplayer-Spiel, das mit etablierten Webtechnologien erstellt wurde. Sie sollten wissen, dass es in das Genre Strategie und Simulation fällt. Das heißt: Kein Herumtollen mit Charakteren oder ähnlichem, sondern nur atomare Aktionen (bezüglich Client-Server-Kommunikation) wie "Bauen Sie Ding A an Ort X".

Irgendwann stellte ich fest, dass es ein riesiges Problem gibt: Wenn ein browserbasiertes Front-End auf einem REST-API-Back-End basiert, ist es ein mehr als hervorragendes Ziel für Bots. Während Automatisierung für Unternehmen wünschenswert ist, ist sie Gift für ein Spiel, bei dem es um Spaß geht. Ich habe es in der Vergangenheit in einem Browsergame aus erster Hand erlebt. Die erfolgreichsten Spieler waren Bots, die alle überwältigten.

Aus meiner aktuellen Sicht sehe ich keine Möglichkeit, mich vor Bots zu schützen, wenn ich ein Multiplayer-Online-Spiel auf der Basis einer REST-API aufbaue. Ausnahme: Open Source, damit jeder seine eigene Instanz für private Gruppen oder auch nur für sich selbst hosten kann (um sich nicht über Idioten mit Bots zu ärgern).

Gibt es eine Möglichkeit, zwischen einem ehrlichen Spieler, der gerade einen Alarm für die nächste mögliche Aktion ausgelöst hat, und einem Bot zu unterscheiden, der automatisch alle Chancen wahrnimmt, wenn er auftaucht? Daneben solche Showstopper wie Captchas. Wenn nicht, würde ich über einen anderen Technologie-Stack nachdenken, der es zumindest viel schwerer macht, mit der Client-Server-Kommunikation (proprietäres verschlüsseltes Binärprotokoll in einem nativen Code-Client) in Konflikt zu geraten.

Bearbeiten : Vielen Dank, Ihre Antworten sind inspirierend, haben mich aber auch darauf aufmerksam gemacht, dass es nicht möglich ist, bestimmte Gegenmaßnahmen zu ergreifen, indem wir uns näher mit Details des Spiels befassen. Dies wäre jedoch zu viel für eine Frage zu Stack Exchange. Deshalb möchte ich nur auf die wichtigsten Punkte hinweisen:

  • Die Spieler erforschen, entwickeln und verwalten, wann immer sie wollen. Ihre Geschäfte laufen immer noch gut, wenn sie offline sind (es ist ein friedliches Spiel, ohne Waffen). Nur Expansion und Fortschritt erfordern die Aktion des Spielers. Diese Aktionen sind begrenzt durch:
  • Zeit ist eine der Schlüsselressourcen (wie in EVE Online Skill Training). Alle Prozesse im Spiel erfordern es. Es macht keinen Sinn, rund um die Uhr online zu sein. Der durchschnittliche Spieler sollte bereits erfolgreich sein und nicht mehr als eine Stunde pro Tag in ein oder zwei Sitzungen verbringen ( ungefähr befindet sich das Konzept noch in der Entwicklung).

9
Kannst du das Spiel nicht so gestalten, dass andere das Programmieren oder Kaufen von Bots nicht den Spaß der menschlichen Spieler ruinieren? Und zweitens kann das Programmieren eines Bots / einer KI für ein Spiel von sich aus Spaß machen. es sollte jedoch nicht den Spaß anderer ruinieren.
Kasper van den Berg

26
"Automatisierung [...] ist Gift für ein Spiel, bei dem es um Spaß geht." Entschieden widersprechen. Wenn es in Ihrem Spiel wirklich um Spaß geht, warum sollten Sie die Spieler dafür bestrafen, Teile zu überspringen, bei denen sie keine haben? Wenn Elemente aus Ihrem Spiel so langweilig sind, dass die Spieler es vorziehen, nicht zu spielen, und den Wunsch verspüren, ein Drehbuch übernehmen zu lassen, ist dies das eigentliche Problem, das angegangen werden muss.
Marcks Thomas

6
Ihr Beispiel hat eine einfache Antwort: gibt dem Spieler die Werkzeuge , damit sie nicht brauchen einen Bot. Lassen Sie sie beispielsweise eine Aktion in die Warteschlange stellen, anstatt sie zu ermutigen, zu einem bestimmten Zeitpunkt online zu sein, oder erstellen Sie ein Tool, um dies für sie zu tun.

4
Der Hauptgrund, warum die Leute Bots benutzen, ist, dass Teile des Spiels für sie langweilig und langweilig sind (wenn sie Spaß machen würden, würden sie sie einfach spielen). Offensichtlich genießen Ihre Spieler den Wettbewerb und die Herausforderung, aber nicht das automatisierbare Gameplay. Sie können versuchen, das Spieldesign zu ändern, um die Teile zu entfernen, die die Benutzer mit Bots überwinden, oder Ihr Spiel neu ausbalancieren, um schwierigere und aussagekräftigere Entscheidungen zu treffen, die nur ein menschlicher Spieler treffen kann, und ein Bot nicht (wie z. B. tiefgreifende strategische Entscheidungen). . Andernfalls werden Sie zu einem Wettrüsten verurteilt, und die Bottler werden gewinnen.
Superbest

6
tl; dr: Die Leute werden es nicht mögen, gegen den Typ mit Alarm und keinem Job anzutreten, genauso wenig wie gegen den Typ mit Bot - und genau das wird sie dazu bringen, Bots zu starten.
Random832

Antworten:


50

Wenn die Leute Bot wollen, kann man sie meiner Meinung nach nicht wirklich aufhalten.

Natürlich können Sie viele Maßnahmen ergreifen, die das Abfüllen mehr oder weniger schmerzhaft machen. Sie können jedoch nur so viel tun, bevor Ihre Codebasis zu einem riesigen Durcheinander wird, das zu warten ist, fehleranfällig ist und legitime Benutzer ärgert. In der Zwischenzeit werden die Abfüller immer einen Weg finden, Ihre Gegenmaßnahmen zu umgehen:

  • Es gibt mehr von ihnen als Sie
  • Sie haben mehr Zeit zur freien Verfügung (Sie müssen die Zeit zwischen der eigentlichen Entwicklung und dem Bot-Proofing aufteilen, sie können ihren Bot-Code den ganzen Tag hacken).
  • Während Sie ausgefallene, herausfordernde Schutzmaßnahmen erstellen, werden die Autoren des Bots weiter ermutigt, da es Spaß macht, den Schutz Ihres Bots zu durchbrechen
  • Wenn es einen Schwarzmarkt für Leute gibt, die kommerziell von Bots profitieren, wird es umso schwieriger, einen Bot zu schreiben, je wertvoller die funktionierenden Bots sind, sodass Sie Anreize für Botting schaffen

Sie werden im Grunde genommen in einem Wettrüsten mit den Bottlern gefangen sein, und basierend auf der Logik in Anlehnung an die obigen Punkte sowie meiner Erfahrung mit solchen Spielen werden Sie nicht in der Lage sein, mitzuhalten.

Einige Spieleentwickler wenden äußerst aggressive Betrugsbekämpfungsmaßnahmen an: Steam durchsucht beispielsweise den Speicher und das Dateisystem nach Hacks, und Straftäter können mit dem Verlust von Konten im Wert von Hunderten von Dollar bestraft werden. Trotzdem gibt es immer noch Bots und andere Hacks für Steam-Spiele, von denen einige sogar die Hälfte der Zeit funktionieren. Im Gegensatz zu ihnen verfügen Sie über eine API, die dem Benutzer offensteht und keine Kontrolle über den Computer des Benutzers hat. Es ist von Anfang an ein harter Kampf.

Das Problem, das Sie zu lösen versuchen, ist im Wesentlichen ein Turing-Test: Es ist jedoch ein sehr einfacher Turing-Test, da Sie nicht schummeln können, wenn Sie harte AI-Probleme wie die Sprache benötigen. Unabhängig davon, wie viele Heuristiken Sie erstellen, wäre es für einen Botter trivial, die Aktion des Bots ein wenig zufällig zu gestalten, damit sie fast genau einen Menschen imitiert. Es wäre nicht einmal sehr schwer, den Bot ein wenig beobachten zu lassen und zu lernen, wie man Aktionen genau wie Sie zeitlich festlegt. Dann , wenn Sie den Bot verbieten, die botter Beiträge ein riesiges rant auf dem Forum darüber , wie er ist nur ein dedizierter Spieler (und vielleicht auch er ist eigentlich ein falsch positiv) und Ihr Kernpublikum von Hardcore - Spieler in den Waffen gegen Dich erheben werden.

Machen Sie das Spiel zu lustig, um Bot

Der Hauptgrund, warum jemand einen Bot benutzt, ist, dass er einen Teil des Spiels überspringen möchte. Wenn sie das Spiel genossen und es Spaß fanden, würden sie den Bot nicht dazu bringen, es zu spielen, sie würden es selbst spielen.

Aber wenn das Spiel so langweilig ist, warum überhaupt spielen? Vermutlich sind einige Teile des Spiels langweilig und obligatorisch, um Teile zu finden, die Spaß machen. In MMOs zum Beispiel geht jeder gerne einen Level aufwärts, aber niemand möchte 42.324 grausame untote Giftratten töten, um die EP zu erhalten. Also ließen sie den Bot mahlen und vorbeischauen, um die lustige Rolle zu spielen.

Dies ist keine Kritik an Ihnen oder Ihrem Spiel, aber zumindest einige Spieler finden einige Teile Ihres Spiels mühsam. Sie sollten sehen, ob Sie diese mühsamen Teile reduzieren und schwierigere, aussagekräftigere Entscheidungen treffen können: Bots sind im Vergleich zu menschlicher Intelligenz nicht in der Lage, tiefgreifende Strategien oder Querdenken zu entwickeln, und außerdem gefällt es den Menschen, schwierige Spielentscheidungen zu treffen.

Nach Ihrer Beschreibung habe ich den Eindruck, dass es sich um ein Browsergame handelt, das Travian ähnelt. Es gibt eine Build-Warteschlange mit einer einzigen optimalen Build-Reihenfolge und bestimmten "Wartungs" -Aufgaben (z. B. das Fortführen von Farming-Raids), die ausgeführt werden müssen. Sie sagen, dass es keinen Konflikt gibt, aber in jedem MMO-Drama und jeder Kleinigkeit ist Politik unvermeidlich (IMO ist es die Hauptattraktion), also bin ich sicher, dass Ihre Spieler Wege finden, Köpfe zu stoßen. Bei diesen Arten von Spielen kommt ein Großteil der Langeweile aus diesen "Wartungs" -Aufgaben - was die Spieler wirklich tun wollen, ist, Allianzen zu schließen und das Diplomatiespiel mit rivalisierenden Clans zu spielen. Die Wartung wird dann zu einer Art Steuer, bei der man aufwachen muss bis zu einem Wecker zu ungeraden Stunden, um in diesen spaßigen diplomatischen Teil eintreten zu dürfen. So schneiden Sie die Langeweile aus:

Dieser Ansatz funktioniert leider nicht immer. Nicht alle Spieler haben die gleiche Toleranz gegenüber Langeweile oder das gleiche Konzept von Spaß. Sie könnten einen prominenten Mechaniker haben, den 99% Ihrer Spieler mögen, aber die 1% finden es langweilig. Was ist, wenn die 1% dann anfangen, Bots zu schreiben, was den Spaß für die 99% ruiniert? Aber letztendlich ist es eine Frage des Grades. Sie können niemals den Boden vollständig entfernen, aber Sie können den Schaden minimieren.

Unterschnittene Flaschen

Viele der wirklich negativen Auswirkungen von Bots kommen von Bot-Autoren, die ihre Arbeit kommerzialisieren. Wenn dies für Sie der Fall ist, können Sie einfach mit den Bots konkurrieren. Viele Echtzeit-basierte Online-Spiele verfügen bereits über Premium-Funktionen, die das Überspringen von Zeit und die Automatisierung ermöglichen (z. B. erweiterte Erstellungswarteschlangen). Diese belaufen sich auf einen von Entwicklern genehmigten offiziellen Bot. Wenn du diese hast und sie angemessen bezahlst, kaufen die Spieler deine Prämie, anstatt Bots zu kaufen. Die gute Nachricht ist, dass Sie für die API verantwortlich sind. Sie haben also immer einen großen Vorteil darin, hochwertige Automatisierung für Ihr eigenes Spiel zu entwickeln. Diesmal ist es also ein Kampf um die Talsohle.

Dies wird nicht dazu führen, dass Amateur-Abfüller beseitigt werden oder Personen, die der Meinung sind, dass Ihre Prämie kein gutes Preis-Leistungs-Verhältnis bietet. Daher hängt die Wirksamkeit dieses Ansatzes wiederum von der jeweiligen Situation ab.

Manuell nach ihnen suchen

Wie ich oben sagte, ist das, was Sie tun, im Wesentlichen ein Turing-Test. Da die Interaktion mit Menschen bekanntermaßen eine schwierige Herausforderung für Turing-Tests darstellt, können Sie versuchen, diese zu nutzen.

Untersuchen Sie manuell Top-Level-Spieler und stellen Sie fest, ob Sie etwas Verdächtiges finden. Sie könnten sogar in der Lage sein, sie gelegentlich auf eine Weise zu untersuchen, die nur Ihrer Fantasie entspricht, um zu sehen, ob Sie den Bot dazu bringen können, etwas zu tun, was er nicht tun würde.

Während es schwierig ist, einen Algorithmus zu schreiben, der Bots zuverlässig erkennt, ist es für einen Menschen nicht so schwierig zu lernen, wie man sie erkennt. Ich denke, viele Browsergames verwenden diese Strategie und sie kann sehr effektiv sein. Der Nachteil ist, dass Sie entweder die ganze Zeit langweilige Arbeit erledigen müssen oder Spielleiter für die regelmäßige Bot-Patrouille bezahlen müssen.


4
Ich habe diese Antwort gewählt, weil es mir als die durchdachteste erscheint, die Frage einen Schritt zurück zu betrachten, weg von technischen Details. Ich habe lange darüber nachgedacht, Adam Davis 'auszuwählen, weil er einige sehr gute Ideen zum "How to" enthält.
Peter

1
@Alomvar Ich bin froh, dass es hilfreich war. Da die Frage so viele Stimmen hat, kannst du genauso gut einen Link zu deinem Spiel in dein Profil setzen :)
Superbest

2
Ugh, ist Travian noch da? Ich habe das vor vielen Jahren gespielt und dann aufgehört, als mir klar wurde, dass das Gameplay im Grunde genommen auf "Möge der beste Soziopath gewinnen" reduziert werden kann.
Mason Wheeler

25

Die beste und einzig wirksame Verteidigung gegen Bots besteht darin, Ihr Spiel so zu gestalten, dass die Spieler nicht das Bedürfnis haben, es überhaupt zu automatisieren. Wenn Ihre Spieler einfache Aufgaben automatisieren, die eigentlich keine Fähigkeiten erfordern, ist dies ein Zeichen dafür, dass Ihre Benutzeroberfläche fehlt und sie eine fehlende Benutzeroberflächenfunktion ersetzen.

  • Umfasst Ihr Spiel sich wiederholende Aufgaben, bei denen der Spieler immer wieder dieselbe Aktion ausführt, um zu mahlen?

    Machen Sie diese Aspekte Ihres Spiels weniger repetitiv und interessanter für das Spielen und Wiederholen.

  • Erfordert Ihr Spiel, dass Spieler Aktionen ausführen, die für sie unpraktisch sind, beispielsweise mitten in der Nacht oder wenn sie auf der Arbeit sind?

    Erlauben Sie ihnen, Aufträge in die Warteschlange zu stellen (wie "Build X1, dann X2, dann X3, jeweils beginnend, sobald die Ressourcen verfügbar sind") oder Aktionen zu bestimmten Zeiten im Voraus zu planen (Build X um 3:22 Uhr).

  • Müssen die Spieler in einem sehr kurzen Zeitraum auf Ereignisse reagieren?

    Erlauben Sie ihnen, das Spiel so zu konfigurieren, dass diese Aktionen automatisch ausgelöst werden

    • Wenn Gebäude X zerstört wird, bauen Sie es sofort wieder auf.
    • Wenn jemand Ressource X für weniger als Y-Geld anbietet, kaufen Sie sofort bis zu Z-Einheiten.
    • Alle Ressourcen X automatisch verkaufen, wenn der Bestand Y-Einheiten überschreitet, jedoch nicht weniger als Z-Geld pro Einheit.

Überwache deine Community. Wenn Sie feststellen, dass sie etwas anderes automatisieren, stehlen Sie die Idee und fügen Sie die Option zum Automatisieren zum Hauptspiel hinzu.


5
Dies ist ein großartiger Vorschlag, der auch Ihr Spiel verbessert und das Risiko verringert, dass Ihre Spieler selbst botartiger werden. ;-) Wenn ein Bot ein großartiger Spieler Ihres Spiels ist, sollte das Spiel möglicherweise mehr menschliches Denken beinhalten. Ich stimme nicht zu, dass dies die einzige wirksame Verteidigung ist, aber ich stimme zu, dass dies insgesamt die beste ist. +1
Dronz

7
Ich stimme dem zu, aber leider ist die Prämisse, dass man das Spiel nicht langweilig machen kann, ein Trugschluss. Was ist, wenn 10.000 Ihrer Spieler Mechanic X lieben, 10 es jedoch mühsam finden und Bots schreiben, was den Spaß der 10.000 ruiniert? Dies passiert mit Zielbots in FPSs: Die analoge Lösung wäre, das Zielen weniger wichtig zu machen, aber viele Spieler lieben es, ihre Zielfähigkeiten zu perfektionieren. Es sind nur wenige, die das Bedürfnis haben, mit dem Ziel zu zielen.
Superbest

1
Ich liebe Ihren Vorschlag wirklich, ich möchte mehr Spiele woukd so etwas tun , statt Sie zu fragen , 24/7 zu sein um effizient zu sein
meneldal

@Superbest Eigentlich kann ich eine Lösung finden, bei der Sie versuchen, das Ziel wichtiger, aber immer noch schwer zu erreichen, wenn Sie zum Beispiel Waffen mit langsamer Feuerrate und präzisem Zielen entwickeln, die nützlicher sind, als Spieler, die sich mit einer zusammenschließen könnten botter, da er nicht genug Kugeln für jeden Spieler abfeuern kann, der ihn angreift
Matthew Pigram

2
Genau das ist der Punkt! Wenn es einen effektiven einfachen Ein-Knopf-Klick zum Zeitpunkt X für Ihr Spiel gibt, schreiben Sie ihn selbst und geben Sie ihn an alle weiter! - Lassen Sie einen Spieler im Voraus entscheiden, was gebaut werden soll, wenn die Zeit abgelaufen ist ... Bei Fun in Games geht es um Entscheidungen!
Falco

23

Machen Sie Ihr Spiel nicht so anfällig für Johnny-on-the-Spot-Bemühungen

Stellen Sie zunächst sicher, dass Spieler, die Ihr Spiel nur zwanzig Minuten oder eine Stunde pro Tag in einer Sitzung spielen, keinen großen Nachteil für Spieler haben, die es bei der Arbeit offen lassen und 16 Stunden pro Tag spielen.

Dies kann eine Änderung Ihrer Spielmechanik erfordern - zum Beispiel eine Zugzuteilung, die sich füllt, wenn Sie nicht spielen, und es den Spielern ermöglicht, viele schnelle Züge auszuführen, wenn sie spielen können, anstatt eines Mechanismus, der eine ständige Pflege erfordert.

Dies wird die Bot-Macher davon abhalten, mit dem Spiel Schritt zu halten, und sie müssen nicht unbedingt einen Automaten bauen, der Aktionen für sie ausführt.

Benötigen Sie Serverinformationen für jede Aktion und verlangsamen Sie die Serverantworten

Wenn ein Spieler das Spiel spielt, fordert er eine Seite an, auf der er die Benutzeroberfläche sieht, mit der er interagiert, um seinen Zug auszuführen. Sie können Elemente einfügen, z. B. unsichtbare Formularelemente, mit denen überprüft wird, ob die Seite tatsächlich zuerst angefordert wurde. Eine Zufallszahl, die Ihr Server zusammen mit der Benutzer-ID und der zuletzt angeforderten Seite speichert. Wenn eine Aktion eingeht, überprüft der Server, ob dieser Benutzer dieselbe Zufallszahl zurückgegeben hat, und führt eine Aktion auf der Seite aus, auf der er zuletzt gesehen wurde. Dies bedeutet nicht nur, dass der Bot für jede Aktion zwei API-Aufrufe ausführen muss, sondern auch, dass normale Benutzer nicht mehrere Seiten öffnen und sequentielle schnelle Aktionen ausführen können (falls dies ein Problem mit Ihrem Design ist).

Mit den beiden API-Aufrufen können Sie Bots später verlangsamen. Irgendwann werden Sie verdächtige Muster sehen und Sie werden in der Lage sein, sie zu erkennen. Wenn Ihr Server ein verdächtiges Muster erkennt, kann er die API-Antwort beim ersten Aufruf um eine Sekunde verzögern - was die Benutzer ärgert, die Bots jedoch wirklich verlangsamt. Wenn die zweite Anfrage "zu schnell" zurückkommt (was auch immer das für Ihr Spiel bedeutet), können Sie sie ablehnen oder die Seite mit einem Fehler im Spiel oder einem Grund für die Anforderung einer erneuten Übermittlung neu laden. "Sie können nicht so schnell bauen. Bitte nehmen Sie sich Zeit." zum Beispiel.

Hören Sie auf Ihre Benutzer und Sie werden feststellen, was für sie in Ordnung ist und was sie stört.

Machen Sie die Bewegungen und Aktionen bedenkenswert

WENN das Spiel ein einfacher Button-Clicker ist, können Sie nicht viel gegen Bots tun. Überlegen Sie, ob Sie Ihr Spiel so umgestalten möchten, dass das Spiel selbst einen Captcha-ähnlichen Test durchführt.

Da ich nichts über das Spiel weiß, kann ich nicht viel vorschlagen. Wenn Sie auswählen müssen, wo ein Gebäude platziert werden soll, entwerfen Sie die Benutzeroberfläche so, dass der Benutzer überall auswählen kann, auch wenn es offensichtliche Platzierungen gibt, die nicht funktionieren. Oder möglicherweise muss der Benutzer die Ausrichtung richtig anpassen, damit die Platzierung erfolgreich ist. Wenn es sich um die Auswahl einer Aktion handelt, fügen Sie eine längere Liste von Aktionen hinzu, von denen einige in einer bestimmten Situation keinen Sinn ergeben würden.

Fügen Sie zufällige sehr einfache Bot-Checks hinzu

Hinzufügen eines gelegentlichen Dialogfelds "Sind Sie sicher?" zum Beispiel. Ändern Sie die Frage und die Formulierung häufig und verwenden Sie sie als Stichprobe für Bots.

Ändern Sie die API

Ändern Sie die API häufig, und zwingen Sie sie, die Webseite tatsächlich nach den richtigen Variablen zu durchsuchen und festzustellen, wie sie an den Webserver zurückgegeben werden. Wenn Sie Ihre Schnittstelle mithilfe einer Vorlage entwickeln, ersetzen Sie die Vorlage durch Code, der für jeden Variablennamen einen gesalzenen Hash oder einen Zufallsvariablengenerator verwendet. Beginnen Sie dann mit Javascript, um die Antworten zu codieren, und ändern Sie diese Codierung häufig. Sie können wahrscheinlich Software schreiben, die all dies für Sie erledigt, und entweder immer alles zufällig auswählen oder einfach eine statische Vorlage erstellen, die Sie gelegentlich ändern.


Wenn sein Browsergame, API ändern und alles, was nicht wichtig ist. Es sei denn, Sie sind bereit, den gesamten Text im Client jedes Mal zu ändern (das wäre für Spieler schrecklich. Die Benutzeroberfläche ändert sich ständig.). Wenn sich die Texte nicht ändern, ist es sehr trivial, den Text zu finden. Auch mit nur jQuery. Als ich Travian gespielt habe und gerade dabei war anzugreifen, habe ich eine Menge von Registerkarten geöffnet, alle Informationen fertiggestellt und als die Zeit abgelaufen war, durch alles gescrollt, was auf Senden geklickt wurde. Nicht zu schnell, aber deine API-Verzögerungen hätten mich hart getroffen.
Katu

1
@Katu Je nach Spiel sind möglicherweise bereits viele Elemente der Benutzeroberfläche Bilder. Das Ändern der Bildnamen, das geringfügige Ändern der Bilddatei-Hashes usw. macht es schwieriger. Zumindest zwingen Sie sie, jedes Element herunterzuladen, um herauszufinden, was zu tun ist. Sie können Javascript verwenden, um herauszufinden, welches Element an einer bestimmten Stelle auf dem Bildschirm oben ist, und versuchen, dies zu aktivieren. Sie können dies jedoch auch erschweren, indem der JavaScript-Client Mausklickstellen zurückmeldet, anstatt Elementklicks.
Adam Davis

@Katu Sie haben letztendlich Recht, es kann behandelt werden, aber wenn Sie den erforderlichen Aufwand groß genug machen, werden Sie die Anzahl der Personen reduzieren, die bereit sind, sich dem Aufwand zu widmen, was möglicherweise ausreichend ist.
Adam Davis

2
Das Problem mit "Move Allotment" ist, dass Sie allen Ihren Spielern mitteilen, dass sie nur 30 Minuten am Tag spielen können oder wie lange es auch dauert, um das zu verbrauchen, was sie ärgert, Ihre Anzeigeneinnahmen begrenzt und eine massive Versuchung hervorruft um sie durch Mikrotransaktionen mehr kaufen zu lassen.
Random832

Ich bin mit der Platzierung und Ausrichtung des Gebäudes einverstanden! Das ist gleichzeitig ein Plus für legitime Benutzer und ein Minus für Bots.
miva2

13

Sie können sie nicht aufhalten. Aber Sie können ihr Leben unglücklich machen, da sie viel Zeit damit verbringen müssen, ihre Bots zu schreiben und sie zu aktualisieren. Sie müssen alles verwenden, um zu überprüfen, ob der Benutzer gültig ist.

  • Suchen Sie nach Anforderungsköpfen und lehnen Sie Anforderungen mit ungültigen Werten ab. Stellen Sie entweder eine benutzerdefinierte Kopfzeile ein oder überprüfen Sie, ob eine solche wie ein Benutzeragent vorhanden ist. Sicher ist es leicht zu überwinden, aber es ist noch einfacher zu überprüfen. Wenn der Botwriter unerfahren ist, kann es eine Weile dauern, bis er darüber nachdenkt! Ihre Aufgabe ist es, möglichst viele von ihnen zum Aufgeben zu zwingen, oder?
  • Sie haben wahrscheinlich irgendeine Art von Hash-Signatur oder etwas in Ihren Anfragen, die auf Client-Seite mit irgendeiner Funktion generiert wird. Na, dann ändere es weiter! Erstellen Sie es als separates Skript, das nicht zwischengespeichert werden kann, und ändern Sie es in zufälligen Abständen. Machen Sie einige von ihnen oder bearbeiten Sie sie sofort, indem Sie dem Hashing-Prozess zufälliges Salz hinzufügen. Dies ist zwar wieder leicht zu überwinden, zwingt sie jedoch dazu, Ihre Funktion im Auge zu behalten. Möglicherweise benötigen sie auch eine Art ständige Bereitstellungs-Pipeline, um die Benutzer auf dem Laufenden zu halten. Andernfalls senden ihre Bots falsch gehashte Anfragen. Sie können sogar Benutzer sperren, die dies zu oft tun. Gültige Benutzer werden sich sowieso in Ihrem Client bewegen, so dass sie ab und zu die Hashing-Funktion erneut abrufen. Denken Sie auch daran, die Server-Seite zu aktualisieren (Skript-basiertes Backend wird hier wirklich helfen).
  • Verfolgen Sie die Effizienz der Ressourcennutzung. Wenn sie sofort ausgegeben werden, nachdem etwas erschwinglich geworden ist oder wenn neue Raids immer innerhalb von 1-2 Sekunden vom letzten, 24/7, gesendet werden, dann haben Sie es mit einem Hardcore-Spieler oder einem Bot zu tun. Sie fordern von dieser Person Captcha an und erzwingen die Abmeldung. Wenn er weiterhin Anfragen stellt, nachdem er ausgeloggt wurde (schlecht geschriebene Bots!), Dann ist es ein Bot. Wenn er versucht, sich mehrmals ohne Erfolg anzumelden, ist er wahrscheinlich ein Bot. Wenn er einige Stunden braucht, um sich neu anzumelden, ist er möglicherweise ein Bot (der Bot bittet an dieser Stelle möglicherweise um menschliche Hilfe, und der Besitzer schläft möglicherweise).
  • IP. Dieser könnte Bot-Selling eliminieren. Wenn jemand einen Bot mit $$$ im Hinterkopf schreibt, möchte er möglicherweise keine Quelle freigeben. Sie verkaufen stattdessen Bot-Zeit. Wenn sie gierig sind, können sie eine einzelne Maschine mit einem oder wenigen IPs verwenden. Das bedeutet, dass eine Menge Benutzer anfangen, IP zu teilen. Dies ist riskant, da dies auch für Personen gilt, die sich ein Netzwerk teilen. Sie müssen überprüfen, ob eine der vorherigen Überprüfungen bei bestimmten IP-Adressen erfolgreich war, und manuell entscheiden, ob es sich um eine legitime Benutzergruppe oder eine Armee von Bots handelt.

5
Obwohl diese Ideen klug sind, sind sie nicht nur leicht zu besiegen, sondern ich wäre auch versucht, einen Bot zu schreiben, nur weil es so lustig erscheint, sie zu besiegen, auch wenn es mir nicht wichtig ist, im Spiel gut abzuschneiden.
Superbest

1
Die meisten Punkte sind nutzlos. Sie denken rückwärts. Egal, was Sie mit all den Hashes, Headern usw. machen, der Link "Upgrade für meine Taverne kaufen" muss funktionieren, oder? Jetzt erstelle ich einen Bot, der diesen Link findet und alle 2 Stunden darauf klickt. Es ist mir egal, was Sie dahinter zaubern, aber mein Bot klickt genau so, wie es der Benutzer tun würde. Ressourcennutzungssache ist gut, kann aber viele falsche Positive auslösen, die menschliche Arbeit erfordern. IP .. Zum Beispiel ist travian bots (non-free) ein benutzerdefinierter Webbrowser, der alles von Ihrer IP sendet.
Katu

@Superbest ja, es ist leicht, diese Sicherheit einmal zu übertreffen. Aber wenn es sich ein wenig ändert, müssen Sie diese Änderungen nachverfolgen und Ihren Bot aktualisieren. Das bedeutet, dass Sie mehr Zeit damit verbringen, einen Bot zu schreiben, um weniger Zeit für das Spielen zu haben :). Zwecklos.
Polan

@Katu du hast recht, meine Methoden werden nicht aufhören, Bot, der ein Plugin für einen Browser ist und nur auf Client klickt. Aber irgendetwas außerhalb könnte Probleme haben. Nur einen Link zu finden und erneut anzugreifen, wird nicht funktionieren, da Hash möglicherweise einen Zeitstempel und die Kenntnis eines halbgeheimen Schlüssels erfordert. Die Hashing-Funktion ändert sich von Zeit zu Zeit. Wenn Sie also keinen Javascript-Interpreter haben, müssen Sie Ihren Bot die ganze Zeit neu schreiben, um diese Änderungen zu berücksichtigen. Diese Methoden werden die Leute nicht davon abhalten, einen Bot zu schreiben. Es ist lediglich eine ständige Wartung erforderlich, sodass Sie nicht so viel Zeit sparen, wenn Sie einen Bot verwenden :).
Polan

2
@Polan Kein Problem, wenn das Schreiben des Bots mehr Spaß macht als das Spielen an erster Stelle.
Superbest

8

Im Allgemeinen ist es schwierig, zwischen Bots und Menschen vollautomatisch zu unterscheiden. Eine Art von Entscheidungsprozess, der von Menschen unterstützt wird, funktioniert am besten.

Was ich tun würde: Definieren Sie einige Heuristiken, die darauf hindeuten, dass der Benutzer wahrscheinlich ein Bot ist. Führen Sie eine Vielzahl von Aktionen durch, erledigen Sie Dinge rund um die Uhr.

Sie können die Aktivität des Spielers manuell scannen und prüfen, ob sie in Ordnung zu sein scheint. Oder Sie machen ein Captcha, wenn der Benutzer das nächste Mal online ist. Oder (noch stärker) senden Sie ihm einfach eine Chat-Nachricht, in der Sie erklären, dass Sie vermuten, dass er ein Bot ist, und dass er mit etwas Menschlichem antworten soll, um zu beweisen, dass er kein Bot ist (wie war Ihr Tag? Was ist Ihr Lieblingsfilm? ... - Sie können ein paar davon haben). Wenn er überhaupt nicht antwortet, ist er wahrscheinlich ein Bot. Wenn er antwortet, überprüfen Sie die Antworten manuell auf menschliche Ähnlichkeit und verbieten Roboter. Wenn Ihre Heuristiken angemessen sind, wird nur eine kleine Minderheit von Benutzern befragt, und die Anzahl der zu scannenden Antworten ist gering. Und wenn Sie die Fragen geheim halten und sich ändern, können die Roboter nur dann vorbereitet werden, wenn jemand SkyNet erfindet.


8
Als Skynet sich zum ersten Mal seiner selbst bewusst wurde, war jeder davon ausgegangen, dass es versuchen würde, die Streitkräfte der Welt zu übernehmen. Sie wussten nicht, dass sein einziges Ziel darin bestand, die Wirtschaft seines Lieblings-MMO zu dominieren. So konnten die großen KI-Kriege verhindert werden, indem ihre aggressiven Ambitionen an einen Ort gelenkt wurden, an dem begrenzter Schaden angerichtet werden konnte.
Dan Bryant

1
Das Problem bei Nachrichten besteht darin, dass sich ein Botter leicht jeden Tag zum Spielen anmelden und den Bot auf demselben Konto ausführen kann, um die geschäftige Arbeit zu erledigen. Der Bot würde die Nachricht ignorieren, der Mensch würde am nächsten Morgen antworten, und es ist schwer, einen Spieler dafür zu bestrafen, dass er einige Stunden zu spät auf eine mitten in der Nacht gesendete Nachricht geantwortet hat.
Superbest

@Superbest Wenn der Bot weiter versucht zu spielen, während der Mensch schläft, hat man einen ziemlich guten Hinweis darauf, dass es sich um einen Bot handelt. Das Problem beim Stellen von Fragen ist, was passiert, wenn der Spieler kein Englisch spricht?
Loren Pechtel

@LorenPechtel Woher willst du wissen, wann sie schlafen? Es gibt viele Leute mit sehr ungewöhnlichen Schlafplänen. Nur weil sie nicht geantwortet haben, heißt das noch lange nicht, dass es sich um einen Bot handelt. Vielleicht hatten sie damals keine Lust zu antworten und beschlossen, es später zu tun. Was die Sprache anbelangt, spricht der Spieler vermutlich die Sprache, in der sich das Spiel befindet. Wie würden sie sonst den Regeln oder den Nutzungsbedingungen zustimmen? Nicht, dass es schwierig ist, einen Bot von einem Ausländer in einem Gespräch zu unterscheiden.
Superbest

@Superbest Mein Eindruck war, dass das Spiel nicht fortgesetzt werden würde, solange die Frage nicht beantwortet wurde. Wenn sie weiterhin sinnlose Befehle senden, ist es ziemlich offensichtlich, dass es ein Bot ist, der das tut.
Loren Pechtel

8

Umarme den Botter. Sie haben eine erholsame API entwickelt, mit der ein Programmierer mit der Automatisierung Ihres Spiels experimentieren kann. Gestalten Sie Ihr Gameplay so, dass der Bot keinen Vorteil gegenüber einem menschlichen Spieler erlangt, weil er automatisiert ist. Beseitigen Sie die Vorteile der Ausführungsgeschwindigkeit usw., die eine Maschine bietet. Gestalten Sie Ihr Spiel so, dass der Bot nach Möglichkeit die gleichen Einnahmen erzielt wie ein menschlicher Spieler - oder zumindest eine reichhaltigere Umgebung, um mehr menschliche Spieler anzulocken.

Die Frage ist, warum Leute Bots für Ihr Spiel erstellen und werden sie Geld für das Privileg bezahlen?


4

Ich bin nicht notwendigerweise anderer Meinung als die soft-science Antworten, aber es gibt technische Dinge, die Sie tun können , um Bottcher zu entdecken, und einige Dinge, die ihnen das Leben nur schwerer machen.

  • Benoten Sie Konten danach, wie oft Sie vermuten, dass sie einen Bot verwenden. Dies wird in verschiedene andere Techniken einfließen und legitime Benutzer vor Ihrem Zorn schützen.

  • Drehen des Sitzungscookies. Dies stellt sicher, dass der Bot seine Cookies beibehält, erschwert es dem Bot aber auch, Cookies zwischen Browser und Bot zu teilen (was beim Entwickeln und Testen sehr praktisch ist).

  • Rate-Limit bestimmte Aktionen. Finden Sie heraus , wie schnell Sie tatsächlich etwas tun können, und überwachen Sie, wie schnell diese Bots dies tun. Es könnte sich auch lohnen, ein Protokoll zu führen und Standardabweichungen zu ermitteln. Selbst wenn jemand nur alle 10 Sekunden etwas tut, ist er wahrscheinlich ein Bot , wenn er es genau alle 10 Sekunden tut . Ändern Sie ihre Bewertung und melden Sie sie ab.

  • Machen Sie die Anmeldung für Konten, von denen Sie vermuten, dass sie ein Bot sind, schwieriger. CAPTCHAs und Fragen und andere unvermeidliche Dinge erschweren es einem potentiellen Botter, Dinge automatisch zu skripten.

  • Überwachen Sie die Maus- / Seitenbewegung. Heutzutage ist dies mit Javascript recht einfach, aber Bots haben organisch keine Mausbewegung. Wenn zwischen "Klicks" keine angezeigt werden, sind sie möglicherweise mobil oder ein Bot. Untersuchen. Es sind jedoch viele Daten zu protokollieren. Sie können diese also für Konten reservieren, die bereits frühere Schritte ausgelöst haben.

  • Erstellen Sie Tools zum Verknüpfen von Konten nach Verhalten, IP, Aktionssequenzen und Aktionsfolge. Wenn Sie Personen sperren möchten, stellen Sie sicher, dass Sie über die erforderlichen Tools verfügen, um deren Fehlverhalten manuell zu überprüfen.

  • Drehen Sie URL-Schema, CSRF-Variablen usw. heraus und tun Sie es oft. Es ist ein großer Schritt und erfordert wahrscheinlich mehr Vorarbeit, als es jemals wert sein wird, aber zumindest alle Accounts, die plötzlich einfach nicht mehr funktionieren (oder die alten URLs weiter hämmern und die alten Variablennamen senden - log es!) müssen ihren Bot-Index erhöhen.


3

Haben Sie in Betracht gezogen, Bots zu einem festen Bestandteil des Spiels zu machen? Es ist schwer für Bots, das Spiel für alle anderen zu ruinieren, wenn jeder ermutigt wird, sie zu erstellen. Füge die Unterstützung für Skripte hinzu und plötzlich ändert sich die Dynamik des Spiels von manuellen Ressourcenverwaltungsstrategien zu Bot-Designstrategien.


3

Erstellen Sie einen separaten Server nur für Bot. Erstellen Sie eine Rangliste und feiern Sie die Gewinner. Schauen Sie sich die Daten an, die dadurch generiert werden. Verbannen Sie Benutzer von normalen Servern, deren Verhaltensprofil dem eines Bots ähnelt.


2

Was auch immer Sie tun, denken Sie daran, es NICHT ärgerlicher für den echten Spieler zu machen! Viele der Antworten, die ich gesehen habe (langsamere Seitenergebnisse, nicht zulassen, dass mehrere Seiten geöffnet werden, um eine schnellere Eingabe zu ermöglichen usw.), würden auch legitime Spieler daran hindern, Dinge schnell zu tun, was sie nur unnötig frustriert.

imho der einfachste Ansatz kann sein, Social Engineering auf das Problem anzuwenden: 1) Fügen Sie eine explizite NO-BOT-Klausel zu Ihrem TOS hinzu und fügen Sie hinzu, dass das Erkennen von Bot-Aktivitäten den Spieler von der Highscore-Liste entfernt (oder das Label "Cheater" trägt "angefügt, damit die Leute nicht so frustriert mit ihnen sind; wenn Sie diesen Weg gehen, erlauben Sie den Leuten, Betrügeraufzeichnungen zu verstecken).

2) Überprüfen Sie, ob Bot-ähnliches Verhalten vorliegt (z. B. regelmäßige Pings zum Server oder nahezu perfektes Timing für viele Stunden hintereinander), und versetzen Sie in diesem Fall das Konto in den "Bot-Modus". Zeigen Sie gelegentliche Captchas und so weiter an . Wenn diese ignoriert werden, der Spieler das Spiel jedoch weiterhin aktiv spielt, markieren Sie den Spieler als "Bot" und schließen Sie ihn aus der Rangliste aus. Wenn sie angesprochen werden, markieren Sie ihn als "Power Player" und entfernen Sie ihn von der Bot-Liste.

Auf diese Weise ist die überwiegende Mehrheit der Spieler nie betroffen, die Hardcore-Spieler sind für kurze Zeit betroffen, und die Bots "ruinieren das Spiel" für niemanden anderen.


Was ist, wenn sich ein Powerplayer für einen Bot entscheidet? Ich denke nicht, dass es sinnvoll ist, den Spieler als etwas zu markieren, das sehr ausnutzbar ist. Spielen Sie einfach ein paar Tage lang viel, und sobald Sie die Flagge erhalten haben, setzen Sie den Bot in Brand und lassen Sie sich nicht mehr erwischen
Dan Pantry
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.