オンラインゲームAPIの悪用(ボット)を検出および防止する方法


49

私は自由な時間にゲームのアイデアにたまに取り組んでいます。ゲームプレイとコンテンツにより、定評のあるWebテクノロジーで構築されたオンラインマルチプレイヤーゲームとして実装されます。戦略とシミュレーションのジャンルに該当することを知っておく必要があります。つまり、「ロケーションXにAをビルドする」などの、キャラクターなどで走り回るのではなく、(クライアントとサーバーの通信に関する)アトミックアクションのみを実行します。

ある時点で、大きな問題があることに気付きました。RESTAPIバックエンドに依存するブラウザーベースのフロントエンドを持つことは、ボットの優れたターゲット以上のものになるということです。自動化はビジネスにとって望ましいものですが、それはゲームの面白さを損なうものです。過去にブラウザゲームで実際に体験したのは、最も成功したプレイヤーがボットであり、誰もが抑制したからです。

私の現在の観点からは、REST APIに基づいたマルチプレイヤーオンラインゲームを構築するときにボットから保護する可能性はありません。例外:オープンソースにすることで、誰でもプライベートグループまたは自分自身のために独自のインスタンスをホストできるようになります(ボットを使用するジャークに悩まされないため)。

次の可能なアクションに対してアラームを設定するだけの正直なプレーヤーと、その出現時にすべてのチャンスを自動的に取得するボットとを区別する方法はありますか?キャプチャのようなそのようなショーストッパーに加えて。そうでない場合は、クライアントとサーバー間の通信(ネイティブコードクライアントの独自の暗号化バイナリプロトコル)を台無しにするのを少なくともはるかに困難にする別の技術スタックについて考えます。

編集:ありがとう、あなたの答えは刺激的ですが、ゲームの詳細をさらに進めることで特定の対策を講じることができないことも実感しました。ただし、Stack Exchangeに関する質問には多すぎます。したがって、最も重要な点を指摘したいだけです。

  • プレイヤーは、必要なときにいつでも調査、開発、管理しています。彼らのビジネスはオフラインのときでもうまくいきます(それは平和なゲームであり、武器は関係しません)。プレイヤーのアクションが必要なのは、拡張と進行のみです。これらのアクションは以下によって制限されます。
  • 時間は重要なリソースの1つです(EVEオンラインスキルトレーニングなど)。ゲーム内のすべてのプロセスに必要です。24時間365日オンラインでいる意味はありません。平均的なプレーヤーは、1つまたは2つのセッションで毎日1時間以内に費やすことで、すでに成功しているはずです(おおよそ、コンセプトはまだ開発中です)。

9
他の人がボットをプログラミングしたり購入したりしても、人間のプレイヤーの面白さを損なわないようなゲームを作ることはできませんか?次に、ゲームをプレイするためのボット/ AIのプログラミングは、それ自体で楽しい場合があります。しかし、他の人の楽​​しみを台無しにしないでください。
キャスパーヴァンデンバーグ

26
「自動化[...]は楽しいゲームにとって有害で​​す。」強く同意しない。ゲームが本当におもしろい場合、プレイヤーが持っていない部分をスキップしたことでプレイヤーにペナルティを科すのはなぜですか?ゲームの要素が非常に退屈で、プレイヤーがプレイしないことを好み、台本を引き継ぐことを望んでいる場合、それは対処すべき本当の問題です。
マルクストーマス

6
あなたの例の応答は簡単です:ボットを必要としないようにプレイヤーにツールを提供します。例えば、彼らが正確な瞬間にオンラインになることを奨励したり、彼らのためにそれを行うツールを入手/作成するのではなく、アクションをキューに入れます。

4
人々がボットを使用する主な理由は、ゲームの一部が退屈で退屈だからです(彼らが楽しいなら、彼らはただ遊ぶだけです)。明らかに、プレイヤーは競争と挑戦を楽しんでいますが、自動化可能なゲームプレイは楽しんでいません。ゲームデザインを変更して、人々がボットを使って乗り越える部分を削除したり、ゲームのバランスを取り直して、人間のプレーヤーだけができてボットができない難しい難しい意味のある決定(深い戦略的選択など)を作成することができます。さもなければ、あなたは軍拡競争に運命づけられ、ボッターが勝ちます。
スーパーベスト

