2026年4月13日、GoogleはBack Button Hijackingをスパムポリシーの「Malicious Practices(悪意ある行為)」に追加しました。施行日は2026年6月15日です。
本記事では、技術的な仕組みと具体的なチェック方法を解説します。
Back Button Hijackingとは
ブラウザの戻るボタンを押したときに、ユーザーが意図しないページへ誘導したり、戻れなくしたりする実装の総称です。
Googleの定義では、以下のいずれかに該当するものが対象です。
- ユーザーが来た元のページに戻れない状態を作ること
- 意図しないページへ強制遷移させること
- ブラウザ履歴に偽のエントリを挿入・置換すること
技術的な仕組み:History API
JavaScriptのHistory APIを使うことで、ブラウザの履歴スタックをコードから操作できます。
// 履歴にエントリを追加する
history.pushState(stateObj, title, url);
// 現在のエントリを書き換える
history.replaceState(stateObj, title, url);
// 戻る操作を検知する
window.addEventListener("popstate", (e) => {
// ここで任意の処理を実行できる
});
このAPIはSPAのルーティング(React RouterやVue Routerなど)に正当に使われる技術です。問題は、これを欺く目的で使う実装です。
違反となる実装パターン
パターン①:偽履歴の大量スタック
ページ読み込み時に偽のエントリを積み、戻れなくする最も単純な手法です。
window.addEventListener("load", () => {
for (let i = 0; i < 10; i++) {
history.pushState(null, "", location.href);
}
});
window.addEventListener("popstate", () => {
history.pushState(null, "", location.href);
});
パターン②:戻る検知→広告LPへリダイレクト
ユーザーの離脱意図を広告収益に変換する手法です。
history.pushState({ trap: true }, "", location.href);
window.addEventListener("popstate", () => {
window.location.href = "https://ad-lp.example.com/";
});
パターン③:来訪元URLの上書き
Googleからの流入であることを隠蔽し、戻り先を検索結果でなくダミーページにすり替えます。
history.replaceState(null, "", "/dummy");
history.pushState(null, "", location.href);
パターン④:離脱ブロックモーダル+再ロック
ポップアップを表示しながら、同時に履歴を再操作してロックを維持します。
window.addEventListener("popstate", () => {
document.getElementById("exit-modal").style.display = "block";
history.pushState(null, "", location.href); // ← ここが問題
});
合法的な使い方との境界線
History APIの使用そのものは違反ではありません。判断基準は「ユーザーの期待を裏切るか否か」です。
合法的な使い方の例です。
- SPAのルーティング管理(React Router、Vue Routerなど)
- フォーム入力の途中離脱確認ダイアログ(再pushStateしない)
- モーダルやドロワーの開閉をURLに反映する
違反となる使い方の例です。
- 意図的に複数の偽エントリを積む
- 戻るを検知して外部URLへリダイレクトする
- 元の来訪元を履歴から消す
サードパーティスクリプトへの注意
Googleは以下のように明示しています。
広告プラットフォームや外部ライブラリが原因であっても、そのサイトオーナーに責任がある
特に注意が必要なカテゴリはこれらです。
- アドネットワークのタグ(アフィリエイト広告を含む)
- コンテンツレコメンドウィジェット(Outbrain等)
- 古いSEO系のエンゲージメント改善ツール
- WordPressの一部プラグイン(回遊率改善系)
確認方法
Chrome DevToolsでの確認
DevToolsを開いて(F12)、Consoleタブで以下を実行します。
console.log("history.length:", window.history.length);
ページ読み込み直後に数値が異常に大きい場合、何らかのスクリプトが履歴を操作している可能性があります。
popstateの監視確認
ページ読み込み前にConsoleで以下を実行することで、後から登録されるpopstateリスナーを検知できます。
const originalAddEventListener = window.addEventListener;
window.addEventListener = function(type, listener, options) {
if (type === "popstate") {
console.warn("popstateリスナーが登録されました:", listener);
}
originalAddEventListener.call(this, type, listener, options);
};
ペナルティの種類と影響範囲
Googleが明示しているペナルティは2種類あります。
手動スパムアクション(Manual Action)
Search Consoleに通知が届きます。対象ページまたはサイト全体の検索除外・降格が発生します。
自動降格(Automated Demotion)
通知なしでランキングが下がります。SpamBrainによるアルゴリズム処理です。
また、2024年12月以降、手動スパムアクションはGoogle広告の配信資格とも連動しています。検索流入と広告流入の両方に影響が及ぶ可能性があります。
対応チェックリスト
6月15日までに以下を確認してください。
- ページ読み込み時にpushStateを呼び出すスクリプトがないか
- popstateイベントでリダイレクト処理をしていないか
- 広告タグ・アフィリエイトタグのHistory API操作の有無
- 外部ウィジェットの動作確認(実際に戻るボタンを押してテスト)
- WordPressプラグインのアップデートまたは無効化
まとめ
Back Button Hijackingは2026年6月15日からGoogleスパムポリシーの「Malicious Practices」違反になります。
自社実装でなく、広告タグや外部ライブラリが原因であっても責任はサイトオーナーにあります。
History APIの使用自体は問題ありません。「ユーザーの期待する戻る動作を妨げているか」が判断の基準です。
参考:Google Search Central Blog "Introducing a new spam policy for back button hijacking"(2026年4月13日)