web-dev-qa-db-ja.com

ポーカーボットを倒す

PokerPirate という新しいオープンソースのポーカーボットがあります。私は、Webアプリケーションがポーカーボットを検出/阻止/無効にすることができる創造的な方法に興味があります。 (これはPokerPirateが書かれたのと同じ精神での、純粋に学術的な議論です。)

107
rook

サーバーサイドの観点からボットを打ち負かす

  1. 多くのオンラインポーカーサイトでは、疑わしいアクティビティによってトリガーされるポップアップ Captcha 入力を使用しています。

  2. 一部のポーカーサイトは、プレイ時間とパターンを監視します(つまり、最悪のシナリオは24x7と16のテーブルを連続してプレイするプレイヤーであり、これは本物の人間である可能性はごくわずかです(ただし、一部のプレイヤー 非常に大きな手のボリュームを再生します これは経験の浅い目にはボットのように見えます)

  3. グリッチを投げます。プレイヤーがボットであると思われる場合、トランプのすべての位置を画面上の数ピクセルから変更し、1/100ハンドの異なる色/デザイン/パターンにし、投げられるかどうかを確認します。グラブを選別できない場合、すべての決定でタイムアウトになり、それはかなり決定的なボットの証拠です。

  4. タイミングは、コンピュータープレーヤーがオプションにミリ秒単位で応答する場合、一時停止せずに大規模な意思決定について考えた場合、これが疑わしいことを示します。

  5. 自己監視。ポーカーWebサイト pokertableratings.com データは、多くの大規模サイトをマイニングします。それは混合されたレセプションで満たされました、いくつかは透明性を愛します、 他の人はそれを嫌います 。ただし、利点は 不審なプレイヤー統計が存在する場合があります (VPIPパーセンテージ、PFRパーセンテージは記録可能な多数の定量化可能な統計の一部である)が不正行為の結論につながることです

  6. 人工的にインテリジェント 分類ネットワーク は、定量化可能な統計を監視して、不正な不正行為やロボットプレーヤーを分類できます。

  7. オンラインポーカーがかなり新しいエンティティであったとき、噂がありました そして話 いくつかのポーカークライアントソフトウェアが、疑わしいプレーヤーのデスクトップのスクリーンショットで、彼らを支援するプログラムを実行しているかどうかを確認しました。ただし、これが当てはまる場合でも、2台のコンピューターを実行して2つのタスクを個別に実行すると、これを回避できます。

  8. 複数のサイト間で繰り返される犯罪者間で情報を共有することは、業界にとって有益です。 名誉ある場合のみ で実行し、 有能な責任者

  9. 一部のボットはおそらく設計上非常に単純であり、そのプレイスタイルを発見し、同じ状況でどのように動作するかを確認できれば(これは非常に基本的な戦略をプレイする洗練されていないボットでのみ可能です)、合理的に迅速に発見できます。

  10. プログラム機能の一貫性のない使用は、本物のプレーヤーに傾くでしょう。たとえば、ゲーム内の多くのポーカーサイトには、[自分の順番になったら折りたたむ]ボタンがあります。悪いハンドが配られ、他のプレイヤーが何をすべきかを決定するのを待っている場合、多くのプレイヤーがこのボタンをチェックします。ボットはこれらのボタンを使用できます。違いは、ボットは使用頻度の極限にあり、おそらく常に使用するか、まったく使用しないかのどちらかです。プレイヤーは通常「自動折り畳み」を押しますが、最も都合の良い条件であっても、とにかく「折り畳み」をクリックすることがあります。たとえば、本物のプレーヤーは通常、自動フォールドを押しますが、今回は押しません。他のプレイヤーが演技することなく、彼らに折り返されています。現在、彼らは可能な限り最も有利な状態で提示されています。折り畳みを押すと、最初から自動折り畳みを押す傾向が強くなります。これは一貫性のない/最適化されていない/ランダムな動作であり、人間であることと一致しています。これらの機能がクリックされるタイミングは、他の指標です。これらはすべて指標であり、決定的な証拠ではないことを認識することが重要です。これらの行動指標はすべて簡単にシミュレートできます。

プレイヤーの観点からボットを打ち負かす

  1. PokerTracker のようなソフトウェアを使用して、できるだけ多くのデータを記録して収集してください

  2. プレイスタイルのパターンを特定しようとする

  3. ポット/#プレイヤーに比例したベットサイズとハンドの強さの関係を見つけようとします。

  4. 手の範囲 を計算してみてください。ローステークスボットは、おそらく重要な戦略的関心事になるほど頻繁にブラフすることはないので、高精度のハンドレンジを構築するのはそれほど難しくありません。

  5. データ分析と試行錯誤によってゲーム内で leaks を見つけようとします。リーク/パターンが見つかったら、それらを繰り返し悪用し、他の状況を回避します。

人間が 適応 を使用できる場合、ボットはおそらくそうではなく、人間は 傾斜結果指向の思考 のチェーンによって重み付けされます フラストレーション 、ボットは違います。これをあなたの利点に使用できます。

そのため、ロボットが意思決定中の実際のタイミング遅延をシミュレートし、合理的で現実的なプレイパターンを作成するのに十分賢い場合、本質的にそれを止めることはできません。いくつかのランダムな条件と単純なバックチャット(ポーカープレーヤーのレキシコンは 通常かなり制限されています )で投げます検出するのがかなり困難になるAIプレーヤー。

検出を回避するためにボットが行う可能性のあること

検出を避けるための鍵は、できるだけ多くの角度から問題を考えることです。あなたは非常に小さく制限された世界で知的人間の行動をシミュレートしようとしています。実行できるビヘイビアーシミュレーションのほとんどはかなり明白ですが、ボットが一貫性がなく予測できないほど、発見される可能性は低くなります。

  1. 現実的なプレイスケジュールを作成します(つまり、1週間に3〜5回、セッションごとに4時間、1年の間に奇妙な週をあちこちで過ごします)。

  2. 別のコンピューターで決定を下すためにプログラムを実行し、サイトがスクリーンキャプチャした場合にゾンビコンピューターを制御します。

  3. アクションのタイミングをランダム化する(すぐに行動しないで、アクションごとに0.5〜2秒待機する)

  4. 大きな決断を下す時間。決定が境界線である場合、決定を計算し、しばらく待ってから思考をシミュレートします。

  5. クライアントソフトウェア機能のランダムな使用。すべてのテーブルで「deal me outボタン」をクリックしてトイレ休憩をシミュレートし、時々5分間休憩します。

  6. シミュレートされたチャット、ポーカーチャットは非常にシンプルなライナーであることが多く、通常は議論や議論はありません。適切な瞬間に「不運」や「stfu」などを言ってください。または、コーダーにボットを監視させ、実行中にチャットに参加させることもできます。

  7. マウスの動きが現実的であることを確認してください。テーブルが タイル の場合、左上のテーブルで決定を行わずに、すぐに右下のテーブルで決定します。現在、ほとんどのサイトソフトウェアはキーボードショートカットを提供しています。これらは、マウスの動きに合わせて使用​​することが望ましい場合があります。

  8. 非常に単純なAI分類子が期待しないことを行います。たとえば、年に一度、単純な非複雑なクエリ(「今日はログインできません!」または「インターネットがダウンしました!」)で電話をかけます。大きな違いはありませんが、ポーカー会社は、賢明な指標として認識しているかもしれません。

  9. 散発的な負けセッション。傾斜をシミュレートでき、ボットのプレイが悪くなり、時々お金を失う可能性があります。 Everybodyはある時点で傾きます。

懸念は、ポーカーのウェブサイトはボットがネットワーク上で実行されているかどうかは特に気にしないということです。 。

露骨なエクスプロイトが発見された場合でも、(グーグルで Cereus network scandalsまたは Absolute Poker Scandal を検索してください、それはかなり衝撃的です)十分な教育を受け、勝利を収めているプレーヤー(そのうち多くはありません)。これにより、ネットワークに対するスキルの低いプレーヤーの割合が増加し、その結果、優秀なプレーヤーが引き戻されます。これは昔ながらの良いキャッチ22です。適切な市場規制のための優れた議論です。

すべてのゲームでナッシュ 平衡が存在する であることに注意することが重要です。オンラインポーカーには現在の動作に合わせたタイムラインがあり、ボットが最終的に数学的に引き継ぐため、将来(人々が信頼する場合)誰もがそれを信頼するために、よりソーシャルなもの(ウェブカメラ/ VoIP)に移行する必要があります優れており、心理的に免疫があります。ポーカーAIコミュニティは 非常に活発 であり、アカデミアや資本の恩恵に支えられています。

リミットポーカーなどのポーカーのより単純なバージョンは、小さな検索スペースで ほとんど解決済み になっています。ゲームのより複雑なバージョン(ノーリミットバリエーション/ Pot Limit Omaha など)が人工プレイヤーにとってビートになるまでは時間の問題です。

結論

高度なボットは、業界がよりソーシャルなオンラインゲームの設定に移行するまで検出できません。これは問題を解決しませんが、確かにボットがより低いレベルで勝つことを難しくします。 [〜#〜] pkr [〜#〜]Dおよびよりインタラクティブ のリリースでわずかなシフトがすでに見られました。プレーヤーにとってマルチテーブル化が非常に難しい他のサイト。

この問題は、業界の性質にも悩まされています。さらに、評判がますますビジネスモデルに統合されるようになった、より評判のよいWebサイトに固執するもう1つの理由もあります。透明性の欠如と 偽装された透明性 は、原因を助けません。

ボット開発者にとって現在の本当の課題は、勝利のアルゴリズムを書くことです。これは見かけほど簡単ではありません。ポーカーをプレイするすべての人は、自分が良い、勝つ、または損益分岐点のプレーヤーであると考えていますが、これは単に真実ではありません。だからこそ、人々は幻想の下でお金を失っても、単に不運であるか、彼らのプレイスタイルが誤解されているのです。人間の心理学におけるこの慢さと弱さは、プレイヤーに多くのお金を失い、ポーカーがまだ利益を上げられる基本的な理由です。

ポーカーは非常に複雑なゲームであり、何年も熟成するのに時間がかかります(古い格言は、「学習するのに10分、習得するのに一生」)。運の要素は長期的には非常に限られています。

他の職業と同じように、良くなるためには、数百時間に渡って勉強し、何千もの時間をプレイする必要があります。経験の浅いプレイヤーが理解できないことを理解し、経験の浅いものを見つけます。学習は非常に長い時間、おそらく私たちが生きることができるよりも長く続きます。複雑なゲームです。

テレビでハイステークスキャッシュゲームを見たことがあり、誰かがそれを叫ぶのを聞いたことはありますか。したがって、アマチュアが実際にプレイの洗練度を理解または認識していないことを証明し、そのレベルのゲームを本当に信じることは依然として最終的に簡単です。そうではありません。これらのハイステークスプレーヤー(多くの場合)は、本当にreallyreally 良い。また、おそらく複雑なメタゲームもプレイされており、アマウアーはその存在を認識できません。アマチュアはチェスマスターに立ち向かわず、彼らに騎士を動かすように叫ぶことはありませんが、ポーカーの情報が不完全な情報であるため、彼らの心理学は彼らが言っていることを本当に信じさせます。チェスのように、決定は複雑で、繊細で、ゲーム全体にとって非常に重要です。ゲームの複雑さが増すにつれて、相手が期待しているため、些細な決定はもはやささいなことではなくなりました。

ボットまたはゲームをレベルを上げると、必然的に、より多くのよりスキルのあるプレイヤーに出会うことになります。そして、戦略の複雑さは、 テーブル画像範囲のバランス 、洗練されたインテリジェントなブラフ(IEだけでなく)を考慮して、次のレベルに上がる必要があります弱さでブラフ、範囲でブラフ、画像でブラフなど)、より詳細な手の範囲分析。あなたが上に移動すると、それは本当に異なるゲームです。

勝ったボットが書かれたら、間違いなくコーダーはボットを検出できない方法で適用するのに十分なスキル、知識、常識を持っています。これは彼らにとって些細なことです。

ですから、本当にできることは何もありません。オンラインでプレイしたい場合は、リスクを理解してください。余裕がある以上のお金をかけないでください。また、支出の正確な記録を保持して、見当違いで非現実的で、最終的に自分の能力を過大評価することのないようにしてください。ストップロスがあり、エッジがない場合、またはエッジがあるかどうかわからない場合はテーブルを離れます!もちろん、誰も勝てないということを誰もがやった場合、それがゲームの略奪的で搾取的な性質であり、そこから競争が生まれ、それが楽しくなります。

209
Tom Gullen

考慮すべき3つの領域があります。ボットはテーブルの状態を把握し、決定を下し、決定をホストに送り返す必要があります。

テーブルの状態を把握することは、何らかの認識可能な形式でネットワークを介して送信されるか、ユーザーに標準テキストとして表示される場合、はるかに簡単です。最初に、画像認識を唯一のオプションにしてから、できるだけ難しくします。カードを3Dで表示し、カードの向きと位置をゆっくりと変更します。カードの前で小さなちらつきや花火をアニメーション化して、特定のスクリーンショットが判読できない場合がありますが、それを判断するまでに時間がかかります。

決定を下しても何もすることはありません。決定が人間によって行われたかどうかを判断しようとすることは、ほとんど情報のないチューリングテストのようなものです。

再度3Dを使用すると、決定を送り返すのが難しくなります。パケットを直接送信したり、マウスでボタンをクリックする以外の方法で決定を送信したりすることを困難にします。すべてのアクションでボタンをわずかに動かすか、決定を待っている間、それらをプレイエリアの周りにゆっくりと浮かせます。ボタンの検索または操作を許可するアクセシビリティタイプ機能を無効にします。

9
drawnonward

PokerPirateは、これまでに書かれたほぼすべてのポーカーボットと同様に、Windowsポーカーアプリケーションでの画面のスクレイピングとマウスクリックのシミュレーションによって機能します。したがって、システムのリンチピンは、ゲーム内のオブジェクトを認識し、ウィンドウ内でアクションを実行する能力です。ポーカーのように賢くても、これらの基本的な操作にはまだ問題があります。

したがって、このボットを阻止する明白な方法には以下が含まれます。

  1. ゲームの前、または他の要因がプレイヤーがボットである可能性を示唆する場合に、CAPTCHAを実装します。
  2. テーブルのグラフィックをより複雑にするか、ゲーム全体でテーマを変更します。
  3. 異常に高速および/またはロボットのマウスの動きとクリックを検出します(人間は数学的に完璧なラインでマウスを動かすことはありません)。
8
Cerin

理想的には、唯一の有効なソリューションは、ボットの最も理想的な行動応答を支持するより好ましい論理条件の誘惑を提供することにより、関与するボットを誘惑するハニーポットロジックを作成することです。ボットがハニーポットに参加したら、ボットにタイムアウトが設定されていないと想定して、ボットの条件を継続的に入力する必要があります。その後、ボットを測定、記録、調査できます。ボットがTORを介して接続していない場合、ボットに加えて、ネットワークおよびセッションデータを調査用に分離することもできます。

この状況では、ボットと人間を区別するのに適した決定論的考慮事項はそれほど厳しくありませんが、ボットの動作を識別する際の決定論的考慮事項はより厳しくなります。残念ながら、ボットの所有者は、その所有者がハニーポットの状態またはその論理的な考慮事項を認識している場合、そのような識別を防ぐためにボットに変更を加えることができます。

5
austin cheney

ポーカーボットを倒すには、2つの形式があります。それらを試して識別し、システムから禁止するか、単にポーカーで倒すことができます。ポーカーで彼らを打ち負かすことは、より興味深い学術的な質問です。 :-)