6
tl; dr:人々は、ボットを持った男と同じように、アラームを発している男と仕事をすることを好まない-それが、ボットを走らせるために彼らを駆り立てるだろう。
-Random832

回答:


50

人々がボットしたい場合、私はあなたが本当にそれらを停止できるとは思わない。

もちろん、ボッティングを多少苦痛にする多くの手段を実装できます。しかし、コードベースが巨大な混乱に変わり、それが維持され、エラーが発生しやすく、正当なユーザーを悩ませる前に、あなたはそれだけを行うことができます。その間、ボッターは常にあなたの対策を打ち負かす方法を見つけます:

  • あなたより彼らの多くがあります
  • より自由な時間を手に入れることができます(実際の開発とボットプルーフとの間で時間を分ける必要があり、1日中ボットコードをハッキングできます)
  • ボットの保護を破るのは楽しいので、風変わりで挑戦的なセーフガードを作成すると、ボットの作成者はさらに奨励されます
  • ボットから商業的に利益を得ている人々の闇市場がある場合、ボットを書くのが難しくなるほど、より価値のあるボットが機能するので、ボットをインセンティブにします

あなたは基本的にボッターとの軍拡競争に巻き込まれ、上記のポイントの線に沿った論理と、そのようなゲームの私の経験に基づいて、あなたは追いつくことができません。

一部のゲーム開発者は、非常に積極的な不正行為対策を採用しています。たとえば、Steamはメモリとファイルシステムをスキャンしてハッキングを探し、犯罪者は数百ドル相当のアカウントを失うことで処罰されます。それでも、Steamゲームにはまだボットやその他のハックがあり、その一部は半分の時間でさえ動作します。それらとは異なり、ユーザーに広く開かれたAPIがあり、ユーザーのコンピューターを制御することはできません。それは最初から困難な戦いです。

解決しようとしている問題は、基本的にチューリングテストです。言語のような難しいAI問題を要求することでごまかすことができないため、非常に簡単なチューリングテストを除きます。ヒューリスティックをいくら作成しても、ボットがボットの動作に少しランダム性を加えて、ほぼ正確に人間を模倣するのは簡単なことです。ボットにあなたのプレイを少し見てもらって、あなたにぴったりのアクションの時間を計る方法を学ぶことはそれほど難しくありません。その後、ボットを禁止すると、ボッターはフォーラムに彼が単なる熱心なプレイヤーであるかどうかについて巨大な暴言を投稿します(そして、彼実際には偽陽性であるかもしれません)。

ボットするにはゲームを面白くしすぎる

誰かがボットを使用する主な理由は、スキップしたいゲームの一部があるためです。彼らがゲームを楽しんでいて楽しいと感じた場合、彼らはボットにそれをプレイさせないでしょう、彼らはそれを自分でプレイするでしょう。

しかし、ゲームがとても退屈な場合、なぜそれをプレイするのですか?おそらく、ゲームのいくつかの部分は退屈であり、楽しい部分に到達するために必須です。例えば、MMOでは誰もがレベルを上げるのが大好きですが、XPを手に入れるために42,324人の恐ろしいアンデッド毒ラットを殺したい人はいません。そこで、彼らはボットをグラインドしてドロップインさせて、楽しい役割を果たします。

これはあなたやあなたのゲームに対する批判ではありませんが、少なくとも一部のプレーヤーはゲームの一部を面倒だと感じています。これらの退屈な部分を減らすことができるかどうかを確認し、より困難で意味のある決定を追加することを検討する必要があります。ボットは人間の知能と比較して深い戦略や横方向の思考が得意ではなく、人間は難しいゲームの決定を楽しんでいます。

