1

ご存知のように、Reddit では、スパマーとの問題を回避するために、リンクごとに IP アドレスごとに約 1 票を許可しています。私は投票機能を持つスリムなアプリケーションに取り組んでいますが、率直に言って、Cookie やネイティブ セッションの経験がないため、このようなシステムを実装する方法がわかりません。また、私の関数のほとんどには、(例) localhost:8888/myapp/voteup/item-to-vote のようなパスがあります。

4

2 に答える 2

0

私のサイトでは、メンバーが 24 時間ごとに 1 から 5 の間でコードを評価できるようにしています。ハッシュ コードを追加し、ajax を使用して投票を送信することで、スパムを阻止します。2012 年 6 月に追加して以来、スパム投票はありません。以前はボットから 1 日あたり約 40 票を獲得していましたが、現在はそれがなくなりました。

たとえば、これは私のリンクがどのように見えるかです:
http://phpsnips.com/process/vote.php?id=43&vote=3&enc=a560e4320af4e13e4170947cd42de18b

これにより、enc はページが読み込まれるたびに異なり、投票が送信されると再び変更されます。

私の歩み

  • セッションを使用して md5 ハッシュを作成する
  • リンクまたはフォームの非表示フィールドにハッシュを配置します
  • 送信ページのテストで、セッションがリンク/フィールドと一致することを確認します
  • ハッシュをリセットする
  • 元のページにリダイレクトします (ajax を使用していない場合)
于 2012-12-29T23:59:09.553 に答える
0

自動化されたボットと戦う最善の方法は、それらを混乱させることです。一部のテキスト入力フィールドを非表示にし、名前を逆にします (名前フィールド、電子メール、サイト、名前など)。

外部からのフォーム送信を軽減するために、Javascript のみの送信を使用することをお勧めします。CSRF の使用も同様に役立ちます。Cookie や HTTP カスタム ヘッダーなどの使用を強制して、ブラウザのみが再現できるようにし、自動化された手段を使用しないようにします。

論理的な質問も役に立ちます。たとえば、「1 + 1 はいくらか、書き留めてください」(答えは 2 で、ランダムにする必要があります)、または「W で始まる曜日は何ですか」などです。

于 2012-12-29T23:48:42.417 に答える