前提

ここでは、

  • トラッキングコードのカスタマイズを行うことが可能である
  • プロパティの管理者権限を保持している
  • ユニバーサルアナリティクスを利用している
  • カスタムディメンションを使い切っていない

という前提のもとに話しをさせていただきます。もし、これらの条件のどれかに引っかかっているのであれば、適切な方法で、上記の前提を満たすようにしてもらえればと思います。とはいえ、カスタムディメンションさえ使い切っていないのであれば、なんとかなると思います。

リファラースパム対策のための手順

手順1: プロパティにカスタムディメンションを追加する

まず、プロパティにカスタムディメンションを追加します。追加する名前は「リファラースパムブロック」、範囲は「セッション」を選択するとよいと思います。

カスタムディメンションを追加する手順は、アナリティクス公式ヘルプ カスタム ディメンションやカスタム指標を設定、編集する をご参照ください。

手順2: トラッキングコードを編集し、カスタムディメンションに値を設定する

次に、トラッキングコードの編集を行います。編集はアナリティクス公式ヘルプ カスタム ディメンション / 指標 の「収集」の項目をご参照ください。

通常は、該当のユーザーやセッションごとに適切な値を設定するための項目ですが、今回の用途では、完全に固定の文字列を設定します。また、設定する文字列は何でも問題ありません。

例えば、

ga('set', 'dimension1', 'SEM Technology Referrer Spam Block');

のような形です(ディメンションの番号は追加したディメンションに合わせて適切な数字にしてください)。

Googleタグマネージャーを利用している場合は、Googleアナリティクス関連のタグを送信するときに、カスタムディメンションの欄にこれらを設定してください。

手順3: ビューフィルタを1つ追加してフィルタを撃退

最後に、ビュー設定にある「フィルタ」の設定欄でフィルタを追加します。追加するフィルタの設定は、

項目 設定値
フィルタ名 リファラースパム除去
フィルタの種類 カスタム - 一致
フィルタフィールド リファラースパムブロック
フィルタパターン SEM Technology Referrer Spam Block

となります。フィルタフィールドは、作成したカスタムディメンションを作成いただき、フィルタパターンには、トラッキングコード上で設定したパターン文字列を指定してください。

なぜこれでリファラースパムを防ぐことができるのか?

前回の記事にも書いたように、リファラースパムのほとんどは、実際にWebサイトに訪問しているわけではなく、ランダムにGoogleアナリティクスのトラッキングコードを生成して、そのトラッキングコードに対してMeasurement Protocolを用いてページビューデータを送信しています。このときに、一般的に使われているパラメーター(ページパスや参照元情報、ブラウザ、言語など)については、それっぽい値を指定してきているので、それら一般的なパラメーターでのフィルタ作戦は難しいのが現状です。しかし、カスタムディメンションを使うことで、これが一種のパスワードのような役割を果たし、正しいページビューデータであるか否かの判断ができるようになります。

これでも防げないリファラースパムはあるのか?

結論からいえば、この方法をとっても、リファラースパムによるページビューは残ってきます。このサイトでも同様の処置を行っていますが、現状、

  • 100dollars-seo.com
  • semaltmedia.com
  • buttons-for-website.com
  • buttons-for-your-website.com
  • best-seo-solution.com
  • best-seo-offer.com

の6つのリファラースパムを計測しています。これらのスパムは、カスタムディメンションに指定している文字列が破られた、というわけではなく、実際にこのWebサイトに訪問してきています(Webサーバーのログから該当のリファラーを持つアクセスを確認済み)。

このように、実際にWebサイトにアクセスしてくるタイプのリファラースパムに対しては今回の方法でも対処することが難しい、というのが現状です。とはいえ、このフィルタ設定を行った状態でやってきたリファラースパムは約6ヶ月間の間でたったの23セッションのみ(6ヶ月間のサイト全体のセッションは5,960なので, スパムの比率は0.39%のみ)なので非常に有効な手段と言えると思います。また6ヶ月で6つのスパムなので都度フィルタする方針でも大きな手間にはならないと言えます(ここは、サイトの知名度・規模などによっても変わってきます)。

また、自分の場合は、Google Tag Manager経由でタグを設置している、ということもあって、タグマネージャーで、参照元ホスト名を元に、リファラースパムとして計測されたものかどうかをチェックして、リファラースパムであったら、タグを配信しない、という方法で、上記のリファラースパムについても回避できるとみて、下記画像のような変数とルールを作成して、Google Analyticsタグの配信条件をコントロールしはじめました。こちらの優位性については、またある程度期間が経ってデータがそろったら公開しようと思います。

参照元ホスト名を取得する変数

参照元ホスト名のうちリファラースパムを判断するルックアップテーブル

リファラースパム以外の参照元ホスト名からのときに反応するルール

上記のルックアップテーブルような形式でフィルターを書くことができるので、Google Analyticsのフィルタ機能と比べて、フィルタ対象が増えても何をスパムとして判定しているかが見えやすくなり、スパム対象の追加が行いやすくなります(逆に正規表現で判定できないので亜種の対応が難しい, というデメリットもあります)。さらに、この方法なら、Google Analyticsの参照元データをGoogleスプレッドシートに転記してきて、スパム参照元にマークをつけたら、APIを利用してGoogle Tag Managerのスパム判定に自動で組み込む、といったことも簡単にできそうです。

まとめ

前回のリファラースパム回避方法では、新規にプロパティを作成する必要があり、実行が難しかったかと思いますが、この方法を使えば新しいプロパティを作成することなく、今までのプロパティ・ビューを用いて、さらに単純なフィルタを作成するだけでリファラースパムの呪縛から逃れることができるようになります。

今まで、リファラースパムの呪縛から逃れるために、多数のフィルタを設定して、フィルタ地獄に陥っていた方はこの方法を是非試してみてください。