Es gibt einen neuen Open Source Poker Bot namens PokerPirate . Ich interessiere mich für kreative Möglichkeiten, wie eine Webanwendung einen Poker-Bot erkennen / vereiteln / besiegen kann. (Dies ist eine rein akademische Diskussion im gleichen Sinne wie PokerPirate.)
107
Antworten:
Einen Bot aus der serverseitigen Perspektive besiegen
Viele Online-Pokerseiten verwenden Popup- Captcha- Eingaben, die durch verdächtige Aktivitäten ausgelöst werden.
Einige Pokerseiten überwachen die Spielzeiten und -muster (dh im schlimmsten Fall spielt ein Spieler 24x7 und 16 Tische ununterbrochen, es besteht eine winzige Chance, dass dies ein echter Mensch ist. (Einige Spieler haben jedoch die Fähigkeit, sehr große Hände zu spielen Bände, die für das unerfahrene Auge ein Bot zu sein scheinen)
Wirf es Pannen. Wenn Sie den Verdacht haben, dass ein Spieler ein Bot ist, ändern Sie alle seine Spielkartenpositionen um einige Pixel auf dem Bildschirm, ändern Sie die Farben / Designs / Muster für 1/100 Hände und prüfen Sie, ob sie geworfen werden. Wenn es nicht in der Lage ist, Bildschirmaufnahmen zu machen, tritt bei all seinen Entscheidungen eine Zeitüberschreitung auf, und das ist ein ziemlich schlüssiger Bot-Beweis.
Laut Timing kann dies verdächtig sein, wenn ein Computer-Player in Millisekunden auf Optionen reagiert, ohne über große Entscheidungen nachzudenken
Selbstüberwachung. Auf der Poker-Website pokertableratings.com werden viele große Websites abgebaut . Es wurde mit einem gemischten Empfang aufgenommen, einige lieben die Transparenz, andere hassen es . Der Vorteil ist jedoch, dass es Fälle gab, in denen verdächtige Spielerstatistiken (VPIP-Prozentsätze, PFR-Prozentsätze sind einige von vielen quantifizierbaren Statistiken, die aufgezeichnet werden können) zu Schlussfolgerungen des Betrugs geführt haben
Künstlich intelligente Klassifizierungsnetzwerke könnten quantifizierbare Statistiken überwachen, um betrügerische Betrüger oder Roboterspieler zu klassifizieren.
Damals, als Online-Poker eine ziemlich neue Einheit war, gab es Gerüchte und Gespräche mit begrenzten Beweisen, dass einige Screenshots von Poker-Client-Software von Desktops verdächtiger Spieler zeigten, ob sie Programme ausführten, die sie unterstützten. Wenn dies jedoch der Fall wäre, würde dies umgangen, wenn zwei Computer ausgeführt würden, um die beiden Aufgaben unabhängig voneinander auszuführen.
Der Austausch von Informationen zwischen Wiederholungstätern zwischen mehreren Standorten wäre für die Branche von Vorteil, wenn sie nur ehrenwert wären und von kompetenten Verantwortlichen betrieben würden
Einige Bots wären wahrscheinlich recht einfach. Wenn Sie ihren Spielstil entdecken und sehen könnten, wie sie sich in identischen Situationen verhalten (beachten Sie, dass dies nur mit nicht anspruchsvollen Bots möglich ist, die eine sehr grundlegende Strategie spielen), könnten Sie sie relativ schnell entdecken.
Eine inkonsistente Verwendung von Programmfunktionen würde dazu führen, dass ein Spieler echt ist. Nehmen wir zum Beispiel, viele Pokerseiten im Spiel haben einen "Fold wenn ich an der Reihe bin" Button. Wenn Sie eine schlechte Hand bekommen und darauf warten, dass ein anderer Spieler entscheidet, was zu tun ist, überprüfen viele Spieler diese Schaltfläche. Ein Bot kann diese Schaltflächen verwenden. Der Unterschied besteht darin, dass sich ein Bot an den äußersten Enden der Nutzungshäufigkeit befindet und diese wahrscheinlich entweder ständig oder gar nicht verwendet. Während ein Spieler normalerweise auf "Autofold" drückt, klickt er manchmal trotzdem auf "Fold", selbst unter den günstigsten Bedingungen. Zum Beispiel drückt ein echter Spieler normalerweise auf Auto Fold, diesmal jedoch nicht. Es ist für sie gefaltet, ohne dass ein anderer Spieler handelt, jetzt wurde ihnen die günstigste Bedingung präsentiert. Wenn sie nun auf Falz drücken, wären sie von Anfang an stark geneigt gewesen, auf Autofalz zu drücken. Dies ist inkonsistentes / nicht optimiertes / zufälliges Verhalten, das mit dem Menschsein übereinstimmt. Das Timing zeigt an, wann auf diese Funktionen geklickt wird. Dies sind weitere Indikatoren. Es ist wichtig zu erkennen, dass dies alles Indikatoren und kein schlüssiger Beweis sind. Alle diese Verhaltensindikatoren können einfach simuliert werden.
Einen Bot aus der Sicht eines Spielers besiegen
Versuchen Sie, mit Software wie PokerTracker so viele Daten wie möglich zu protokollieren und zu sammeln
Versuchen Sie, Muster in ihrem Spielstil zu identifizieren
Versuchen Sie, Beziehungen zwischen der Einsatzgröße im Verhältnis zu Pot / # -Spielern und der Handstärke zu finden
Versuchen Sie , seine Berechnung Hand reicht . Ein Bot mit niedrigen Einsätzen wird wahrscheinlich nicht häufig genug bluffen, um ein bedeutendes strategisches Problem zu sein, daher sollte es nicht zu schwierig sein, hochpräzise Handbereiche dafür zu konstruieren.
Versuchen Sie, Lecks in seinem Spiel durch Datenanalyse und Versuch und Irrtum zu finden. Sobald Lecks / Muster gefunden wurden, versuchen Sie, diese wiederholt auszunutzen und andere Situationen zu vermeiden.
Wo ein Mensch zur Anpassung fähig ist , sind Bots wahrscheinlich weniger dazu fähig , und wo Menschen durch die Ketten der Neigung , ergebnisorientiertes Denken und Frustrationen gewichtet werden , sind Bots dies nicht. Sie können dies zu Ihrem Vorteil nutzen.
Im Wesentlichen können Sie also nichts dagegen tun, wenn der Roboter klug genug ist, um echte Timing-Verzögerungen bei Entscheidungen zu simulieren und vernünftige und realistische Spielmuster zu erstellen. Wenn Sie einige zufällige Bedingungen und einen einfachen Back-Chat verwenden (das Lexikon der Pokerspieler ist normalerweise ziemlich begrenzt ), haben Sie selbst einen KI-Spieler, der ziemlich schwer zu erkennen sein wird.
Was Bots tun könnten, um eine Erkennung zu vermeiden
Der Schlüssel, um eine Erkennung zu vermeiden, besteht darin, das Problem aus möglichst vielen Blickwinkeln zu betrachten. Sie versuchen, intelligentes menschliches Verhalten in einer sehr kleinen und einschränkenden Welt zu simulieren. Die meisten Verhaltenssimulationen, die Sie ausführen können, sind ziemlich offensichtlich. Je inkonsistenter und unvorhersehbarer Ihr Bot ist, desto weniger wahrscheinlich ist es, dass er entdeckt wird.
Erstellen Sie realistische Spielpläne (dh 3–5 Mal pro Woche, 4 Stunden pro Sitzung, wobei die ungerade Woche hier und da während des Jahres ausfällt).
Führen Sie Programme aus, um Entscheidungen auf einem separaten Computer zu treffen, und steuern Sie einen Zombie-Computer, falls Websites Bildschirmaufnahmen machen.
Zufällige Aktionszeiten (nicht sofort handeln, 0,5 bis 2 Sekunden pro Aktion warten)
Zeit für große Entscheidungen. Wenn eine Entscheidung grenzwertig ist, berechnen Sie die Entscheidung und warten Sie eine Weile, um Gedanken zu simulieren.
Zufällige Verwendung von Client-Softwarefunktionen. Simulieren Sie Toilettenpausen, indem Sie auf allen Tischen auf die Schaltfläche "Austeilen" klicken, und machen Sie ab und zu eine Pause von 5 Minuten.
Simulierter Chat, Poker-Chat ist oft ein sehr einfacher Einzeiler, normalerweise keine Diskussion oder Debatte. Sagen Sie Dinge wie "unglücklich" oder "stfu" zu geeigneten erkennbaren Zeitpunkten. Oder lassen Sie den Codierer sogar seinen Bot überwachen und während der Ausführung chatten.
Stellen Sie sicher, dass die Mausbewegungen realistisch sind. Wenn Tabellen gekachelt sind, treffen Sie keine Entscheidung für die Tabelle oben links, und treffen Sie sie sofort für die Tabelle unten rechts. Die meisten Websitesoftware bieten jetzt Tastaturkürzel an. Diese können vorzugsweise als Mausbewegung verwendet werden.
Machen Sie Dinge, die KI-Klassifikatoren ganz einfach nicht erwarten. Rufen Sie sie beispielsweise einmal im Jahr mit einer einfachen, nicht komplexen Abfrage an ("Hilfe, ich kann mich heute nicht anmelden!" Oder "Das Internet ist ausgefallen!"). Es ist unwahrscheinlich, dass dies einen großen Unterschied macht, aber wenn die Person, die für die Die Pokerfirma ist klug genug, sie könnte es als einen verlässlichen Indikator erkannt haben.
Sporadisch verlorene Sitzungen. Tilt kann simuliert werden und der Bot kann schlecht spielen und ab und zu etwas Geld verlieren. Jeder kippt irgendwann.
Die Sorge ist auch, dass es Poker-Websites nicht besonders wichtig ist, ob Bots in ihren Netzwerken laufen, jeder Spieler eine große Menge an Rake wert ist und theoretisch aus rein zynischer geschäftlicher Sicht der einzige Nachteil eine schlechte Presse wäre, wenn sie entdeckt würde .
Selbst wenn offensichtliche Exploits entdeckt wurden (Suche auf Google nach Cereus-Netzwerkskandalen oder Absolute Poker Scandal , es ist ziemlich schockierend), scheint das Geschäft zu überleben und gesund zu bleiben, nur gut ausgebildete und gewinnende Spieler zu verlieren (von denen es nicht viele gibt). Dies erhöht den Anteil weniger erfahrener Spieler am Netzwerk, was wiederum die guten Spieler zurückzieht. Es ist ein guter, altmodischer Fang 22. Ein ausgezeichnetes Argument für eine ordnungsgemäße Marktregulierung.
Es ist wichtig zu beachten, dass für jedes Spiel ein Nash- Gleichgewicht besteht . Online-Poker hat eine Zeitleiste, wie sie jetzt läuft. Es muss sich in etwas Sozialeres (Webcam / Voip) verwandeln, damit jeder in Zukunft darauf vertrauen kann (wenn die Leute ihm vertrauen), da Bots irgendwann genauso mathematisch übernehmen werden überlegen und psychisch immun. Die Poker-KI-Community ist sehr aktiv und wird von akademischen und / oder Kapitalvorteilen angetrieben.
Einfachere Versionen von Poker wie Limit Poker wurden in kleinen Suchbereichen nahezu gelöst . Es ist nur eine Frage der Zeit, bis komplexere Versionen des Spiels (No Limit-Variationen / Pot Limit Omaha usw.) für künstliche Spieler schlagbar werden.
Fazit
Anspruchsvolle Bots können erst erkannt werden, wenn die Branche zu einer sozialeren Online-Gaming-Umgebung übergeht. Dies wird das Problem nicht lösen, aber es wird Bots sicherlich schwerer machen, auf den unteren Ebenen zu gewinnen. Wir haben bereits eine leichte Verschiebung mit der Veröffentlichung von PKR , 3D und einer interaktiveren Version der anderen Websites mit weniger Händen pro Stunde gesehen, bei denen Multitabling für einen Spieler ziemlich schwierig zu erreichen ist.
Das Problem leidet auch unter der Natur der Branche, ein weiterer Grund, sich an die größeren, seriöseren Websites zu halten, auf denen die Reputation immer mehr in ihr Geschäftsmodell integriert wurde. Mangelnde Transparenz und vorgetäuschte Transaranz helfen der Sache nicht weiter.
Die eigentliche Herausforderung für Bot-Entwickler besteht derzeit darin, einen erfolgreichen Algorithmus zu schreiben. Dies ist nicht so trivial, wie es scheint. Jeder, der Poker spielt, hält sich für einen guten, gewinnenden oder ausgeglichenen Spieler, was einfach nicht stimmt. Deshalb spielen die Leute weiter, auch wenn sie Geld verlieren, weil sie der Illusion ausgesetzt sind, dass sie einfach Pech haben oder ihr Spielstil missverstanden wird. Diese Arroganz und Schwäche in der menschlichen Psychologie hat es viel Geld gekostet, Spieler zu verlieren, und ist der grundlegende Grund, warum Poker immer noch profitabel sein kann.
Poker ist ein äußerst kompliziertes Spiel, das Jahre braucht, um gut zu werden (das alte Sprichwort bleibt wahr: "Zehn Minuten lernen, ein Leben lang meistern"). Das Glückselement ist langfristig äußerst begrenzt.
Wie in jedem anderen Beruf muss man Hunderte und Hunderte von Stunden studieren und viele Tausend spielen, um gut zu werden. Sie werden Dinge verstehen, die weniger erfahrene Spieler nicht verstehen, Dinge entdecken, die weniger erfahrene nicht erkennen. Das Lernen dauert sehr, sehr lange, vielleicht länger als wir jemals leben können. Es ist ein kompliziertes Spiel.
Wie oft haben Sie im Fernsehen ein Cash Game mit hohen Einsätzen gesehen und jemanden schreien hören: "Das ist ein einfacher Anruf!" Auf diese Weise zu beweisen, dass Amateure die Raffinesse im Spiel wirklich nicht verstehen oder erkennen und das Spiel auf dieser Ebene wirklich glauben, ist letztendlich immer noch einfach. Ist es nicht. Diese High Stakes-Spieler (oft) sind im Fernsehen zu sehen, weil sie wirklich wirklich wirklich wirklich sindgut. Es wird wahrscheinlich auch ein kompliziertes Metaspiel gespielt, dessen Existenz unser Amauer nicht erkennen kann. Der Amateur würde nicht über einem Schachmeister stehen und sie anschreien, um ihren Ritter zu bewegen, aber aufgrund der Dynamik des Pokers als unvollständige Information lässt ihre Psychologie sie wirklich glauben, was sie sagen. Wie im Schach können Entscheidungen kompliziert, sensibel und für das Gesamtspiel äußerst wichtig sein. Mit zunehmender Komplexität des Spiels sind triviale Entscheidungen nicht mehr so trivial, weil Ihr Gegner sie erwartet.
Sobald Sie Ihren Bot oder Ihr Spiel nach oben bewegen, werden Sie unweigerlich auf eine größere Anzahl erfahrener Spieler stoßen. Dann muss die Komplexität Ihrer Strategie unter Berücksichtigung von Tabellenbildern , Bereichsausgleich , ausgefeiltem und intelligentem Bluffen (dh nicht nur Bluffen bei Schwäche, Bluffen bei Entfernungen und Bluffen bei Bildern usw.) auf die nächste Ebene steigen. mit detaillierterer Handbereichsanalyse. Es ist wirklich ein anderes Spiel, wenn Sie aufsteigen.
Sobald ein Gewinner-Bot geschrieben wurde, verfügt der Codierer ohne Zweifel über genügend Fähigkeiten, Kenntnisse und gesunden Menschenverstand, um den Bot nicht nachweisbar anzuwenden. Das ist für sie trivial.
Sie können also wirklich nichts tun. Wenn Sie online spielen möchten, verstehen Sie die Risiken. Riskieren Sie niemals mehr Geld, als Sie sich leisten können, und versuchen Sie, genaue Ausgabenaufzeichnungen zu führen, damit Sie keine fehlgeleiteten, unrealistischen und letztendlich schädlichen Einschätzungen Ihrer eigenen Fähigkeiten haben. Haben Sie Stop-Losses und verlassen Sie den Tisch, wenn Sie keine Kante haben oder wenn Sie sich nicht sicher sind, ob Sie eine Kante haben! Wenn jeder das tun würde, dass niemand gewinnen würde, ist das natürlich die räuberische und ausbeuterische Natur des Spiels, daher kommt die Konkurrenz und das macht Spaß.
quelle
Es sind drei separate Bereiche zu berücksichtigen. Der Bot muss den Status der Tabelle herausfinden, eine Entscheidung treffen und die Entscheidung an den Host zurücksenden.
Das Herausfinden des Status der Tabelle ist viel einfacher, wenn sie in erkennbarer Form über das Kabel gesendet oder dem Benutzer als Standardtext angezeigt wird. Machen Sie zuerst die Bilderkennung zur einzigen Option und machen Sie es dann so schwer wie möglich. Zeigen Sie die Karten in 3D an und ändern Sie langsam die Ausrichtung und Position der Karten. Animieren Sie kleine Flackern oder Feuerwerke vor den Karten, sodass ein bestimmter Screenshot möglicherweise unleserlich ist, aber es dauert eine Weile, bis Sie dies feststellen.
Mit der Entscheidung ist nichts zu tun. Der Versuch zu entscheiden, ob eine Entscheidung von einem Menschen getroffen wurde oder nicht, ist wie ein Test ohne Informationen.
Das Zurücksenden der Entscheidung kann durch erneutes Verwenden von 3D erschwert werden. Machen Sie es schwierig, Pakete direkt zu senden oder eine Entscheidung auf andere Weise zu übermitteln, als auf eine Schaltfläche mit der Maus zu klicken. Bewegen Sie die Tasten bei jeder Aktion leicht oder lassen Sie sie langsam im Spielbereich schweben, während Sie auf eine Entscheidung warten. Deaktivieren Sie alle Funktionen für Eingabehilfen, mit denen Schaltflächen gefunden oder bearbeitet werden können.
quelle
PokerPirate funktioniert wie fast jeder Poker-Bot, der jemals geschrieben wurde, durch Scraping und Simulieren von Mausklicks in einer Windows-Pokeranwendung. Daher ist der Dreh- und Angelpunkt des Systems seine Fähigkeit, Objekte im Spiel zu erkennen und Aktionen im Fenster auszuführen. So klug es auch beim Poker sein mag, es hat wahrscheinlich immer noch Probleme mit diesen grundlegenden Operationen.
Offensichtliche Möglichkeiten, diesen Bot zu vereiteln, wären daher:
quelle
Im Idealfall besteht die einzig gültige Lösung darin, eine Honeypot-Logik zu erstellen, die einen engagierten Bot anlockt, indem die Versuchung einer günstigeren Logikbedingung bereitgestellt wird, die die idealsten Verhaltensreaktionen des Bots begünstigt. Sobald der Bot mit dem Honeypot beschäftigt ist, müssen Sie kontinuierlich die Bot-Bedingungen füttern, die er bevorzugt, vorausgesetzt, der Bot hat kein festgelegtes Timeout. Dann kann der Bot gemessen, protokolliert und untersucht werden. Zusätzlich zum Bot würden Sie auch die Netzwerk- und Sitzungsdaten für das Studium isolieren lassen, vorausgesetzt, der Bot stellt keine Verbindung über TOR her.
In dieser Situation sind deterministische Überlegungen, die zur Unterscheidung eines Bots von einem Menschen geeignet sind, weniger streng, jedoch werden deterministische Überlegungen bei der Identifizierung des Verhaltens des Bots strenger. Leider kann der Besitzer des Bots Änderungen am Bot vornehmen, um eine solche Identifizierung zu verhindern, wenn dieser Besitzer den Zustand des Honigtopfs oder dessen logische Überlegung kennt.
quelle
Das Besiegen von Poker-Bots kann zwei Formen annehmen: Sie können versuchen, sie zu identifizieren und aus dem System zu verbannen, oder Sie können sie einfach beim Poker schlagen. Sie beim Poker zu schlagen, ist die interessantere akademische Frage. :-)
Hier finden Sie einige Artikel zum Schlagen von Poker-Bots: http://www.cs.cmu.edu/~sganzfri/
quelle
Schau dir diesen Beitrag an
Dieser Beitrag enthält auch einige gute Tipps, wie Sie sie vereiteln können.
quelle
Ein weiterer Gedanke zum Durcheinander mit dem Bildschirm, um das Scannen zu erschweren:
Machen Sie die Karte aus einer ganzen Reihe verschiedener Farben - in Bezug auf das menschliche Auge nah, aber nicht gleich. Dies würde es schwieriger machen, das zu lesende Zeug auszuwählen. Legen Sie auf der anderen Seite eine falsche Schrift in Farben auf die Karte, die das menschliche Auge nicht vom Hintergrund trennt.
quelle
Ist das Problem bei Bots die Tatsache, dass sie besser spielen als anständige menschliche Spieler, oder dass sie rund um die Uhr auf schlechte Spieler warten und dann versuchen können, sie zu melken?
Wäre es auch "legitim" oder "betrügerisch", wenn jemand einen Computer neben sich hat, während er Poker spielt und diesen anderen Computer um Rat fragt?
Ich bin mir nicht sicher, wie man behaupten kann, dass der Lösungsraum für Limit Poker "gelöst" ist, wenn die optimale Strategie für einen Spieler von dem beeinflusst wird, was über die Gegner bekannt ist. Wie kann ein Versuch, Spieler zu analysieren, behaupten, so perfekt zu sein, dass er nicht verbessert werden könnte?
quelle
Wenn Sie Zugriff auf viele Übereinstimmungen haben, können Sie einen Data Mining-Ansatz wählen. Die Spielstärke einer KI sollte ziemlich konstant sein, während es für Menschen wahrscheinlich einfache Muster gibt - schwächer in den ersten Aufwärmrunden, und die Stärke nimmt nach langem Spielen ab. Auch die menschlichen Entscheidungszeiten steigen wahrscheinlich, wenn mehr Geld auf dem Spiel steht.
Wenn Sie Zugriff auf Mausbewegungen haben (oder zumindest auf Klickpositionen, was auch für Web-Apps gilt), sollte es relativ einfach sein, Bots zu erkennen, mit Ausnahme der anspruchsvollsten. Menschen bewegen die Maus nicht in einer exakten geraden Linie, sie haben Beschleunigungs- und Verlangsamungsperioden, statistisch beschreibbare Klickstellenverteilungen usw.
quelle
Schauen Sie sich das Ajax Control Toolkit NoBot an :
quelle
Eine 100% ige Lösung ist unmöglich. Was ich beabsichtige, ist eine Lösung, die Geld spart, indem die KI gegen sich selbst eingesetzt wird. Lassen Sie eine Instanz von PokerPirates KI auf der Serverseite laufen und in jedem Spiel als unsichtbarer Spieler spielen. Wenn ein Spieler zu viele identische Aktionen ausführt, führt er wahrscheinlich eine Instanz von PokerPirate aus. Dies ist eine Art Honeypot oder Falle, in die der Angreifer fallen kann. Der Angreifer kann sich gegen diesen Honigtopf verteidigen, indem er seinen Bot weniger erfolgreich macht. Auf diese Weise entsteht ein "Katz und Maus", bei dem der Angreifer immer etwas Geld stehlen und der Verteidiger immer etwas Geld sparen kann .
quelle
"We've been working on categorizing and understanding styles of play, [...] it gets more difficult in games against top players because they mix up their play deliberately to confuse you." Being unpredictable is a good strategy, he adds. "If our computer is going to beat the world champion, it's got to do something similar."
Es gibt viel einfachere Wege. Ja. Viele der Vorschläge sind richtig und notwendig. Etwa 90% der Betrugsfälle werden jedoch auf zu einfache Weise aufgedeckt.
Wenn jemand einen Bot für ihn arbeiten lässt, möchte er nach einiger Zeit, dass ein zweiter Bot für ihn arbeitet. (eine andere Maschine oder was auch immer) aber: er wird das gleiche Passwort verwenden, da es schwer ist, sich an 2 zu erinnern (<--- sarkastisch)
Was bleibt: Überprüfen Sie die Konten mit demselben Spielverhalten und demselben Passwort-Hash.
quelle