5

サーバーとしてApache2を使用してdjango Webサイトを作成しています。私の Web サイト (特にすべてのページ) への一意の訪問者数を完全な証明方法で決定する方法が必要です。残念ながら、ユーザーは追跡システムを「ゲーム」しようとする高いインセンティブを持っているので、私はそれを完全に証明しようとしています.

これを行う方法はありますか?

現在、IP と Cookie を使用して一意の訪問者を特定しようとしていますが、このシステムはヘッドレス ブラウザーで簡単にだまされてしまいます。

4

3 に答える 3

4

データを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をオンにしてください」と入力します。

于 2012-03-14T15:19:34.113 に答える
2

HTMLリクエストはステートレスであり、クライアント側でのユーザーの動作を制御できないため、防弾の方法はありません。

于 2012-03-14T11:47:26.723 に答える
0

「ユニークな」訪問者を簡単に追跡できるようにする唯一の方法は、ログインなどの制御された要素に依存させることです。それ以外は完全に正確である可能性があり、完全に正確であるとは言えません。

于 2012-03-14T14:38:06.947 に答える