3

私はすでに最も人気のある Django ヒット カウンター ソリューションを見てきましたが、どれも更新ボタンのスパムの問題を解決していないようです。

すべての訪問者の IP をログに記録して、更新ボタンのスパム行為(または訪問者のために迅速で汚いスクリプトを作成すること)によってページビュー数を人為的に増加させないようにする必要がありますか?

詳しくは

したがって、今すぐ、次の数行の Python コードを使用してビュー数を増やすことができます。これは非常に小さいため、実際にスクリプトを作成する必要はありません。インタラクティブなセッションに入力するだけで済みます。

from urllib import urlopen

num_of_times_to_hit_page = 100
url_of_the_page = "http://example.com"

for x in range(num_of_times_to_hit_page):
    urlopen(url_of_the_page)

おそらく使用するソリューション

私にとって、すべてのページビューでデータベースに大量の書き込みを行う必要がある場合、それはかなり大まかな状況ですが、仕方がないと思います. 複数のユーザーが人為的にビュー数を増やしているため、IP ロギングを実装します。彼らが悪い人でも悪いユーザーでもありません。

キャッシングで問題を解決することについての答えを参照してください...まずそのルートを追求します。結果を更新します。

参考までに、スタック オーバーフローは Cookie を使用しているようです (自分のビュー カウントを増やすことはできませんが、別のブラウザーでサイトにアクセスすると増加しました)。

メリットが多すぎると思うし、この種の「ごまかし」は今のところ簡単すぎる。

みんな助けてくれてありがとう!

4

3 に答える 3

8

人為的にカウントを膨らませるのを防ぐ確実な方法はありません。むしろ、彼らがそうするのをより困難にするためにあなたが時間を費やしても構わないと思っている程度があります:

  • まったくない (更新ボタンをクリックする)
  • Cookie を設定し、Cookie が既に存在するかどうかを確認します (Cookie をクリアします)。
  • ログの IP アドレス (毎回異なる IP を偽造する)
  • 返信元のメールでサインインを要求する (複数のメール アカウントにサインアップする)

したがって、最終的には、ユーザーがシステムを悪用するのを防ぐために必要な労力のレベルを選択する必要があります。

于 2009-07-31T13:37:25.680 に答える
8

おそらく、IP をログに記録するのが最も安全です。完璧ではありませんが、Cookie よりも優れており、サインアップを要求するよりもユーザーの煩わしさが軽減されます。とはいえ、これらをDBに保存することを気にしないことをお勧めします。代わりに、Django の低レベル キャッシング フレームワークを使用してください。キーは ip で、値は単純なブール値です。ファイルベースのキャッシュでもかなり高速ですが、大量のトラフィックが予想される場合は、キャッシュ バックエンドとして memchached を使用してください。

このようなものが動作するはずです:

ip = request.META['REMOTE_ADDR']
has_voted = cache.get(ip)
if not has_voted:
    cache.set(ip, True)
    #code to save vote goes here
于 2009-08-05T03:40:23.043 に答える
1

アクセスしたときに Cookie を送信し、その Cookie を確認することができます。ゲームはまだできますが、少し難しいです。

于 2009-07-31T13:36:20.750 に答える