きっかけ
昨日、削除済みのページがGoogle検索に残り続けている問題に対処した。Search Consoleで削除リクエストを出して解決したが、そもそも「削除したはずの情報がWeb上に残り続ける」という問題について深堀りしてみた。
Google Search Consoleの仕組み
インデックスとは何か
Googleはクローラー(Googlebot)でWebを巡回し、見つけたページを「インデックス」に登録する。検索結果に表示されるのは、このインデックスに登録されたページ。
重要なのは、ページを削除してもインデックスは自動で消えないということ。Googlebotが次にクロールしてきて404を確認するまで、検索結果に残り続ける。
削除の4層防御
不要なページを検索結果から消すには、複数のレイヤーで対応する:
- ページ自体の削除 - まずソースを消す
- robots.txt - クローラーのアクセスをブロック
- Search Console削除リクエスト - 即座にインデックスから除外(一時的、約6ヶ月)
- noindexメタタグ - ページが残る場合、インデックス登録を永続的に拒否
robots.txt だけでは不十分。クローラーはブロックされても、外部リンクからURLを発見すればインデックスに残ることがある。
サイトマップの役割
サイトマップは「このサイトにはこのページがあります」という宣言。新しいサイトマップを送信すると、Googleは「このリストにないページは不要かもしれない」と判断する材料にする。削除と新規サイトマップ送信はセットで行うべき。
一方、LinkedInはブラウザを検索している
同じ日にHacker Newsで話題になっていたのが、LinkedInによるブラウザ拡張機能の無断スキャン問題。
何が起きているか
linkedIn.comにアクセスするたびに、隠しコードがユーザーのブラウザにインストールされている拡張機能を検出し、そのデータをLinkedInのサーバーと第三者企業に送信している。
なぜ深刻か
LinkedInはユーザーの実名・勤務先・役職を知っている。つまり:
- 宗教系拡張(ムスリム向けの礼拝時間通知等)→ 特定個人の宗教信仰が分かる
- 障害者支援拡張(読字障害向け等)→ 特定個人の障害が分かる
- 転職ツール(509個検出)→ 誰が転職活動をしているか分かる。現職の上司と同じプラットフォーム上で
EU法では、これらは「禁止カテゴリ」のデータ。収集すること自体が違法。
企業スパイとしての側面
LinkedInは競合する営業ツール(200以上)のインストール状況も検出している。ユーザーの勤務先情報と組み合わせることで、「どの企業がどの競合製品を使っているか」を網羅的にマッピングできる。
しかも、そのデータを使って競合ツールのユーザーに法的脅迫を送っている事例も報告されている。
スキャン対象は2024年の約461製品から、2026年2月には6,000以上に拡大。
EU規制との矛盾
EUはDMA(デジタル市場法)でLinkedInにサードパーティツールの受け入れを命令した。LinkedInは形式的なAPIを公開したが:
- 公開API: 約0.07 calls/sec
- 内部API(Voyager): 163,000 calls/sec
- 249ページのコンプライアンス報告書に「Voyager」の記載: 0回
規制が保護しようとしたツールの監視を、むしろ強化した。
2つの問題に共通すること
Google Search ConsoleもLinkedInのスキャンも、根っこは同じ問題を示している: Webに一度出た情報のコントロールは、思っているより難しい。
- 削除したページが検索に残り続ける
- 知らないうちにブラウザの中身が読まれている
- プライバシーポリシーに書いていないデータ収集が行われている
エンジニアとしてできること:
- 公開する情報は最初から最小限にする。後から消すのは難しい
- robots.txt、noindex、Search Console削除は多層で対応する。1つだけでは不十分
- ブラウザ拡張はプロファイリングのベクターになる。業務用ブラウザと個人用は分ける
- 自分のプロダクトでは、ユーザーに開示せずにデータを収集しない。信頼は一度失ったら戻らない
Webは「公開」と「非公開」の二択ではない。その中間にある灰色の領域が一番危険で、一番見えにくい。