web-dev-qa-db-ja.com

小規模な商用サイトで小規模のコメントスパムを処理する方法

私が過去に中小企業向けのサイトをいくつか構築したとき、私は歴史的にアンチスパム対策なしでできるようになりました。私は今、月に5〜20のスパムコメントを受け取るサイトをいくつか持っています。私はそれが設定されているので、すべてのコメントはモデレートされなければなりません、それは本当に大したことではありません。これらのコメントの内容がしばしばバイアグラ、他の薬、ロシアのポルノサイトなどに関するものであることを除いて、私はそれを十分にいいと思うでしょう、そして私はそれが私のクライアントのメールボックスやモデレーションキューなどに現れるのをひどく反映しているように感じます..

Akismetは間違いなくこのようなことの多くを手助けすることができました - しかし、私は値段を正当化することはできません。

私は過度のプラグインや肥大化を避けようとしています、そしてこれには単純な解決策があるべきだと感じます - 非常に無駄のないプラグインかどこかのコードスニペットのどちらかです。

何か案は?

5
Zach Lysobey

アンチスパム蜂 を使用してください。それは無料で、家に電話する必要はありません、そしてあなたがコメントフォームをあまり変更しない限り(あなたはそれをテストしなければなりません)驚くほどうまくいきます。
スパムコメントのメール通知を無効にしてください。 :)

5
fuxia

私はあなたのセットアップ、リソース、そして/または知識がよくわからない。しかし、プラグインを使用しなくても試すことができるいくつかのことがあります。

テーマのfunctions.phpファイルに次のいずれかを配置することで、ナンスを追加してみることができます。私はこれらを思い付かなかった、私がそれをどこで手に入れたか覚えていることができれば私は作者に名誉を与えるであろう。また、なんらかの理由でそれがいつもうまくいくわけではなく、私の経験から正当な解説者を防ぐことができます(たぶん他の人がコメントできる)。しかし、ここでそれは:

// Add a nonce to the comment form for spam protection.
function add_comment_form_nonce_field( ){
  wp_nonce_field( 'anti_spam_nonce_field' );
}
add_action( 'comment_form', 'add_comment_form_nonce_field' );

function check_comment_form_nonce_field(){
  if( !wp_verify_nonce( $_REQUEST['_wpnonce'], 'anti_spam_nonce_field') )
    die('Security check failed');
}
add_action( 'pre_comment_on_post', 'check_comment_form_nonce_field');

これは別の提案です:

// Add a nonce to the comment form for spam protection.
function wp_comment_check_hidden_field() {
        $user = wp_get_current_user();
        if ( !isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'],   "comment_form_{$comment_post_ID}") ) {
                do_action('comment_nonce_failed', $comment_post_ID);
                wp_die( __('Sorry, automated comments are not accepted.') );
        }
}
add_action('pre_comment_on_post', 'wp_comment_check_hidden_field');

function wp_comment_add_hidden_field() {
        wp_nonce_field("comment_form_{$post_id}", '_wpnonce', false);
}
add_action('comment_form', 'wp_comment_add_hidden_field');

最近私はボットを止める別の方法を発見しました。あなたはPHPセッションクッキーを作成しなければならないでしょう。これはphp.iniや.htaccess変数(php_value)を通して簡単にできます。ほとんどのホストはどちらか一方を提供します。

http://php.net/manual/en/session.configuration.php

あなたのサイトがセッションクッキーを作成することを確認したら、あなたのルートの.htaccessファイルにこれまたは類似のものを入れてください。

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|register)\.php http://example\.com [R=301,L,NS]

Exmaple.comをあなたのドメインに置き換えます。また、あなたのWordPressの設定やバージョンによっては、wp-register.phpをインクルードする必要はないかもしれません(私は、ボットがこれらのどちらにも当たらないように、wp-login.phpとwp-register.phpの両方を含めました)。 )これは、スパムボットが通常は使用しない2つのことをブロックしますが、通常の訪問者はすべきではありません(あるいは空白のユーザーエージェントの場合はボットがします)。あなたがヨーロッパにいるならば、私は彼らのクッキーの法則に精通していないのであなたが問題なくこれを適用できるかどうかわからないので、あなたはHTTP_COOKIE条件を取り除く必要があるかもしれません。

また、あなたは特定の単語を心配しているので、あなたはWordPressの組み込みコメントブラックリストを使ってみることもできます。

http://codex.wordpress.org/Combating_Comment_Spam#Comment_Blacklist

しかし、あなたはそこに置く言葉に注意する必要があります。

1
MickeyRoush

私と他の多くの人、他の人のために働くプラグインコンボ:Akismet + クッキーコメント用 +(オプション) Impostercide

最良の方法は選択肢がないため、Akismetに代わるものを探しているのであれば、どれもスパムに対する効果がないと感じるかもしれません。しかし、次のいずれかを試すことができます。

注:コメント用クッキープラグインを使用している場合は、次の点に注意してください。( なぜ ?)

  • あなたのウェブサイトがwww.example.comから提供されている場合、あなたの静的コンテンツは別のサブドメインから提供されます。そしてこれをあなたのwp-config.phpに追加してwww.example.comをクッキードメインとして設定してください:

    define('COOKIE_DOMAIN', 'www.example.com');
    
  • webサイトがexample.comから配信されている場合、静的コンテンツは別のドメインまたは別のドメインのサブドメインから配信されます。あなたのウェブサイトがwww.example.comから提供されている場合も同じことができます。

PS:私があなただったら、コメントのためのクッキーを有効にして、プラグインだけでどのように仕事ができるのか見てみたい。すべてのスパムボットをブロックします。

1
its_me