GA4異常アクセス対策:ブラウザの言語情報を活用して中国・シンガポールからのスパムを遮断する

スパム対策として,GTMを用いた言語ベースの除外設定を説明.ブラウザ言語が「日本語以外」のアクセスを計測前に遮断する手法は強力な解決策となります.具体的な設定手順と導入時の注意点をまとめて紹介しています.

 

1.はじめに

2026年になってから,本サイトでは中国とシンガポールからの異常トラフィックがGoogle Analytics 4(以下,GA4)で計測されるようになりました.これらのアクセスは正規のユーザーによるものではなく,いわゆるリファラスパムと同様に計測データの整合性を損なう「不正なトラフィック」です.

今回問題となっているアクセスの特徴を,GA4のディメンションのごとに整理すると以下の表のようになります.

GA4ディメンション計測値・その1計測値・その2
セッションのメインのチャネルグループDirectDirect
セッションの参照元/メディア(direct) / (none)(direct) / (none)
言語EnglishEnglish
OSとバージョンWindows 10Windows 10
ブラウザChromeChrome
ChinaSingapore
地域Gansu(not set)
市区町村LanzhouSingapore

 

「GA4 Lanzhou」や「GA4 Lanzhou Singapore」などでGoogle検索すると,同様の被害が報告されています.本サイトでも2026年1月から計測が始まり,一時沈静化したものの,2月下旬から再び増加傾向にあります.

以前,この問題となっているアクセスに関するGA4対策として,記事「【GA4対策】中国・蘭州(Lanzhou)とシンガポール(Singapore)からの異常アクセス」を書きました.この記事の5節6節で,外部サービスを利用して国情報を取得し,かつ,JavaScriptで言語情報を利用した対策(『国が「China」に等しく,かつ,言語が「en」を含む』に該当するアクセスと『国が「Singapore」に等しく,かつ,言語が「en」を含む』に該当するアクセスをGA4の計測対象外にする)をGoogleタグマネージャー(以下,GTM)で施し,実際に計測してみた結果も紹介しました.その結果を考慮しても,基本的には計測されたGA4のデータに対して上記のテーブルで示した国や言語の値を元にフィルタをつかって,除外することを最善の策だと紹介しました.

その方針(計測後のデータからフィルタなどで除外する)は変わりませんが,本記事では違う方法を試してみたのでそれを紹介します.

 

2.言語情報を利用した対策案

本記事で紹介する対策案は,言語が「Japanese(日本語)」以外のアクセスを、計測の段階でブロックする方法です.これは,GA4の計測対象のサイトが日本語ユーザーのみを対象としている場合に使える方法とも言えます.

ここで使う言語に関する情報とは,ブラウザで設定されている言語となります.したがって,この言語情報を利用した対策案は,ブラウザの言語設定が「ja(日本語)」でないアクセスはGA4の計測から切り捨てることになるので注意してください.

上記の表に書かれたように問題となっているChinaやSingaporeのアクセスはブラウザのChromeを使っていると計測されています(これらアクセスのChromeのバージョンを調べると様々なバージョンが使われていましたので,バージョン情報は使えないと判断しました).これらアクセスのChromeの言語が「English」となっているとして計測されているのだから,それを判断情報に利用しようという考えです.つまり,言語設定が「ja」に該当しないアクセスをGTMで例外扱いにして,GA4の計測対象外にすることで計測データに記録されないようにしようという考えです.

また上記の表を見ると,問題となるChinaやSingaporeのアクセスではOSが「Windows 10」とされているので,OSの情報も使えるのではないかと感じます.このようなOSの情報は,ブラウザのユーザーエージェントなどから取得できる情報だと推測されます.例えば下記のサイトにアクセスしてみてください.

https://testpage.jp/tool/ip_user_agent.php

貴方がアクセスしたブラウザのユーザーエージェントの情報(その他にIPアドレスや言語設定など)が表示されると思います.問題となるChinaやSingaporeのアクセスは「OSがWindows 10,かつ,言語がEnglish」であるとすれば,より的確に除外するための条件付けができそうだと思うかもしれません.