あなたの説明から、これはトラビアンに似たブラウザゲームであるという印象を受けます。1つの最良のビルド順序と特定の「メンテナンス」(ファームレイドを続けるなど)タスクが実行される必要があるビルドキューがあります。競合はないと言いますが、MMOドラマとささいな政治は避けられない(IMOが主な魅力です)ので、プレイヤーは頭を突き合わせる方法を見つけると確信しています。これらの種類のゲームでは、多くの退屈はこれらの「メンテナンス」タスクから生じます-プレイヤーが本当にやりたいのはライバル氏族との外交ゲームをプレイし、メンテナンスはあなたが起こらなければならない一種の税金になりますその面白い外交パートに入ることを許可される奇数時間にアラームまで。だから退屈を切り取ってください:

残念ながら、このアプローチは常に機能するとは限りません。すべてのプレーヤーが退屈に対して同じ耐性を持っているわけでも、同じ楽しみの概念を持っているわけでもありません。プレイヤーの99%が楽しめる傑出したメカニックを持つこともできますが、1%は退屈だと感じます。1%がボットを書き始め、99%の楽しみを台無しにしたらどうなるでしょうか?しかし、最終的には、程度の問題です。ボッティングを完全に取り除くことはできませんが、損傷を最小限に抑えることができます。

アンダーカットボッター

ボットの本当にマイナスの影響の多くは、ボットの作者が自分たちの作品を商品化したことによるものです。これがあなたに当てはまる場合、あなたは単にボットと競争することができます。多くのリアルタイムベースのオンラインゲームには、タイムスキップと自動化(拡張ビルドキューなど)を可能にするプレミアム機能が既に備わっています。これらは、開発者が認可した公式ボットに相当します。これらがあり、適切に価格設定されている場合、プレイヤーはボットを購入する代わりにプレミアムを購入します。良いニュースは、あなたがAPIを担当しているため、自分のゲームの品質自動化を開発する上で常に強力な利点があるため、今回はボッターにとって負けの戦いです。

これは、アマチュアのボッターやあなたのプレミアムがお金に見合った価値がないと感じている人を排除するものではないので、このアプローチの有効性は状況によって異なります。

それらを手動で探す

上で言ったように、あなたがしていることは基本的にチューリングテストです。人間との相互作用は難しいチューリングテストの課題として有名であるため、それを活用してみることができます。

トップレベルのプレーヤーを手動で検査し、疑わしいものを見つけないか確認してください。あなたの想像力だけに制限された方法で時々それらをプローブして逃げることができるかもしれません。

ボットを確実に検出するアルゴリズムを記述することは困難ですが、人間がボットを見つける方法を学ぶことはそれほど難しくありません。多くのブラウザゲームがこの戦略を使用しており、かなり効果的だと思います。欠点は、常に多くの退屈な作業を行う必要があるか、ゲームマスターに定期的なボットパトロールを行う必要があることです。


4
この答えを選んだのは、技術的な詳細から離れて、1つ前の質問を見て最も考えているように見えるからです。Adam Davis 'を選択することについて長い間考えていました。「How to」に関する非常に良いアイデアが含まれているからです。
ピーター

1
@Alomvar役に立ったことがうれしいです。質問は非常に多くの票を得たので、あなたのプロフィールにあなたのゲームへのリンクを入れることもできます:)
スーパーベスト

2
うーん、トラビアンはまだ残っていますか?私は何年も前にプレイしましたが、ゲームプレイが基本的に「最高のソシオパスが勝つかもしれない」に要約できることに気付いたときに停止しました。
メイソンウィーラー

25

