VPNサーバーを切り替えるとショップからログアウトしますか?
新しい出口アドレスはCookieの貯蔵庫を空にしません。まず、ネットワーク経路、ログイン中のセッション、保存されたサイトデータのどれを検証しているのかを決めましょう。
ショップを別タブで開いたままVPNの出口を変えても、カートはたいていそのまま残っています。これはVPNの不具合ではなく、ブラウザが指示どおりに動いているだけです。Cookieを送るのはブラウザであり、新しいネットワーク経路はブラウザが保存している内容を変えません。「サイトはまだ私を認識している」という言葉の裏には三つの異なる問いが隠れており、答えはどれを尋ねているかによって変わります。
三つの問い、一つの症状
第一に、サイトは保存されたCookieを認識しているのか。第二に、単一のCookieとは独立に存続するログイン済みアカウントを認識しているのか。第三に、保存された状態ではなくブラウザや端末の何かを認識しているのか。それぞれに固有の検証と対処があります。
| What you changed | What it actually tests |
|---|---|
| VPN exit address | Whether the site treats a different network origin differently |
| Cookie jar for one site | Whether a stored identifier was doing the recognition |
| Browser profile or account | Whether identity, rather than storage, links the visits |
混乱の多くは、第一を変えて第二もついてくると期待することから生まれます。ネットワークアドレスとブラウザの保存領域は別々の仕組みであり、たまたま同じページが使っているだけです。
Cookieが実際に運ぶもの
RFC 6265で規定されているHTTPの状態管理は、意図的に単純です。サーバーがスコープ付きの名前と値を設定し、ブラウザはそのスコープに一致するリクエストでそれを返します。値はセッション識別子、設定、あるいはサーバーがカートのレコードに対応づける不透明なトークンでありえます。この仕組みのどこにもクライアントのアドレスは登場しません。
この設計のおかげで通常のログインやカートはネットワーク変更を生き延び、同じ理由でトラッカーにとっても生き延びます。同じ仕組みが両方の目的に使われ、両者を区別しません。プロトコルにクライアントのアドレスのためのフィールドはないので、新しい出口が無効にできるものは何もありません。Cookieをネットワーク上の起点に結びつけたいサイトは、その論理を自分で追加する必要があります。
サイトがCookieを返すとき、サーバーはその値が指すレコードを探します。リクエストがたどった経路を変えてもその検索は変わらず、これがショッピングカートの観察の説明のすべてです。
自分の検証が何を測っているかを決める
何かを変える前に、出発点の状態を書き留めます。どのブラウザプロファイル、どのアカウント、どのサイトデータ、どのネットワーク経路か。そのうえでそのうち一つだけを変えて観察します。出口アドレスとブラウザプロファイルを同時に変える検証は、どちらについても何も証明しません。
curl -sS -c /tmp/jar.txt -b /tmp/jar.txt -o /dev/null -w '%{http_code}\n' https://shop.example/cart
curl -sS -c /tmp/jar.txt -b /tmp/jar.txt -o /dev/null -w '%{http_code}\n' --interface 198.51.100.44 https://shop.example/cartどちらのコマンドも同じCookieファイルを再利用し、二つ目はホストが許す場合に別のローカル送信元アドレスを強制します。カートの応答がどちらも同じなのは、サーバーが異なるクライアントの身元を一度も見ておらず、異なる経路だけを見ていたからです。これが再現可能な一対のリクエストで示される仕組みです。
目的が、保存された状態なしにサイトがあなたを認識するかを見ることなら、そのサイトのデータを消して繰り返します。それでも認識されるなら、次の容疑者はCookieではなく、ログイン中のアカウント、たどったリンク、ブラウザの特性です。
消すべきは状態であり、ネットワークではない
一つのサイトの保存領域を消すのはブラウザ自身の管理機能の役割で、副作用としてログアウトしたり設定がリセットされたりすることがよくあります。アカウントやサービスがすでに保持している記録は削除されません。それにはサービス側の手続きが必要です。
サイト間の制限は問題の別の部分に対処します。ブラウザは、埋め込みサービスがサイト間で共有する保存領域をブロックしたり分割したりできますが、ファーストパーティのログインは機能し続けます。したがってログインの成功は、サイト間の追跡が機能している証拠にはなりません。
プライベートウィンドウも、人が期待するより狭い範囲の道具です。サイトはセッション中にCookieを設定でき、ログインはアカウントを識別します。一時的な状態を捨てるのはプライベートセッションを終えることであり、つまり一つのタブではなくすべてのプライベートウィンドウを閉じる必要があります。
最後に、フィンガープリントによる識別は最初の説明ではなく可能性として扱ってください。端末やブラウザの特性は、保存されたCookieがなくても訪問を結びつけられ、保存領域を消してもそれには触れません。まず単純な原因を確認し、それから調査を広げ、次回の比較が意味を持つようにどの状態を変えたかを記録しておきましょう。