データをDjangoデータベースに統合する必要がない限り、トラフィックを別のプロバイダーに「アウトソーシング」することを強くお勧めします。私はGoogleAnalyticsにとても満足しています。
それができない場合、誰かがシステムを悪用するのを防ぐためにできることはほとんどありません。IPアドレスに基づいて制限することもできますが、もちろん、多くのユニークな訪問者がIPを共有するという問題に遭遇します(たとえば、大学、組織、または職場を介して)。クッキーは非常に簡単にクリアできるので、そのルートに行けばゲームはとても簡単です。
取り除くのが難しいのは、appcacheに保存されているファイルです。したがって、最新のブラウザーで機能する可能性のある解決策の1つは、ファイルをappcacheに保存することです。初めてロードされたときはユニーク訪問としてカウントされ、その後はキャッシュされているため、再度カウントされることはありません。
もちろん、これには下位互換性が必要であると思われるため、もちろん、カールなど、システムのゲームに使用される可能性が最も高い種類のツールをそのまま使用できます。
ブラウザに似ていないユーザーエージェントを確実にブロックできます。これにより、一部のゲーマーがブラウザエージェント文字列のなりすましについて知らない場合は少し難しくなります(ほとんどの場合、すぐに学習します)。
本当に、最善の解決策は、ページへの訪問の結果はどうなるかということかもしれません。たとえば、商品の販売である場合は、ページビューが最も多い人に賞を与えないでください。ヒット数が最も多い人に賞を授与します。または、誰かがそのページで取る可能性のある時間のかかるアクション。
考えられる解決策:
JavaScriptが無効になっているユーザーを無視する場合は、ページにアクセスしてから特定の時間(たとえば、1分間)そのページにとどまるユーザーのみをカウントするように選択できます。一定期間後、サーバーにAjaxリクエストを返します。したがって、Cookieを変更して一度に複数のタブをロードしてゲームをしようとすると、そのページに十分長くいることを登録するために同じCookieが必要になるため、機能しません。私は実際にこれがうまくいくかもしれないと思います。私はそれをゲームする方法を正直に見ることができません。基本的にサーバー側では、一意のページごとにキーで呼び出さstay_until
れた辞書を保存し、1分ほど後にサーバーへのAjaxコールバックを実行します。request.session
の値がstay_until[page_id]
が現在の時刻以下である場合、それらはアクティブユーザーです。そうでない場合、そうではありません。これは、20人のユニークな訪問者を生み出すのに少なくとも20分かかることを意味します。そして、あなたが消費した時間よりも価値のある見返りを得る限り、それは強い阻害要因になります。
さらに明確にします。noscript
タグのページの下部に、追跡プロセスをレイアウトするページに「アクセスはカウントされませんでした。カウントされるJavaScriptをオンにしてください」と入力します。