ボットに対する最善かつ唯一の効果的な防御は、プレイヤーが最初から自動化する必要性を感じないようにゲームを設計することです。プレイヤーが実際にスキルを必要としない単純なタスクを自動化する場合、ユーザーインターフェイスが不足しており、ユーザーが不足しているUI機能を代替していることを示しています。

  • あなたのゲームには、プレイヤーが何度も何度も同じアクションを実行してグラインドする繰り返しタスクが含まれていますか?

    ゲームのこれらの側面の繰り返しを少なくし、プレイとリプレイをより面白くしてください。

  • あなたのゲームでは、プレイヤーは夜中や仕事中など、都合の悪いときにアクションを実行する必要がありますか?

    注文をキューに入れる(「X1をビルドしてからX2、X3、リソースが利用可能になるとすぐに開始する」など)または事前に特定の時間にアクションをスケジュールする(ビルドXを3:22 AMに)ことができます。

  • あなたのゲームでは、プレイヤーは非常に短い時間内にイベントに取り組む必要がありますか?

    これらのアクションが自動的にトリガーされるようにゲームを構成できるようにします

    • 建物Xが破壊されたら、すぐに再構築します。
    • 誰かがリソースXをY未満のお金で提供したら、すぐにZユニットまで購入します。
    • 在庫がYユニットを超えたときにすべてのリソースXを自動販売しますが、ユニットあたりZマネー未満ではありません。

コミュニティを監視します。他の何かを自動化することに気付いたら、アイデアを盗み、コアゲームに自動化するオプションを追加します。


5
これは、あなたのゲームをより良くし、あなたのゲームが自分自身をボットのようにするリスクを減らす素晴らしい提案です。;-)ボットであることがゲームの優れたプレーヤーになる場合、ゲームにはより人間的な思考が含まれる必要があります。私はそれが唯一の効果的な防御であることに同意しませんが、それが全体的に最高であることに同意します。+1
ドロンツ

7
私はこの精神に同意しますが、残念なことに、ゲームを退屈にしないという前提は誤りです。10,000人のプレイヤーがメカニックXを愛しているが、10人が退屈でボットを作成し、10,000人の楽しさを台無しにしたらどうでしょうか?これがFPSのエイムボットで発生することです。類似の解決策は、照準の問題を少なくすることですが、多くのプレイヤーは照準スキルの完成を好みます。aimbotの必要性を感じるのはごく少数です。
スーパーベスト

1
私は本当にあなたの提案を愛し、私はより多くのゲームではなく、効率的に24/7の周りにするかを尋ねると、このような何かをwoukdたい
meneldal

@Superbest実際には、より重要であることを目指して設計することができますが、ボットを効果的にすることはまだ難しいソリューションを見ることができます彼は彼を攻撃するすべてのプレーヤーに十分な弾丸を発射することができないため、ボッター
マシューピグラム

2
これがまさにポイントです!あなたのゲームで可能な時間Xボットで効果的な簡単なワンクリックボタンがあれば、それを自分で書いてみんなに渡してください!-プレイヤーが事前に決めて、時間の準備ができたら何を構築すべきか...ゲームの楽しみは決定についてです!
ファルコ

23

あなたのゲームをジョニーオンザスポットの攻撃に対してそれほど脆弱にしないでください。

まず、1回の座りで1日に20分または1時間だけゲームをプレイするプレイヤーは、仕事でオープンにして1日16時間プレイするプレイヤーにとって大きな不利益にならないようにしてください。

これには、ゲームメカニクスの変更が必要になる場合があります-たとえば、プレイしていないときにいっぱいになり、プレイヤーがプレイできるときに多くのクイックムーブを実行できるようにするムーブの割り当てなど、一定の傾向を必要とするメカニズムではありません。

これにより、ボットメーカーはゲームに遅れずについていくことができ、アクションを実行するオートマトンを作成する必要はありません。

各アクションにサーバー情報を要求し、サーバーの応答を遅くします

プレイヤーがゲームをプレイするとき、彼らは彼らが動きをするために相互作用するUIを提示するページを要求します。非表示のフォーム要素など、実際にページを最初に要求したことを検証する要素を挿入できます。サーバーがユーザーのIDおよび最後に要求したページとともに保存する乱数。アクションが発生すると、サーバーはこのユーザーが同じ乱数を返したことを確認し、最後に表示されたページでアクションを実行しています。これは、ボットがすべてのアクションに対して2つのAPI呼び出しを行う必要があるだけでなく、通常のユーザーが複数のページを開いて順次高速アクションを実行できないことを意味します(これがデザインの問題である場合)。

