サードパーティ通信マップ
1つのページを開くと、たいていは聞いたこともない十数社と通信しています。このマップはその1社1社の名前を挙げ、どんな種類のサービスかを示し、サーバーの場所を世界地図に記します。
ページは多くのサーバーから組み立てられる
ブラウザのアドレスバーに表示されるのは1つのサイトですが、返ってくるHTMLは実は用事のリストです。このフォントはGoogleから、このスクリプトはタグマネージャーから、この動画プレーヤーはYouTubeから取ってくること。ブラウザは言われたとおりに、それぞれのホストへ接続します。訪問しているサイトに属さないホストは、どれもサードパーティです。
こうした接続はどれも匿名ではありません。どの接続にも、訪問者のIPアドレス、User-Agentヘッダーに入ったブラウザとOSの情報、そしてふつうは見ているサイトやページそのものを示すRefererヘッダーが含まれます。そのサードパーティが以前、どこかのサイトでそのブラウザにCookieを保存していれば、そのCookieも一緒に送られます。そのため、多くのサイトに入り込んでいる企業は、サイト間を移動する同じ人を見分けられます。サイトの持ち主がそれを一切選んでいないこともよくあり、テーマやプラグインがその通信を加えているのです。
マップの作り方
当サーバーがページをダウンロードし、そのソースを読みます。スクリプト、スタイルシート、画像とsrcsetの一覧、メディア、iframe、preconnectとpreloadの指定、フォームの送信先、CSSのurl()の値、<noscript>の中のトラッキングピクセルに書かれたホストを集めます。ページがGoogle Tag Managerを読み込んでいれば、そのコンテナファイルも取得し(最大2つ)、差し込める可能性のあるサービスを探します。
各ホストを約120の既知のサービスの一覧と照らし合わせ、名前、運営会社、その本社の国、カテゴリーを得ます。どれにも当てはまらないホストはドメインごとにまとめ、不明として表示します。インラインのスクリプトの中に書かれているだけのアドレスは、既知のサービスのものに限って残します。スクリプトには、実際には呼び出さないアドレスもたくさん書かれているからです。
次に、最大40のホストの場所を調べます。DNSの問い合わせでIPアドレスを得て、Team CymruのIP-to-ASNサービスで、そのアドレスを広報しているネットワークと、そのアドレスブロックが登録されている国を得ます。表は侵入度の高いカテゴリーから低いものへ並べます:広告、アクセス解析、SNS、マーケティング、チャット、動画、地図、フォーム、決済、フォント、ボット対策、同意ツール、ライブラリ、ホスティング。「追跡」のカウンターは最初の4つの合計です。
「どこ」の3つの意味
- IPアドレスブロックが登録されている場所
- マップに表示しているのはこれです。地域インターネットレジストリが記録している、管理上の事実です。
- 答えている機械が置かれている場所
- 大きなネットワークは、同じアドレスを各大陸のデータセンターから広報し、訪問者をいちばん近いところへ振り分けます。米国で登録されたブロックでも、ドイツの訪問者にはフランクフルトから答えていることがあり、データはそのあと別の場所に複製されることもあります。
- 会社の拠点がある場所
- 表では「本社」として表示します。機械がどこにあっても、どの国の裁判所や当局がその会社にデータを要求できるかは、これで決まります。
国際的なデータ移転についての法律は、主に3つ目の意味と、結ばれている契約を見ます。GDPRの第5章では、個人データを欧州経済領域の外に出せるのは、十分性認定を受けた国へ移す場合か、標準契約条項のような保護措置がある場合だけです。
リストを短くする
- 誰も使っていないものを外す。終わったキャンペーンのピクセルや、アンインストールしたプラグインのウィジェットは、何年も報告を送り続けます。
- 静的ファイルは自分で配信する。フォント、アイコンセット、スクリプトのライブラリは自分のドメインにコピーできます。HTTP/2なら、たいてい公開CDNより速くなります。ブラウザはもうサイト間でキャッシュしたファイルを共有しないからです。
- 埋め込みは必要なときに読み込む。動画や地図の代わりに画像を表示し、クリックされたら本物を読み込みます。クリックで読み込む埋め込みツールがそのコードを作ります。
- 残ったものに伝える情報を減らす。
Referrer-Policy: strict-origin-when-cross-originにすれば、サードパーティにはページの完全なアドレスではなくドメインだけが送られます。 - リストがまた増えないようにする。
Content-Security-Policyヘッダーは許可リストとして働きます。プラグインが何を加えても、リストにないホストは呼び出せません。
スクリプトは実行しません。別のスクリプトがあとから読み込むサービスや、訪問者がCookieを承諾したあとにだけ現れるサービスは抜けていることがあります。また、ソースに書かれたホストに、すべての訪問者が必ず接続するとは限りません。「フォーム送信」と表示されたサービスがデータを受け取るのは、誰かがフォームを送信したときだけです。同意前に動き出すトラッカーを知るには、Cookieスキャンを使ってください。
よくある質問
サードパーティリクエストとは何ですか?
ページを読み込む間に、ブラウザが訪問中のドメイン以外のドメインに送るリクエストです。あなたのサイトでfonts.googleapis.comからフォントを読み込めば、それがサードパーティリクエストです。自分のサブドメインから読み込む画像は違います。
IPアドレスは個人データですか?
GDPRのもとでは、一般にはそうです。EU司法裁判所はBreyer事件(2016年)で、動的IPアドレスであっても、それを持つ側に本人を特定する法的手段があれば個人データだと判断しました。米国のいくつかの州法も、IPアドレスを個人情報に含めています。
米国の会社が別の国に表示されるのはなぜですか?
マップが示すのは各IPアドレスブロックの登録国で、世界的な企業は多くの国で登録されたブロックを持っています。会社の本拠地の国は別の事実で、表の「本社」の行に載っています。
CDNからスクリプトを読み込むのはプライバシーの問題になりますか?
CDNの運営者には、すべての訪問者のIPアドレスと、どのサイトから来たかが見えます。セキュリティの面でも頼ることになります。そのファイルを支配する者が、あなたのページを支配するからです。ファイルを自分で配信すれば、どちらも避けられます。CDNを使い続けるなら、integrity属性を付けて、書き換えられたファイルを拒否させてください。
自分のブラウザでサードパーティリクエストを見るにはどうすればよいですか?
開発者ツールを開き、「ネットワーク」タブを選んでページを再読み込みします。「ドメイン」の列に、接続したすべてのホストが表示されます。ChromeとEdgeには「サードパーティ リクエスト」のフィルターがあります。この表示にはスクリプトが読み込むものも含まれますが、当マップにはそれが見えません。
使っているサービスがマップに出てこないのはなぜですか?
おそらく、ページの読み込み後にJavaScriptが追加しているか、訪問者が承諾するまで同意バナーが止めているかです。ここに表示されるのは、HTMLのソースかTag Managerのコンテナに書かれたホストだけです。