ですがユーザーエージェントの情報は,プライバシーの観点から現在は明確にとれません.このことは,本サイトでも記事「Chromeユーザーのリファラー流入の参照URLがGAで取得できなくなりました(Firefoxも同様の仕様になりました)」で紹介したりしています.現在,JavaScriptで収集できる情報ではWindows 10と11は共に「Windows NT 10.0」となり区別ができない状況です.

したがって,本対策案では言語情報だけを判断材料として使うことにしました(GA4のデータを見ると,GA4では明確にWindows 10とWindows 11を区別していますが,ユーザーエージェント以外の情報を利用して取得しているのだと思われます).

 

3.言語情報を利用した対策のGTMでの設定

ブラウザの言語情報を取得する準備をします.GTMで「変数 > ユーザー定義変数 > 新規」から「変数タイプを選択」を表示させ(図1参照),「カスタムJavaScript」を選び,下記のコードを貼り付けて,名前をつけて保存します(図2参照.本例ではこのタグを「ブラウザ言語設定取得」と名付けています).

function() {
  // ブラウザの言語設定を取得し、小文字に統一して返す
  // 例: "ja-JP" -> "ja-jp"
  return (navigator.language || navigator.userLanguage).toLowerCase();
}

 

図1.GTMでカスタムJavaScriptの変数を選ぶ.

図1.GTMでカスタムJavaScriptの変数を選ぶ.

 

図2.変数「ブラウザ言語設定取得」を作成.

図2.変数「ブラウザ言語設定取得」を作成.

 

次に『言語設定が「Japanese」でない』に該当する条件のトリガーを作成します.GTMで「トリガー > 新規」から「トリガーのタイプを選択」を表示して(図3参照),「ページビュー」を選び,このトリガーの発生場所を「一部のカスタム イベント」に選び,条件として「{{ブラウザ言語設定取得}}・含まない・ja」として,名前を付けて保存します(図4参照.本例では『ブラウザ言語「ja」含まない』と名付けています).

図3.GTMでページビューのトリガーを選ぶ.

図3.GTMでページビューのトリガーを選ぶ.

 

図4.トリガー『ブラウザ言語「ja」含まない』を作成.

図4.トリガー『ブラウザ言語「ja」含まない』を作成.

 

GTMで該当するGA4の計測用のGoogleタグを開いて,トリガーの例外として『ブラウザ言語「ja」含まない』を追加して保存します(図5参照)

図5.Googleタグの設定.

図5.Googleタグの設定.

 

設定が終わったので,プレビューで確認します.「ブラウザ言語設定取得」の値が,とれているかなどを確認しましょう.問題が無ければ公開します.

なお,GA4のイベントタグを用いている場合は,そちらでも同様なトリガーの例外設定を追加してください.

 

4.計測結果

結果からいえば,3節で紹介した言語情報を利用した対策の設定は,有効に機能しました.対策ありGA4では,対策なしGA4で計測していた問題となっているChinaやSingaporeからの異常トラフィックは完全に計測されない状態になりました.

一方で,このサイトで計測した範囲では,正規の日本語環境からのアクセスについては,対策ありGA4でも正しく計測されていることを確認しました.ただし,気になる点もありました.それは,問題となっているChinaやSingaporeのアクセス以外にも言語が「English」であるアクセスがごくわずかにあったのですが,対策ありGA4でもそれらが計測されていたのです.原因は不明です.

 

5.おわりに

「計測データ自体を消したい」のではなく,「分析の邪魔だから除外したい」ということであれば,GA4の探索レポートやLooker Studioでフィルタを設定するのが最も安全だということを再確認しておいてください.

本記事ではあえてその最も安全な方法をとらずに,ブラウザの言語設定の情報を利用して,門だとなっているChinaやSingaporeからの異常アクセスを対象外にする方法を紹介しました.この方法では,サイトが完全に日本語ユーザー向けであり、海外や英語環境からのアクセスを切り捨てても問題ないと割り切れる場合のみに有効な方法です.

このような一部を計測対象外にする設定や除外する設定は,予期しない影響が出る可能性があるため,導入は慎重に検討し,必ず自己責任で実施してください

なお,本サイトで行ったテストのように,一つのサイトに複数のGA4を実装して,そのうちの1つにこのような異常アクセス(リファラスパム)対策をさせて,データを使い分けるのも一つの手かもしれません.