2つのAPI呼び出しにより、ボットの速度を遅くすることができます。最終的には、疑わしいパターンが表示され、それらを検出できるようになります。サーバーが疑わしいパターンを検出すると、最初の呼び出しでのAPI応答を1秒遅延させる可能性があります。これはユーザーを困らせますが、実際にはボットの速度を低下させます。さらに、2番目のリクエストが「速すぎる」場合(ゲームの意味が何であれ)、それを拒否するか、ゲーム内エラーまたは再送信をリクエストする理由でページをリロードできます。「すぐに構築することはできません。時間をかけてください。」例えば。

ユーザーの声に耳を傾けると、ユーザーが何を使っているのか、何がユーザーを悩ませているのかがわかります。

動きと行動を考える必要があります

ゲームが単純なボタンクリッカーである場合、ボットについてはあまり実行できません。ゲーム自体がキャプチャのようなテストを実行するように、ゲームを再設計することを検討してください。

ゲームについて何も知らない、私は多くを示唆することはできません。建物の設置場所の選択が必要な場合は、機能しない明らかな配置があっても、ユーザーがどこでも選択できるようにインターフェイスを設計します。または、配置を成功させるために、ユーザーは向きを正しく一致させる必要があります。アクションの選択が含まれる場合は、アクションの長いリストを含めます。その一部は特定の状況では意味がありません。

ランダムな非常に単純なボットチェックを含める

「よろしいですか?」というダイアログを時々追加します 例えば。質問と言葉遣いを頻繁に変更し、ボットのスポットチェックとして使用します。

APIを変更する

APIを頻繁に変更し、正しい変数とそれらがWebサーバーにどのように返されるかについて、実際にWebページを解析するように強制します。テンプレートを使用してインターフェイスを開発する場合、各変数名にソルトハッシュまたはランダム変数ジェネレーターを使用するコードでテンプレートを置き換えます。次に、JavaScriptを使用して応答をエンコードし、そのエンコードを頻繁に変更します。おそらくこれをすべて行うソフトウェアを作成し、常にすべてをランダムにするか、または時々変更する静的なテンプレートを作成することができます。


そのブラウザゲーム、APIの変更、およびすべてが問題にならない場合。クライアントのすべてのテキストも毎回変更することを望まない限り(プレイヤーにとっては恐ろしいことです。UIは常に変更されます.. ugh ..)、テキストが変更されない場合、テキストを見つけるのは非常に簡単です。jQueryだけでも。トラビアンをプレイして攻撃しようとしたとき、膨大な数のタブを開き、すべての情報を準備し、時間が経過したら、送信をクリックしてすべてをスクロールしました。それほど高速ではありませんが、APIの遅延が私を苦しめたでしょう。
カツ

1
@Katuゲームによっては、多くのUI要素が既に画像になっている場合があります。画像の名前を変更したり、画像ファイルのハッシュをわずかに変更したりすると、さらに難しくなります。少なくとも、何を処理するかを把握するために、すべての要素をダウンロードするように強制します。彼らはjavascriptを使用して画面上の特定の位置にある要素を見つけ、それをアクティブにしようとしますが、それでもjavascriptクライアントが要素のクリックではなくマウスのクリック位置を報告することでそれを難し​​くすることができます。
アダムデイビス

@Katu最終的には正しい、対処できますが、必要な労力を十分に大きくすれば、努力に進んで行く人の数を減らすことができます。
アダムデイビス

2
「移動割り当て」の問題は、すべてのプレーヤーに1日30分しかプレイできないこと、またはそれを使用するのに時間がかかることを告げていることです。マイクロトランザクションでより多く購入できるようにします。
Random832

建物の配置と向きに同意します!同時に、正当なユーザーにとってはプラスであり、ボットにとってはマイナスです。
miva2

13

