0

私が尋ねようとしている質問の例が何百もあることは知っています。しかし、それらのどれも私のために指名手配のように働いていませんでした。

だから、コメント/レビューを追加できるテキストエリアがあります。しかし、コメント ボックスにはスパムが寄せられ続けています。

正規表現はスパマーを締め出す最も効率的な方法かもしれませんが、私は正規表現が苦手です。

スパムを締め出す他の方法はありますか?

編集: スパマーは次のような投稿を続けています。

ブリアナ 仕事を探している ロリータ写真 彼女が鏡の前でセックスしていたらもっと良かったのに!自分がf#@$を獲得しているのを見るのはもっとセクシーです。それについて考えているだけで興奮している
Preteens Nn Models

(ネタバレ、職場で人々の問題を引き起こさないように軽く検閲されています)

だから私は文字列のハイパーリンクごとにブロックしたい

4

4 に答える 4

1

スパムを取り除くには、さまざまな方法があります。

  1. Captcha - たとえばReCaptchaですが、最近では約 1000 個の書き換えられた Captcha を 3$ 未満で購入できます。
  2. 最もよく知られている事実について、あなたの言語で質問します。ユーザーが知っている事実について質問できますが、スパマーは知りません。
  3. アンチスパム フィルタ- たとえば、Sblam! Akismetまたはその他のスパム対策サービス。私はそれがあなたにとって最もうまくいくと思います。
于 2013-02-17T11:19:09.653 に答える
1

多くの Captcha がボットで解決できるようになりました。Captcha を回避しようとしている場合は、簡単なテキスト トラップを使用することをお勧めします。

テキスト領域の下に、次のような質問を追加します。

「一週間は何日ですか?」

次に、別のテキスト ボックスを追加し、これを比較して次のように言います。

セブンとかセブンとか。

テストが失敗した場合は、エントリを拒否します...

時間の経過とともに質問を変更したり、さまざまな質問のリストを作成したりする必要がある場合もありますが、これは単純で簡単に実装できる方法です。

于 2013-02-17T11:20:09.533 に答える
1

ここでの答えは適切ですが、ボットをだますことが最初のステップとして適切な場合もあります。

大多数のボットは、ソース コードを読み取るだけで、見つけたすべての入力フィールドにゴミを入力し、リクエストを送信して、それが機能することを願っています。彼らはかなり愚かなので、次のようなものでほとんどのボットをだますことができます。

<p style="display:none">Screen readers: Use the next textarea (the first is used to confuse spam bots).</p>
<textarea name="comment" style="display:none"></textarea>
<textarea name="real_comment"></textarea>

そして、あなたのスクリプトで:

if (isset($_POST['comment']) && strlen($_POST['comment']) > 0) {
    die('Bots begone!');
}
$comment = $_POST['real_comment'];

つまり、HTML にダミーtextareaを入れて、CSS で非表示にし、ボットが埋めてくれるのを待ちます。

于 2013-02-17T11:51:04.507 に答える
0

必要なことを行う最も簡単な方法は、文字列を検索することですhttp://

次の if ステートメントでは、最大 3 つのリンクを許可します。$text

if (substr_count($text,"http://") > 3)

しかし、それは実際には十分なチェックではありません。リンクがまったく含まれていないスパムが大量にあるためです。

次に、「悪い言葉」を含むブラック リストを作成する必要があります。

    $lower = strtolower($text);
    foreach ($blockword as $word) {
            if (strpos($lower, strtolower($word))>0) {
                    //handle spam here..
            }
    }

結局のところ、増え続ける単語リストを維持しなければならず、それでも大量のスパムを削除しなければなりません..

したがって、セッションに保存され、この値が正しく送信されているかどうかを確認するランダムな値を持つ非表示のフィールドを追加するオプションがあります

$_SESSION["random_secret"] = //create random string..

そして後でチェック

if ($_POST["secret"] == $_SESSION["random_secret"])

このチェックにより、多くの自動化されたスパムを取り除くことができます (ただし、すべてではありません)。

結局のところ、あなたはキャプチャで終わった

于 2013-02-17T11:20:33.203 に答える