【GA4対策】海外からのスパムアクセスをGTMで除外(計測ブロック)する具体的な手順
Webサイトの運用をご支援しているA社様から、ある日こんなご相談をいただきました。「GA4を見たら、中国やアメリカなど海外からのアクセスが急増している…」「スパムアクセスのせいで、本来のPV数やコンバージョン率が正確に測れない」というお悩みです。
スケジュールの調整を行い、すぐさまアクセス解析の状況を確認すると、確かに不自然な海外からのトラフィックがレポートを埋め尽くしていました。Webサイトを運用していると、ある日突然やってくる海外からのボットやスパムアクセス。GA4のレポートがノイズだらけになってしまい、正しい分析ができず頭を抱えるWeb担当者の方は多いのではないでしょうか。
この記事では、A社様への解決策として実装した「Webサイト自体は海外からも見れる状態にしつつ、GA4の計測だけを日本国内(JP)に限定する」という、GTM(Googleタグマネージャー)を使った画期的な手法をステップ・バイ・ステップで解説します。
サーバーブロックの落とし穴と今回の課題
海外からの不要なアクセスを防ぐ手段として、真っ先に思いつくのはサーバー側(.htaccess等)で海外IPを弾く方法です。しかし、A社様からは「海外にいる日本人(駐在員や留学生など)が見られなくなるのは困る」という強いご要望がありました。
かといって、GA4の標準機能には「特定の国だけを除外する」というフィルターが存在しません。サイトの閲覧は許可しつつ、計測のノイズだけを消すにはどうすればよいのか。ここで思考を切り替え、GTMを活用したアプローチに辿り着きました。
GTMと無料APIを使った仕組みのカラクリ
解決策のコアとなるのは、「ユーザーがサイトを開いた瞬間、無料で使えるIP判定ツールを使って国コード(JPなど)を取得し、日本からのアクセスだった場合のみGA4を動かす(発火させる)」という仕組みです。
APIキーの登録などが不要で、無制限に使えるCloudflareのTraceツール(1.1.1.1/cdn-cgi/trace)を利用するため、誰でも無料で今すぐ実装できるのが最大のメリットです。運用フェーズや重要度に合わせてポリシーを使い分ける上で、非常に小回りの利く手法と言えます。
具体的な手順・解決策
それでは、GTMでの具体的な設定ステップを解説します。
ステップ1:国コードを取得する「カスタムHTML」タグを作る
まずは、ユーザーの国籍(IP)を判定してGTMに教えるためのタグを作ります。
- GTMの左メニューから [タグ] > [新規] をクリック。
- タグの種類で [カスタム HTML] を選択します。
- 以下のコードをコピーして貼り付けます。(※GTMの仕様上、古いJavaScriptの書き方(ES5)に変換してあります)
<script>
fetch('https://1.1.1.1/cdn-cgi/trace')
.then(function(res) {
return res.text();
})
.then(function(text) {
// 取得したデータから国コード(例: JP)を抜き出す
var match = text.match(/loc=([A-Z]+)/);
var country = match ? match[1] : 'UNKNOWN';
// GTMのデータレイヤーに国情報を送る
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'location_checked',
'user_country': country
});
})
.catch(function(err) {
// 万が一エラーが出た場合はUNKNOWNとする
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'location_checked',
'user_country': 'UNKNOWN'
});
});
</script>- トリガーは [All Pages](初期化またはページビュー) を選択します。
- タグ名を「IP国コード判定」などにして保存します。
ステップ2:取得した国コードを入れる「変数」を作る
次に、ステップ1で取得した国コード(JPなど)を受け止める箱を作ります。
- 左メニューの [変数] > ユーザー定義変数の [新規] をクリック。
- 変数のタイプで [データレイヤーの変数] を選択。
- データレイヤーの変数名に user_country と入力。
- 変数名も「user_country」として保存します。
ステップ3:日本からの時だけ動く「トリガー」を作る
GA4を動かすための「新しい条件」を作ります。
- 左メニューの [トリガー] > [新規] をクリック。
- トリガーのタイプで [カスタム イベント] を選択。
- イベント名に location_checked と入力。
- このトリガーの発生場所を [一部のカスタムイベント] に変更。
- 条件設定の枠で、[user_country] [等しい] [JP] と設定。
- トリガー名を「日本国内からのアクセスのみ」などにして保存します。
ステップ4:既存のGA4タグの設定を差し替える
最後に、今動いているGA4のタグの「発火タイミング」を差し替えます。
- 既に設定されている [GA4 設定タグ(またはGoogleタグ)] を開きます。
- 下部にあるトリガー(現在は「All Pages」になっているはずです)を削除します。
- 代わりに、ステップ3で作った「日本国内からのアクセスのみ」のトリガーを追加して保存します。
設定が終わったら、いきなり公開せずにGTM右上の「プレビュー」でテストしましょう。プレビュー画面(Tag Assistant)の左側で location_checked をクリックした際、GA4のタグが「Tags Fired(発火したタグ)」に入っていれば大成功です。
【Cross Talk】経営×現場の視点
出利葉(代表)
相原さん、今回のA社様の対応お疲れ様。単純に海外からのアクセスをサーバーではじくのではなく、「計測だけを制御する」という視点の切り替えは非常に的確だったと思う。クライアント様も本来の目的を見失わずに済んで安心されていたね。
相原(現場)
ありがとうございます。サイト閲覧の機会損失を防ぐというビジネス上の要件と、正確なデータ取得というマーケティングの要件を両立させる必要がありました。運用フェーズや重要度に合わせてポリシーを使い分けることが重要だと考え、CloudflareのTraceツールとGTMを組み合わせる手法を選択しました。外部APIを使うことで少し表示と計測にタイムラグが出ますが、ノイズを消すメリットの方がはるかに大きいと判断しました。
出利葉(代表)
その「メリットとデメリットの天秤」を現場で素早く判断できたのは素晴らしい。ツールはあくまで手段であり、私たちが守るべきはクライアント様の「ビジネスの機会」と「正しい意思決定のためのデータ」だ。今後もこうした多角的な視点を持った技術提案を、チーム全体で共有していこう。
まとめ・LIHのスタンス
この設定を行うと、ページが開いた瞬間に「あなたはどこの国ですか?」と確認する処理が走るため、GA4の計測が通常よりほんのコンマ数秒だけ遅れます。実運用上はほぼ影響ありませんが、ごく稀にページを即座に閉じたユーザーの計測が漏れる可能性があります。しかし、スパムノイズでレポートがグチャグチャになるストレスに比べれば、非常にメリットの大きい施策です。
私たちLIHは、単に言われた通りの設定を行うだけでなく、クライアント様のビジネス状況やエンドユーザーの利便性まで考慮し、運用フェーズや重要度に合わせてポリシーを使い分ける最適なソリューションを提案いたします。
自社での対応が難しい場合や、リスク管理をプロに任せたい方は
LIHに無料相談する