それらを止めることはできません。しかし、ボットの作成と更新に多くの時間を費やさなければならないため、彼らの人生を悲惨なものにすることができます。ユーザーが有効かどうかを確認するために必要なものはすべて使用する必要があります。

  • 要求ヘッダーを確認し、無効な値を持つ要求を拒否します。カスタムヘッダーを設定するか、既存のユーザーエージェントのように確認します。確かに簡単に克服できますが、確認するのはさらに簡単です。ボットライターが未経験の場合、それについて考えるのに時間がかかるかもしれません!あなたの仕事は、彼らの多くを強制的にrightめることですか?
  • おそらく、何らかの機能を使用してクライアント側で生成された、何らかの種類のハッシュ署名またはリクエスト内の何かがあります。さて、それを変え続けてください!キャッシュ不可の個別のスクリプトとして作成し、ランダムな間隔で変更します。ハッシュプロセスにランダムソルトを追加して、それらのいくつかを作成するか、オンザフライで編集します。繰り返しますが、簡単に克服できますが、これにより、彼らはあなたの機能に目を向けるようになります。また、ユーザーを最新の状態に保つために、一定の展開パイプラインが必要になる場合があります。そうでない場合、ボットは誤ってハッシュされたリクエストの送信を開始します。頻繁に実行しているユーザーを禁止することもできます。とにかく有効なユーザーはクライアントを動き回るので、時々ハッシュ関数を再取得します。サーバー側も更新することを忘れないでください(スクリプトベースのバックエンドが本当に役立ちます)。
  • リソースの使用効率を追跡します。何かが手頃な価格になった後、即座に費やされる場合、または新しいレイドが最後の24時間365日から1〜2秒以内に常に送信される場合は、ハードコアプレーヤーまたはボットを扱っています。あなたはそのような人にキャプチャを要求し、彼を強制的にログアウトさせます。彼がログアウトした後もリクエストを続けている場合(ボットの記述が不十分!)、それはボットです。彼が成功せずに複数回ログインしようとした場合、彼はおそらくボットです。再ログに数時間かかる場合、彼はボットである可能性があります(この時点でボットが人間の支援を要求し、所有者が寝ている可能性があります)。
  • IP。これはボットセリングを排除するかもしれません。誰かが$$$を念頭に置いてボットを書く場合、ソースを共有したくないかもしれません。代わりにボットタイムを販売します。貪欲であれば、単一/少数のIPを持つ単一のマシンを使用する可能性があります。つまり、多くのユーザーがIPの共有を開始します。同じことはネットワークを共有している人にも当てはまるため、これは危険です。特定のIPで以前のチェックのいずれかが成功したかどうかをチェックし、正当なユーザーグループかボットの軍団かを手動で決定する必要があります。

5
これらのアイデアは賢いですが、簡単に敗北するだけでなく、ゲームでうまくやることをあまり気にしなくても、敗北するのはとても楽しいように思えるので、ボットを書くように誘惑されます。
スーパーベスト

1
ほとんどのポイントは役に立たない。あなたは後ろ向きに考えています。すべてのハッシュ、ヘッダーなどで何をしても、「私の居酒屋のアップグレードを購入するためのリンク」が機能する必要がありますか?今、私はボットを作成し、それはそのリンクを見つけ、それは2時間ごとにそれをクリックします。私はあなたがその背後にどんな魔法をかけるかは気にしませんが、私のボットはユーザーがそうするようにそれをクリックします。リソースの使用量は優れていますが、多くの誤検知を引き起こす可能性があり、人間の作業が必要です。IP ..たとえば、トラビアンボット(非フリー)は、IPからすべてを送信するカスタムWebブラウザーです。
カツ

@Superbestはい、このセキュリティを一度破るのは簡単です。ただし、少し変更された場合は、それらの変更を追跡してボットを更新する必要があります。それは、ボットの作成により多くの時間を費やすことを意味します。無意味。
ポラン

@Katuあなたは正しいです、私のメソッドはブラウザへのプラグインであり、クライアントをクリックするだけのボットを停止しません。しかし、外部のものには問題があるかもしれません。ハッシュはタイムスタンプと半秘密鍵を知っている必要があるため、リンクを見つけてリプレイ攻撃するだけでは機能しません。ハッシュ関数は時々変更されるため、javascriptインタープリターがない場合は、ボットを常に書き換えてそれらの変更を含める必要があります。これらのメソッドは、人々がボットを書くのを止めません。一定のメンテナンスが必要なだけなので、ボットを使用してもそれほど時間を節約できません:)。
ポラン

