【1】では相互リンクお願いスパムについて、その対応・心構え、そしてSEOでの効果について解説しました。
この【2】では、具体的な撃退法についてご紹介します。
(中級者以上)相互リンクお願いスパムの撃退法
こうした相互リンクお願いスパム、確認するのも面倒なのでそもそも送れないようにする方法はないかということになりますが、結論から言うと万全の解決法はなく、次善策です。
ここではWordPressの問い合わせフォームプラグイン「Contact Form 7(CF7)」利用を前提としてご紹介します。
フォームにバリデーションを設定。「貴サイト」「貴社」「相互リンク」といったワードが問い合わせ内容に入っていた場合、送信不可にするという方法です。
万能ではないし、必ず事前にバックアップを!
言わずもがなですが、「貴サイト」「貴社」「相互リンク」といったワードの入った正常な問い合わせも送信できなくなってしまいます。ケースによっては採用できない方法です。
また「function.php」に変更を加える方法です。サイトに不具合が発生した場合に備え、設定前に同ページのバックアップを取り、FTPなどによる復旧手段を確保した上で行う必要があります。
※この方法の実行は自己責任でお願いします。この方法を試行・採用して発生したいかなる損害も当方は補償しません。
function.phpへの実装コード
function.phpに、下記コードを追記します。
add_filter('wpcf7_validate_textarea', 'custom_wpcf7_spam_word_validation', 20, 2);
function custom_wpcf7_spam_word_validation($result, $tag) {
// フォームから送信された値を取得
$name = $tag->name;
$value = isset($_POST[$name]) ? trim($_POST[$name]) : '';
if ($value !== '') {
// 遮断したいキーワード
$spam_keywords = array('貴サイト', '貴社', '相互リンク', '相互紹介');
foreach ($spam_keywords as $keyword) {
if (strpos($value, $keyword) !== false) {
// キーワードが含まれていた場合、エラーを返す
$result->invalidate($tag, '入力内容に不適切なワードが含まれています。');
break;
}
}
}
return $result;
}
- 複数行テキストエリア
wpcf7_validate_textarea(よくあるケースとして問い合わせ本文)で、キーワードがある場合検知 - 標準のチェックの後に実行されるよう
20, 2で優先順位を下げる - 任意のワードを設定。ここでは
'貴サイト', '貴社', '相互リンク'
ただし万能ではない
繰り返しますが、この手法は万能ではありません。
まっとうな問い合わせにも適用
上記のケースの場合、問い合わせ本文に「貴サイト」「貴社」「相互リンク」のワードが含まれている場合も適用されます。
問い合わせ内容が正当なものであっても適用されてしまいます。
(まとめ)リソースを無駄に割かないための苦肉の策
相互リンクお願い問い合わせへの対応は、それだけリソースを削がれます。本来の問い合わせ対応やサイト運営において、このスパム対応は非生産的な作業です。
一方、目に余る頻度の場合はこの手法の採用を検討に値するかもしれませんが、一般的なワードで弾いてしまうバリデーションのため、最適解と断言できないのが苦しいところです。
機械的にスルーする、というのが最良の選択かもしれません。
以上、相互リンクお願いスパムの撃退法でした。