ポーカーボットの暴行に関する論文については、こちらをご覧ください。 http://www.cs.cmu.edu/~sganzfri/

4
Aaron

この投稿を見てください

この投稿 また、それらを阻止する方法に関するいくつかの良いヒントがあります。

3
Romain Hippeau

スキャンを困難にするために、画面をいじくり回すことに関する別の考え:

さまざまな色の全体からカードを作成します-人間の目には近いが同じではありません。これにより、読むものを選ぶのが難しくなります。反対に、人間の目が背景から分離しないような色でカードに偽の書き込みをします。

2
Loren Pechtel

ボットの問題は、彼らがまともな人間のプレーヤーよりもうまくプレイするという事実なのか、それとも悪いプレーヤーが現れるのを24/7前後待ってから搾り取ろうとするという事実なのでしょうか?

また、ポーカーをプレイしているときにコンピューターを隣に置いて、他のコンピューターにアドバイスを求めるのは、「正当」または「不正行為」でしょうか?

プレイヤーにとって最適な戦略が対戦相手について知られていることによって影響を受ける場合、リミットポーカーのソリューションスペースが「解決」されるとどのように主張できるのかわかりません。プレーヤーを分析する試みは、改善できないほど完璧であると主張することができますか?

2
supercat

多数の一致にアクセスできる場合は、データマイニングアプローチを使用できます。 AIのプレイ強度はかなり一貫している必要がありますが、人間にはおそらく単純なパターンがあります。最初の数回のウォームアップラウンドでは弱く、長時間プレイすると強度が低下します。また、より多くのお金がかかっていると、人間の決定時間が長くなる可能性があります。

マウスの動きにアクセスできる場合(または、少なくともWebアプリにも当てはまるクリック位置)、最も洗練されたものを除き、ボットを認識するのはかなり簡単です。人間はマウスを正確な直線で動かせず、スピードアップとスローダウンの期間、統計的に記述可能なクリック位置の分布などがあります。

1
Tgr

Ajax Control Toolkit NoBot をご覧ください。

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)
1
lmsasu

100%のソリューションは不可能です。私が提案しているのは、AIを自己に対して使用することでお金を節約できるソリューションです。 PokerPirateのAI のインスタンスをサーバー側で実行し、すべてのゲームで非表示のプレーヤーとしてプレイします。プレイヤーが同一のアクションをあまりにも多く実行している場合、彼らはおそらくPokerPirateのインスタンスを実行しています。これは一種の ハニーポット または攻撃者が陥る可能性のあるトラップです。攻撃者は、ボットの成功率を下げることにより、このハニーポットから防御できます。したがって、これは、攻撃者が常にsomeお金を盗むことができ、防御者が常に節約できる(Cat and Mouse)を作成していますsomeお金。

0
rook