2
@Polanそもそもボットを書くのが楽しいのなら、問題ありません。
スーパーベスト

8

一般に、ボットと人間を完全に自動的に区別するのは難しく、何らかの形の人間が支援する決定プロセスが最適に機能します。

私がすること:ユーザーがおそらくボットであることを示唆するいくつかのヒューリスティックを定義します-多くのアクションを実行し、24時間365日を行います...そしてこれらのヒューリスティックが特定のしきい値を超えた場合、侵襲的なチェックを行います。

プレーヤーのアクティビティを手動でスキャンして、問題がないかどうかを確認できます。または、次にユーザーがオンラインになったときにキャプチャを行います。または(さらに強力な)チャットメッセージを送信して、ボットである疑いがあることを説明し、彼がボットではないことを証明するために人間に似た何かを返してもらいたい(あなたの好きな映画は?) ...-あなたはそれらの束を持つことができます)。彼がまったく応答しない場合、彼はおそらくボットです。彼が応答した場合、人間らしさとロボットの禁止の答えを手動で確認します。ヒューリスティックが妥当であれば、少数のユーザーのみが質問され、スキャンする応答の量は少なくなります。そして、あなたが質問のセットを非公開にして変化させ続けると、誰かがSkyNetを発明しない限り、ロボットを準備する方法はありません。


8
スカイネットが最初に自意識を持つようになったとき、誰もがそれが世界の軍事力を引き継ごうとするだろうと思っていました。彼らの唯一の目標は、お気に入りのMMOの経済を支配することであると彼らは知りませんでした。したがって、限られた害しか及ぼさない場所に彼らの攻撃的な野心を向けることによって、偉大な人間とAIの戦争は防がれました。
ダンブライアント

1
メッセージの問題は、ボッターが毎日プレイするために簡単にログインし、同じアカウントでボットを実行して忙しい仕事を処理できることです。ボットはメッセージを無視し、人間は翌朝に返信します。また、深夜に送信されたメッセージに数時間遅すぎる返信をしたプレイヤーを罰することは困難です。
スーパーベスト

@Superbest人間が眠っている間にボットがプレイしようとする場合、ボットであるというかなり良い兆候があります。質問をする際の問題は、プレーヤーが英語を話さない場合はどうなりますか?
ローレンペクテル

@LorenPechtelさて、あなたは彼らがいつ寝ているかをどのように知るつもりですか?非常に珍しい睡眠スケジュールを持っている人はたくさんいます。彼らが答えなかったからといって、それがボットであることを意味するわけではありません。多分彼らはそのとき答えたくなかったので、後でそれをすることに決めました。言語に関しては、おそらくプレイヤーはゲームの言語を話しますが、そうでなければルールやToSにどのように同意しますか?会話でボットと外国人を区別するのが難しいというわけではありません。
スーパーベスト

@Superbest私の印象は、質問が未解決のままである間、ゲームが継続しないということでした。無駄なコマンドを送信し続ける場合、ボットがそれを実行していることは明らかです。
ローレンペクテル

8

ボッターを受け入れます。コーダーがゲームの自動化を試すのに最適な安らかなAPIを構築しました。自動化されているためにボットが人間のプレーヤーよりも有利にならないようにゲームプレイを設計します-マシンの実行速度などの利点を排除します。可能な場合、ボットが人間のプレーヤーと同じ収益を提供するようにゲームを設計します。または、少なくともより多くの人間のプレーヤーを引き付けるためにより豊かな環境を提供します。

問題は、なぜ人々があなたのゲームのためにボットを作成するのか、そして彼らは特権のためにお金を払うのか?


4

