私のWordPressブログサイトは、以前から正確でない閲覧数に悩まされてきました。主な原因は、さまざまなクローラーや悪意のあるボット(Bad Bots)が閲覧数に含まれてしまうことです。最近、これらの虚増したクリック数を解消または減らすために、いくつかの方法を試してみました。
主な対策は2つあります。
- 閲覧数カウント用のスクリプトを修正し、クローラーを除外する
- Bad Botsの閲覧を拒否するプラグインを導入し、悪質なアクセスを遮断する
1. 閲覧数カウントプラグインの変更
私のサイトでは長らく Daily Top 10 Posts プラグインを使用してきましたが、多少のカスタマイズを加えてもクローラーの訪問を除外できませんでした。そこで最近、より新しい構造の Page Views Count プラグインに置き換えました。クローラーを排除するため、PHPファイルを2つ修正しました。どちらも閲覧数を更新する前にリクエストがクローラーかどうかを判定する処理を追加しています。
public static function pvc_is_bot() {
// ログイン中のユーザーは閲覧数に含めない
if ( is_user_logged_in() ) {
return true;
}
// よく知られたクローラー一覧
$bots = array(
// 検索エンジン系
'Googlebot',
'Bingbot',
'Slurp', // Yahoo
'DuckDuckBot',
'Baiduspider',
'YandexBot',
'Sogou',
'Exabot',
'facebot',
'ia_archiver',
// その他の一般的クローラー/SEOツール
'AhrefsBot',
'MJ12bot', // Majestic-12
'SemrushBot',
'DotBot', // Moz
'PetalBot', // Huawei
'SeznamBot', // チェコのSeznam
'LinkedInBot',
'Twitterbot',
'Discordbot',
'Pinterestbot',
'Applebot',
'CoccocBot', // ベトナム検索エンジン
'archive.org_bot',
'leakix' // leakix.org
);
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
foreach ($bots as $bot) {
if (stripos($ua, $bot) !== false) {
return true; // クローラーの場合はカウントしない
}
}
return false; // クローラーでない場合はカウントする
}
}
閲覧数更新処理では、まずクローラーかどうかを判定し、クローラーだった場合はSQL更新を行いません。
public static function pvc_stats_update($post_id) {
if (self::pvc_is_bot()) {
return 0;
}
// ...
フロントエンドからAJAXで呼び出される pvc-api.php についても同様の判定を追加します。
public function pvc_increase( $post_ids ) {
if (A3_PVC::pvc_is_bot()) {
return wp_send_json( array(
'success' => false,
'message' => __( "Bot detected", 'page-views-count' ),
) );
}
// ...
2. Stop Bad Botsプラグインの利用
セキュリティ上の脅威となるBad Botsをより効果的に除外するため、思い切って Stop Bad Bots プラグインを購入しました。2022年10月、サイトのバックドア型マルウェアを処理した際には Wordfence Security(参考:WordPressサイトのバックドアReval.C除去記録)を使用していましたが、Wordfenceは年額購読型で費用が高めなため、最終的には比較的安価なStop Bad Botsを使用してBad Botsを遮断することにしました。
Stop Bad BotsはBad BotsやBad IPsのリストを自動で更新でき、Visits Logから任意のIPをブラックリストに追加することも可能です。怪しいアクセスを発見した際には【Blacklist IP】をクリックすることで、そのIPからのアクセスを遮断できます。
また、訪問統計やグラフ機能もあり、どのページが悪質な閲覧を受けているかを判断しやすく、Visits Logから該当IPを見つけてブラックリストに追加できます。
3. 結語
これらの対策によって、私のサイトがより安全で堅牢になることを願っています。もし読者の皆さんが他の有効な方法をご存じでしたら、ぜひコメントで共有してください。
4. 💡 関連リンク
✅ 解説記事(繁体字中国語):https://jdev.tw/blog/9091/
✅ Explanation article (English)
✅ 解説記事(日本語)