PokerPirateと呼ばれる新しいオープンソースのポーカーボットがあります。私は、Webアプリケーションがポーカーボットを検出/阻止/無効化できる創造的な方法に興味があります。(これは、PokerPirateが書かれたのと同じ精神で、純粋に学術的な議論です。)
PokerPirateと呼ばれる新しいオープンソースのポーカーボットがあります。私は、Webアプリケーションがポーカーボットを検出/阻止/無効化できる創造的な方法に興味があります。(これは、PokerPirateが書かれたのと同じ精神で、純粋に学術的な議論です。)
回答:
サーバーサイドの観点からボットを倒す
多くのオンラインポーカーサイトは、疑わしいアクティビティによってトリガーされるポップアップキャプチャ入力を使用しています 。
一部のポーカーサイトは、プレー時間とパターンを監視しています(つまり、最悪のシナリオは、24時間365日、16テーブルを連続してプレーするプレーヤーですが、これが本物の人間である可能性はごくわずかです(ただし、一部のプレーヤーは非常に大きなハンドをプレーする能力があります)経験の浅い人にはボットのように見えるボリューム)
グリッチを投げます。プレーヤーがボットであると思われる場合は、すべてのトランプの位置を画面上の数ピクセルから変更し、1/100ハンドで異なる色/デザイン/パターンにして、投げるかどうかを確認します。画面を取得できない場合、すべての決定でタイムアウトし、それはかなり決定的なボット証拠です。
タイミングは、コンピュータプレーヤーが一度にミリ秒単位でオプションに応答する場合、大きな決定について考えるために一時停止せずに応答すると、疑わしい可能性があると伝えます
自己監視。ポーカーのウェブサイトpokertableratings.comのデータは、多くの大きなサイトを マイニングしています。それは混合されたレセプションで会われました、何人かは透明性を愛し、他はそれを嫌います。ただし、不利なプレーヤー統計(VPIPパーセンテージ、PFRパーセンテージは記録可能な多数の数値化可能な統計の一部)が不正行為の結論につながる場合があるという利点があります。
人工知能 分類ネットワークは、定量化可能な統計を監視して、不正な不正行為やロボットプレーヤーを分類できます。
オンラインポーカーがかなり新しいエンティティであった頃、噂があり、一部のポーカークライアントソフトウェアが疑わしいプレーヤーのデスクトップのスクリーンショットを撮って、それらを支援するプログラムを実行しているかどうかを確認したという証拠がありました。ただし、これが当てはまる場合でも、2つのコンピューターを実行して2つのタスクを独立して実行すると、この問題を回避できます。
複数のサイト間で繰り返し犯罪者間で情報を共有することは、それらが立派で責任ある人々によって運営されている場合に限り、業界にとって有益 です。
いくつかのボットはおそらく設計上非常にシンプルです。それらのプレースタイルを発見し、同じ状況でそれらがどのように動作するかを確認できれば(これは非常に基本的な戦略をプレイする洗練されていないボットでのみ可能です)、かなり迅速に発見できます。
プログラム機能の一貫性のない使用は、プレーヤーが本物であることに傾くでしょう。たとえば、ゲームの多くのポーカーサイトには、「自分の番になると折りたたむ」ボタンがあります。悪いハンドが配られ、他のプレイヤーが何をすべきかを決めるのを待っている場合、多くのプレイヤーがこのボタンをチェックします。ボットはこれらのボタンを使用できます。違いは、ボットは使用頻度の極限にあり、おそらく常に使用するか、まったく使用しないかのどちらかです。プレイヤーは通常「オートフォールド」を押すかもしれませんが、最も好ましい状況でも、とにかくクリックフォールドすることがあります。たとえば、正規のプレーヤーは通常オートフォールドを押しますが、今回は押しません。それは他のプレーヤーが行動することなく彼らに折り返され、今では彼らは可能な限り最も好ましい状態で提示されています。今、彼らがフォールドを押すと、彼らは最初からオートフォールドを押す傾向が強かったでしょう。これは、一貫性のない/最適化されていない/ランダムな行動であり、人間であることに一貫しています。これらの機能がいつクリックされるかを示すタイミングは、他の指標です。これらはすべて指標であり、決定的な証明ではないことを認識することが重要です。これらの行動指標はすべて簡単にシミュレーションできます。
プレーヤーの観点からボットを倒す
PokerTrackerなどのソフトウェアを使用して、できるだけ多くのデータをログに記録して収集してください
その演奏スタイルのパターンを特定する試み
ポット/#プレイヤーに比例したベットサイズとハンドの強さの関係を見つける試み
その手の範囲を計算してみてください。ステークスの低いボットは、重要な戦略的関心事になるほど頻繁にブラフすることはないので、そのために非常に正確なハンド範囲を構築することはそれほど難しくありません。
データ分析と試行錯誤によってゲームのリークを見つけようとするリーク/パターンが見つかったら、それらを繰り返し悪用して他の状況を回避しようとします。
人間が適応できる場合、ボットはおそらくそうではなく、人間が傾斜の連鎖によって重み付けされている場合、結果指向の思考と欲求不満はありませんが、ボットはそうではありません。これを有利に使用できます。
したがって、ロボットが決定中の実際のタイミング遅延をシミュレートし、合理的で現実的な演奏パターンを作成するのに十分なほど巧妙である場合、本質的にそれを止めるためにできることは何もありません。いくつかのランダムな条件と単純なバックチャット(通常、ポーカープレーヤーのレキシコンはかなり制限されています)を投げると、検出が非常に難しいAIプレーヤーがいます。
検出を回避するためにボットが行うこと
検出を避けるための鍵は、問題をできるだけ多くの角度から考えることです。あなたは非常に小さく制限的な世界でインテリジェントな人間の行動をシミュレートしようとしています。実行できる動作シミュレーションのほとんどはかなり明白ですが、ボットが一貫性がなく予測できないほど、ボットが発見される可能性は低くなります。
現実的なプレイスケジュールを作成します(つまり、週に3〜5回、セッションあたり4時間、1週間のあちこちで奇妙な週がある)。
プログラムを実行して別のコンピューターで決定を行い、サイトの画面がキャプチャされた場合に備えてゾンビコンピューターを制御します。
Randomiseアクションのタイミング(すぐに行動せず、アクションごとに0.5〜2秒待ちます)
大きな決定に時間を費やす。決定が境界線上にある場合は、決定を計算し、しばらく待ってから思考をシミュレートします。
クライアントソフトウェア機能のランダム使用。すべてのテーブルの[deal me out]ボタンをクリックしてトイレの休憩時間をシミュレートし、時々5分間休憩します。
シミュレートされたチャット、ポーカーチャットは、多くの場合、非常に単純な1ライナーであり、通常、議論や議論は行われません。「不運」や「stfu」などのことを、適切な検出可能な瞬間に言います。または、コーダーにボットを監視させ、実行中にチャットに参加させることもできます。
マウスの動きがリアルであることを確認します。テーブルが並べて表示されている場合は 、左上のテーブルで決定せず、すぐに右下のテーブルで決定します。現在、ほとんどのサイトソフトウェアはキーボードショートカットを提供しています。これらは、マウスの動きに合わせて使用する方が好ましい場合があります。
単純にAI分類子が期待しないことを行います。たとえば、年に1回、複雑ではない簡単なクエリで電話をかけます(「今日はログインできません!」または「インターネットがダウンしています!」)大きな違いはほとんどありませんが、ポーカー会社は、彼らがそれを実現可能な指標として認識したかもしれないほど賢いです。
散発的な敗北セッション。傾きをシミュレートすることができ、ボットはひどくプレイして、時々お金を失う可能性があります。 誰もがどこかで傾く。
懸念事項は、ボットがネットワーク上で実行されているかどうかポーカーWebサイトは特に気にしないことです。各プレーヤーはレーキにおいて大量の価値があり、理論的には純粋にシニカルなビジネスの観点からは、それが発見された場合の悪い面は悪いプレスになるでしょう。 。
露骨なエクスプロイトが発見された場合でも(GoogleでCereusネットワークのスキャンダルまたはAbsolute Poker Scandalを検索すると、かなり衝撃的です)、ビジネスは存続し、健全な状態を維持しているように見えます。これにより、ネットワークに対するスキルの低いプレイヤーの割合が増加し、優れたプレイヤーを引き戻すことになります。それは古き良き漁獲量です22.適切な市場規制のための優れた議論。
すべてのゲームにはナッシュ均衡が存在することに注意してください。オンラインポーカーには現在のやり方にタイムラインがあり、ボットが最終的に数学的に引き継がれるため、将来的に誰もがそれを信頼できるように(ウェブカメラ/ VoIP)よりソーシャルなもの(ウェブカメラ/ VoIP)に移行する必要があります。優れた、そして心理的に免疫。ポーカーAIコミュニティは非常に活発で、学界および/または資本の利益によって支えられています。
リミットポーカーなどの単純なバージョンのポーカーは、小さな検索スペースでほぼ解決されています。より複雑なバージョンのゲーム(ノーリミットバリエーション/ ポットリミットオマハなど)が人工プレーヤーに勝てるようになるのは時間の問題です。
結論
高度なボットは、業界がよりソーシャルなオンラインゲーム環境に移行するまで検出されません。これは問題を解決しませんが、ボットが低いレベルで勝つことを確実に難しくします。PKR、3Dのリリースと、マルチタブリングがプレイヤーにとって非常にトリッキーな他のサイトのよりインタラクティブで時間当たりの少ないバージョンのリリースで、わずかな変化が見られました。
この問題は業界の性質にも影響を受けますが、評判がますますビジネスモデルに統合されるようになった、より評判の良いより大きなWebサイトに固執するもう1つの理由です。透明性の欠如と偽装された透明性は原因を助けません。
現在ボット開発者にとっての本当の挑戦は勝てるアルゴリズムを書くことです、これは見た目ほど簡単ではありません。ポーカーをプレイする人は皆、自分自身を優勝、勝ち、またはブレイクイーブンと見なします。ですから、幻想のもとでお金を失っても、単に運が悪い、あるいはプレイのスタイルが誤解されているなど、人々はプレイを続けます。人間の心理学におけるこの傲慢さと弱さは、プレイヤーに多くのお金を失うことになり、ポーカーが依然として利益を上げることができる根本的な理由です。
ポーカーは非常に複雑なゲームで、上手になるまでに何年もかかります(古い格言は、「学ぶのに10分、マスターするのに一生」という真実のままです)。運の要素は、長期的には非常に限られています。
他の職業と同じように、上手にするには、何百時間も何百時間も勉強し、何千人も遊ぶ必要があります。経験の浅いプレイヤーが理解できないことを理解し、経験の浅いプレイヤーが発見できないことを見つけます。学習は非常に長い間、おそらく私たちが生きることができるよりも長く続きます。複雑なゲームです。
テレビでハイステークスのキャッシュゲームを見て、誰かが「簡単な電話だ」と叫ぶのを聞いた頻度はどれくらいですか。したがって、アマチュアはプレーの高度さを本当に理解または認識せず、そのレベルでゲームを真に信じることは、依然として究極的に単純です。そうではありません。それらのハイステークスプレーヤー(多くの場合)はテレビにいます 。良い。また、おそらくプレイされている複雑なメタゲームも存在するでしょう。素人はチェスのマスターに立ち向かい、彼らに騎士を動かすために叫ぶことはしませんでしたが、ポーカーのダイナミックさが不完全な情報であるため、彼らの心理学は彼らが言っていることを本当に信じさせます。チェスと同様に、決定は複雑で繊細であり、ゲーム全体にとって非常に重要です。ゲームの複雑さが増すにつれ、対戦相手が期待するため、些細な決定はそれほど簡単ではなくなります。
ボットまたはゲームをレベルを上げると、必然的に、より多くの熟練したプレーヤーのより大きな人口に遭遇します。次に、戦略の複雑さは、テーブルイメージ、範囲バランシング、洗練されたインテリジェントなブラフ(つまり、弱点でのブラフ、範囲でのブラフ、イメージでのブラフなどではない)を考慮して、次のレベルに上がる必要があります。より詳細な手の範囲分析。上に上がると、それは本当に別のゲームです。
優勝したボットが作成されると、間違いなく、コーダーはボットを検出不可能な方法で適用するのに十分なスキル、知識、常識を持つことになります。これは彼らにとってはささいなことです。
ですから、本当にできることは何もありません。オンラインでプレイしたい場合は、リスクを理解してください。自分の余裕よりも多くのお金を危険にさらすことは絶対に避けてください。自分の能力の見積もりに対して誤った、非現実的な、そして最終的に損害を与えることがないように、支出の正確な記録を保管してください。ストップロスを用意し、エッジがない場合、またはエッジがあるかどうか不明な場合はテーブルから離れてください。もちろん、誰もが勝てないだろうと誰もがした場合、それがゲームの略奪的で搾取的な性質であり、そこが競争の源であり、それがそれを楽しいものにしているのです。
考慮すべき3つの個別の領域があります。ボットはテーブルの状態を把握し、決定を行い、その決定をホストに送信する必要があります。
テーブルを認識可能な形式でネットワーク経由で送信したり、標準テキストとしてユーザーに表示したりすると、テーブルの状態を把握するのがはるかに簡単になります。最初に、画像認識を唯一のオプションにしてから、可能な限り難しくします。カードを3Dで表示し、カードの向きと位置をゆっくりと変更します。カードの前でちらつきや花火をアニメーション化して、スクリーンショットが判読できないようにします。
決定を下す際に行うべきことは何もありません。人間が決定したかどうかを決定しようとすることは、ほとんど情報がないチューリングテストのようなものです。
再度3Dを使用すると、決定を送り返すのが困難になる場合があります。マウスでボタンをクリックする以外の方法で直接パケットを送信したり、その他の方法で決定を送信したりすることを困難にします。すべてのアクションでボタンを少し移動するか、決定を待つ間、ボタンをプレイエリアの周囲にゆっくりと浮かせます。ボタンの検索や操作を可能にするユーザー補助機能を無効にします。
PokerPirateは、これまでに作成されたほぼすべてのポーカーボットと同様に、Windowsポーカーアプリケーションでの画面のスクレイピングとマウスクリックのシミュレーションによって機能します。したがって、システムのリンチピンは、ゲーム内のオブジェクトを認識し、ウィンドウ内でアクションを実行する能力です。ポーカーのように賢くても、これらの基本的な操作にはまだ問題があるようです。
したがって、このボットを阻止する明白な方法には次のものがあります。
理想的には、唯一の有効なソリューションは、ボットの最も理想的な動作応答を優先するより好ましいロジック条件の誘惑を提供することにより、関与するボットを誘惑するハニーポットロジックを作成することです。ボットがハニーポットに関与したら、ボットにタイムアウトが設定されていないと想定して、ボットの条件を継続的にフィードする必要があります。その後、ボットを測定、記録、調査することができます。ボットに加えて、ボットがTOR経由で接続していない場合は、ネットワークとセッションデータを調査用に分離することもできます。
この状況では、ボットと人間を区別するのに適した決定論的な考慮事項はそれほど厳しくありませんが、ボットの動作の識別に関する決定論的な考慮事項はより厳しくなります。残念ながら、ボットの所有者は、ハニーポットの状態またはその論理的な考慮事項を知っている場合、ボットに変更を加えてそのような識別を防ぐことができます。
ポーカーボットを倒すには2つの形態があります。それらを試して識別し、システムから禁止するか、ポーカーで倒すかです。ポーカーで彼らを倒すことは、より興味深い学問的な問題です。:-)
ポーカーボットを打ち負かすことに関するいくつかの論文についてはこちらを参照してください:http : //www.cs.cmu.edu/~sganzfri/
この投稿には、それらを阻止する方法に関するいくつかの良いヒントもあります。
スキャンを困難にするために画面をいじることに関する別の考え:
カードをさまざまな色の全体から作ります。人間の目には近いが同じではありません。これは、読むものを選ぶのを難しくします。裏側で、人間の目が背景から分離しない色でカードに偽の書き込みを置きます。
ボットの問題は、まともな人間のプレーヤーよりも上手にプレイできるということですか、それとも悪いプレーヤーが現れるまで24時間年中無休で待機してから搾乳を試みることができるということですか?
また、誰かがポーカーをプレイしている間、彼の隣にコンピューターを置いて、他のコンピューターに助言を求めるのは、「合法」または「不正行為」でしょうか。
プレイヤーについての最適な戦略が対戦相手について知られていることによって影響を受けるときに、リミットポーカーのソリューションスペースがどのように「解決される」と主張できるかわかりません。プレーヤーを分析する試みで、改善できないほど完璧だと主張する方法はありますか?
多くの一致にアクセスできる場合は、データマイニングアプローチをとることができます。AIのプレーの強さはほぼ一貫しているはずですが、人間にはおそらく単純なパターンがあります-最初の数回のウォームアップラウンドでは弱く、長時間プレーした後は強さが低下します。また、危機に瀕しているお金が増えると、人間の決定にかかる時間が長くなる可能性があります。
マウスの動き(または、少なくともWebアプリでも当てはまるクリック位置)にアクセスできる場合、最も洗練されたものを除いて、ボットを認識するのはかなり簡単です。人間は正確な直線でマウスを動かさず、スピードアップとスローダウンの期間、統計的に記述可能なクリック位置の分布などがあります。
NoBotは、いくつかの異なるボット対策手法を採用しています。
* Forcing the client's browser to perform a configurable JavaScript calculation and verifying the result as part of the postback. (Ex: the calculation may be a simple numeric one, or may also involve the DOM for added assurance that a browser is involved)
* Enforcing a configurable delay between when a form is requested and when it can be posted back. (Ex: a human is unlikely to complete a form in less than two seconds)
* Enforcing a configurable limit to the number of acceptable requests per IP address per unit of time. (Ex: a human is unlikely to submit the same form more than five times in one minute)
100%のソリューションは不可能です。私が目的としているのは、AIを自己に対して使用することによってお金を節約するソリューションです。PokerPirateのAIのインスタンスをサーバー側で実行し、すべてのゲームで目に見えないプレーヤーとしてプレイします。同一のアクションを実行するプレーヤーが多すぎる場合は、おそらくPokerPirateのインスタンスを実行しています。これは、攻撃者が陥り得るハニーポットまたはトラップの一種です。攻撃者はボットの成功率を下げることにより、このハニーポットを防御できます。したがって、これは、攻撃者が常に盗むことが可能な「ネコとネズミ」と来た作成されたいくつかのお金をし、防御側は常に保存することができますいくつかのお金を。
"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."
もっと簡単な方法があります。はい。多くの提案が正しく、必要です。しかし、詐欺の約90%は非常に単純な方法で検出されます。
誰かがボットを彼に代わって動作させたら、彼はしばらくして、2番目のボットが彼のために動作することを望みます。(別のマシンまたはその他)ただし、覚えにくいため、同じパスワードを使用します2(<---皮肉)
残り: 同じゲーム動作と同じパスワードハッシュを持つアカウントを確認してください。