私はneccessarilyソフト科学の答えに反対しませんが、そこにあるあなたがすることができる技術的なもの botters、ちょうど彼らのために困難に生活をすることにいくつかのことを検出することが。

  • ボットを使用している疑いがある程度でアカウントを格付けします。これは、他のいくつかの手法に取り入れられ、正当なユーザーをあなたの怒りから保護します。

  • セッションCookieキーをローテーションします。これにより、ボットはそのCookieを保持しますが、ボッターがブラウザーとボットの間でCookieを共有するのが非常に難しくなります(開発とテスト中に非常に便利です)。

  • 特定のアクションのレート制限。実際に何かできる限り早く実行し、これらのボットがそれを行う速度を監視します。また、実行中のログを保持し、標準偏差を計算する価値があるかもしれません。誰かが10秒ごとに何かをしているだけでも、10秒ごとに正確にやっているなら、おそらくボットです。評価を変更してログアウトします。

  • ボットの疑いがあるアカウントでのログインをより困難にします。CAPTCHAや質問、その他のやむを得ないことがあると、ボッターになる人が物事を自動的にスクリプト化するのが難しくなります。

  • マウス/ページの動きを監視します。これは最近のJavaScriptでかなり簡単ですが、ボットはマウスの動きを有機的に持ちません。「クリック」の間に何も得られない場合、それらはモバイルであるか、ボットである可能性があります。調査します。ただし、ログに記録するデータは大量です。したがって、前の手順を既にトリガーしたアカウント用にこれを予約することをお勧めします。

  • 行動、IP、アクションシーケンス、アクションケイデンス別にアカウントをリンクするツールを構築します。人を禁止する場合は、人の不正行為を手動で確認するツールがあることを確認してください。

  • URLスキーマ、CSRF変数などをローテーションして、頻繁に実行します。これは大きな一歩であり、おそらくこれまでの価値よりも事前の作業が必要になりますが、少なくとも、突然機能しなくなったアカウント(または古いURLをたたき続け、古い変数名を送信し続ける-記録してください!)ボットのインデックスレベルを上げる必要があります。


3

ボットをゲームの不可欠な部分にすることを検討しましたか?誰もがそれらを作成するように奨励されている場合、ボットが他のすべての人のためにゲームを台無しにすることは困難です。スクリプトのサポートを追加すると、ゲームのダイナミクスが突然手動のリソース管理戦略からボット設計戦略に変わります。


3

別のボット専用サーバーを作成します。リーダーボードを作成し、受賞者を祝います。これが生成するデータを見てください。動作プロファイルがボットのように見える通常のサーバーからユーザーを禁止します。


2

あなたが何をするにしても、実際のプレーヤーにとってそれが迷惑にならないようにしてください!私が見た多くの応答(ページの結果が遅い、入力を速くするために複数のページを開くことを許可しないなど)は、正当なプレーヤーが物事を高速に実行するのを防ぎ、不必要にイライラさせます。

最も簡単な方法は、ソーシャルエンジニアリングを問題に適用することです。1)TOSに明示的なNO-BOT句を追加し、ボットアクティビティを検出するとハイスコアリストからプレーヤーが削除されることを追加します。 「添付されているので、人々は彼らに不満を感じません。あなたがその道を行くなら、人々が詐欺師の記録を隠すことを許可してください)。

2)ボットのような動作(たとえば、定期的にサーバーにpingを送信する、または数時間連続して完璧に近いタイミング)を確認し、そうであれば、アカウントを「ボットモード」にします-時々キャプチャを表示します。これらが無視されても、プレーヤーがゲームを積極的にプレイし続ける場合、プレーヤーを「ボット」としてマークし、ランキングから除外します。それらがアドレス指定されている場合、「パワープレーヤー」としてマークし、ボットリストから削除します。

このようにして、大多数のプレイヤーは影響を受けず、筋金入りのゲーマーは短期間影響を受け、ボットは他の人のために「ゲームを台無しにする」ことはありません。


パワープレーヤーがボットを決めた場合はどうなりますか?プレイヤーに何かを「マーク」することは理にかなっているとは思いませんが、非常に悪用可能です。数日間だけたくさんプレイし、旗を手に入れたらボットを発射して捕まらない
ダンパントリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.