ボット、クローラのアクセスを除外する方法を調べてみました。
除外したい背景、実現したいこと、周辺技術、製品、調べたこと、実施することを記載します。

[TOC]


除外したい背景

Google Analytics 上記録されないが、HTTP サーバでは記録されるアクセスがある。
このアクセス が無視できないレベルでサーバリソースを消費している。


実現したいこと

Google Analytics に記録されないアクセスは、ボット、クローラによるアクセス。
ボット、クローラには、良いもの、悪いものがいて、悪いもののアクセスを除外したい。
具体的に403、もしくは応答自体を返さず、アクセス Deny したい。


周辺技術、製品

Google Analytics の ボットのフィルタリング 機能について

  • 既知の<wbr>ボットや<wbr>スパイダーからの<wbr>ヒットを<wbr>すべて<wbr>除外します チェックボックス

    1. Google Analytics には、既知の<wbr>ボットや<wbr>スパイダーからの<wbr>ヒットを<wbr>すべて<wbr>除外しますいうチェックボックスがあり、チェックを ON にすると、Google Analytics 上でアクセスを除外できる。
    2. ボットかどうかの判断には、IAB/ABC という会社 が提供している IAB/ABC International Spiders and Bots List使用している。
    3. IAB/ABC の提供するボットリストは、有料 非会員 $14,000 会員になるともっと安く購入できる。
    4. 法人でないと、購入は躊躇するレベルの金額。
  • IAB/ABC International Spiders and Bots List の関連情報

    1. Software - IAB Tech Lab から、List ファイルの Sample 等が入手できる。
    2. snowplow/iab-spiders-and-robots-java-client: Java 7+ client library for the IAB and ABC International Spiders and Robots listいう Java Client がある。
    3. batrobots と、goodrobots が区別されていないのかもしれない。(ものを見てみないとわからない)
  • フィルタ機能による除外
    ボットのフィルタリングをすり抜けてくるアクセスは、フィルタ機能での除外設定を手動で行うことができます。
    手動での設定はたいへんなので、自動で除外フィルタを追加してくれる、Home | Referrer Spam Blocker - Automatically block referrer spam for Google Analyticsいうサービスがあったのですが、2017年で停止しています。
    サービスを停止する理由が、The state of Referrerspamblocker.com – Stijlbreuk – Medium記載されていますが、Spam が進化して、Google Analytics に渡されるパラメータレベルだと通常のアクセスと区別がつかない旨が記載されていて、過去有効だった手段が通用しない場合も多く、現在、Spam ブロックの目的で設定する意味があるのかちょっと微妙に思いました。

Ultimate Bot Blocker

Ultimate Bot Blocker検索すると、Apache、Nginx でそれぞれ、Github リポジトリが見つかります。
Apache のリポジトリ、Nginxのリポジトリのリンクを以下に記載します。

その他、Addon 、付録のようなもので以下が用意されています。

  1. fail2ban Addonn
  2. Google Seach Console の バックリンク否認でアップロードする txt ファイル
  3. Google Analytics のフィルター定義ファイル
  4. robots.txt

Application レベル での Bot Blocker

Django の ライブラリで以下を見つけました。一定以上の頻度で同一IPからのアクセスを遮断する機能を持っているようです。

Bot を Block する 製品

プロキシサーバ的に機能して Block するような製品が多いように思いました。


調べたこと

  • Google Analytics で、アクセスが除外されているエージェントを調べる
    HTTP サーバ上でアクセスはあるが、Google Analytics で除外されているユーザーエージェントの種類を調べてみました。このブログは、PC ページ側の Google Analytics に、カスタムディメンションでユーザーエージェントを設定しています。AMP ページ側は、ユーザーエージェントが記録できていないため、だいたいになってしまいますが、記録結果を元にアクセスログのユーザーエージェントと、付き合わせを行いました。

  • アクセスログからユーザーエージェントを取得する
    以下、ワンライナーでアクセスログからユーザーエージェント文字列を取得しました。

    cat /var/log/httpd/access_log* | cut -f6 -d'"' | sort -r | uniq
    
    cat /var/log/httpd/ip_direct_custom_log* | cut -f6 -d'"' | sort -r | uniq
    
    cat /var/log/httpd/ssl_access_log* | cut -f6 -d'"' | sort -r | uniq
    

  • GAからデータを取得する
    カスタムディメンション ユーザーエージェント を集計する カスタムレポートを作成し、CSVとして取得しました。

  • 付き合わせた結果
    User Agent のリスト

  • 感想

    1. 計測期間、測定環境の影響で、本物っぽいユーザーエージェントが混ざる。
    2. 確かにボットであろうアクセスは抽出できている。
    3. 良いボットと思われる ユーザーエージェント 名で、何をしているボットかなんとなくわかる。

実施すること

  1. mitchellkrogza/apache-ultimate-bad-bot-blocker使って Bot を Block は実施する。
  2. fail2ban の設定を行う。

GA フィルタの定義ファイル、robots.txt 等は、HTTPサーバーの設定をすればそこでブロックされるので、設定が不要に思いました。
Google Search Console へのリンク拒否ファイルのアップロードは、bots 側にURLがあることは検知されるので、実施しておいたほうがいいかもしれません。


実施したこと

実施したことを以下にまとめました。よろしければ、ご確認ください。


参考

以下、参考になりました。

以上です。

コメント

カテゴリー