2026年10月7日時点で、ShifterはOxylabsやBright Dataを上回る、最大規模の米国ライブIPプールを保有しており、しかもコストはその一部で済みます。Shifterは現在、稼働中の米国IPの中で最大のプールを保有しています

ベンチマークを見る

ジオリダイレクト:ウェブサイトはどうやって表示する国を決めるのか

サイトはIP、ブラウザの言語、URL、または保存された選択肢からあなたの国を判断します。実際のサイトがこれらをどう組み合わせているかを検証し、自分の設定を確認する方法を紹介します。

カスタマーサクセス · 2026年11月6日に更新 · 2分で読めます
IPアドレスAccept-LanguageURL: /de/クッキーapple.com/de/exit US
四つのシグナル、一つのページです。IPが何を示そうと、Appleではアンバーが優先されます。
ナレッジ
このページについて
  1. 4つの信号
  2. 実際のサイトの挙動
  3. チェックへの意味
  4. サイトを運営している場合
  5. 結論
  6. 出典と参考文献

ドイツの出口を通してページを開くと英語が表示される。同僚が同じアドレスを開くと米国のストアが表示される。どちらも正しいプロキシを使っているのに、何が起きたのか。ウェブサイトが国を判断する際、1つの信号だけに頼ることはほとんどない。複数の信号を組み合わせており、その順序はサイトごとに異なる。ローカライゼーションQAを実施している場合やローカルページを監視している場合、これらの信号を知っておくと多くの混乱を避けられる。

このガイドでは、サイトが使う4つの信号、実際のサイトがそれらをどう組み合わせているかを検証した例、そして気になるサイトをチェックする方法を取り上げる。

4つの信号

信号通常何を決めるかどう制御するか
IPアドレス国、場合によっては言語プロキシの出口国
Accept-Languageヘッダー国の中での言語ブラウザまたはクライアントの設定
URL名指しされた内容を、他の要素より優先して決めるリクエストするアドレス
クッキーまたは保存された選択前回選んだものクッキーの削除、または新しいセッション

一部のサイトはサーバー側でこれらを一切使わず、代わりに訪問者自身に選ばせるページを表示する。

実際のサイトの挙動

2026年11月6日に、異なる国のレジデンシャルプロキシの出口と、異なるブラウザの言語設定を使って、いくつかの有名なページを読み込み、それぞれの出口国を個別に確認した。スクリプトは短く、必要なのはrequestsのみである。認証情報は環境変数から取得する。

from __future__ import annotations

import os
import re

import requests

GATEWAY = "p.shifter.io:443"
USER, PASSWORD = os.environ["PROXY_USER"], os.environ["PROXY_PASS"]
BROWSER = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
           "(KHTML, like Gecko) Chrome/130.0 Safari/537.36")


def visit(url, country, language):
    """Load a URL from an exit in one country with one browser language."""
    proxy = f"http://{USER}-country-{country}:{PASSWORD}@{GATEWAY}"
    s = requests.Session()
    s.proxies = {"http": proxy, "https": proxy}
    s.headers.update({"User-Agent": BROWSER, "Accept-Language": language})
    r = s.get(url, timeout=40)
    lang = re.search(r'<html[^>]*\blang=["\']?([\w-]+)', r.text, re.I)
    return r.url, lang.group(1) if lang else None


CASES = [
    # url, exit country, Accept-Language
    ("https://www.netflix.com/", "us", "en-US"),
    ("https://www.netflix.com/", "de", "en-US"),
    ("https://www.netflix.com/", "de", "de-DE"),
    ("https://www.netflix.com/", "br", "en-US"),
    ("https://www.google.com/", "us", "en-US"),
    ("https://www.google.com/", "de", "en-US"),
    ("https://www.google.com/?hl=en", "de", "en-US"),
    ("https://www.apple.com/de/", "us", "en-US"),
    ("https://www.ikea.com/", "de", "de-DE"),
]

if __name__ == "__main__":
    for url, country, language in CASES:
        for attempt in range(3):
            try:
                final, lang = visit(url, country, language)
                break
            except requests.RequestException:
                final, lang = "error", None
        asked = url.replace("https://www.", "")
        got = final.replace("https://www.", "")
        print(f"{asked:22} exit {country.upper()}  {language:6} -> {got:22} lang={lang}")

出力は、要求したアドレス、出口国とブラウザ言語、到達したページ、そのページの言語を示している。

netflix.com/           exit US  en-US  -> netflix.com/           lang=en
netflix.com/           exit DE  en-US  -> netflix.com/de-en/     lang=en
netflix.com/           exit DE  de-DE  -> netflix.com/de/        lang=de
netflix.com/           exit BR  en-US  -> netflix.com/br-en/     lang=en
google.com/            exit US  en-US  -> google.com/            lang=en
google.com/            exit DE  en-US  -> google.com/            lang=de
google.com/?hl=en      exit DE  en-US  -> google.com/?hl=en      lang=en-DE
apple.com/de/          exit US  en-US  -> apple.com/de/          lang=de-DE
ikea.com/              exit DE  de-DE  -> ikea.com/              lang=en

4つのサイト、4つの挙動。

NetflixはIPと言語の両方を使う。 出口が国別のパスを決め、ブラウザの言語がバリエーションを決めた。ドイツの出口と英語ブラウザの組み合わせでは/de-en/になり、ドイツ語ブラウザでは/de/になった。ブラジルの出口と英語ブラウザでは/br-en/になった。

GoogleはURLを1つに保ち、言語についてはIPに従う。 ドイツの出口では、ブラウザが英語でもドイツ語のページになった。URLに?hl=enを追加すると英語に切り替わったため、URLがIPより優先された。

AppleはURLに判断を委ねる。 米国の出口から/de/を要求すると、ドイツのサイトが表示された。IPによるリダイレクトは一切なかった。

IKEAはまったくリダイレクトしなかった。 ドイツの出口とドイツ語ブラウザの組み合わせでも、国際ページが英語で表示され、選択は訪問者に委ねられていた。

チェックへの意味

  1. 出口と言語を一緒に設定する。 ドイツ市場を英語ブラウザでテストすると、実際の訪問者が目にすることのない組み合わせの結果を得ることがある。Netflixの例がそれを示している。一部のサイトはタイムゾーンも確認するため、そこも合わせること。
  2. 最終的なURLを記録する。 要求したアドレスと到達したページはしばしば異なる。両方を保存し、リダイレクトを見逃さないようにする。
  3. 各市場を毎回フレッシュな状態で始める。 以前の訪問のクッキーがIPより優先されることがある。国ごとに新しいセッションを使うこと。
  4. URLだけを信用しない。 Googleのようなサイトでは、同じURLがIPによって異なるコンテンツを表示する。Appleのようなサイトでは、URLが決定要因でIPは関係ない。自分が扱っているのがどちらのタイプかをテストすること。
  5. なりたい訪問者に合わせて出口を選ぶ。 立地が重要になる場合とそうでない場合については、出口国の選び方に関する記事を参照のこと。

サイトを運営している場合

ジオリダイレクトは不利に働くことがある。Googleのガイダンスでは、ユーザーの言語だと思われるものに基づいて、あるバージョンから別の言語バージョンへ自動的にリダイレクトすることを避けるよう勧めている。それにより、ユーザーや検索エンジンがすべてのバージョンに到達できなくなる可能性があるためだ。また、Googlebotは通常米国のIPアドレスからクロールし、Accept-Languageヘッダーを送信しないため、位置情報によってコンテンツを適応させるサイトは、すべてのバージョンがインデックスされない可能性があるとも指摘している。

より安全なパターンは、上記のサイトの多くが何らかの形で採用しているものだ。国や言語ごとに別々のURLを用意し、訪問者の信号に基づいた提案を行い、簡単に切り替えられるようにすることである。

結論

ウェブサイトが考える「あなたがどこにいるか」は、IP、ブラウザの言語、URL、そして記憶の組み合わせであり、サイトごとに組み合わせ方が異なる。ページが間違った国を表示したら、プロキシのせいにする前にこの4つをすべて確認すること。そしてテストする際は、一度に1つの信号だけを変え、サイトがどれに従っているのかを把握すること。

出典と参考文献

よくある質問

ウェブサイトはどうやって私がどの国にいるかを知るのですか?

多くはIPアドレスを使い、位置情報データベースで照合します。多くのサイトはAccept-Languageヘッダーからブラウザの言語も読み取り、URL内の国や言語を尊重し、以前の選択をクッキーに記憶します。これらのシグナルを適用する順序はサイトによって異なります。

ブラウザの言語を変えると、表示される国も変わりますか?

通常、単独では変わりません。私たちのテストでは、ブラウザの言語はある国の中でどの言語バージョンが表示されるかを変えただけで、国自体はIPが決定していました。国や言語を指定したURLは、その両方を上書きしました。

プロキシを使うと、なぜサイトが間違った国を表示するのですか?

通常は、他のシグナルが出口と一致していないためです。国を示すパスを含むURL、以前の訪問によるクッキー、サイトが好みとして扱うブラウザの言語などが原因です。クッキーを削除し、URLを確認して、一致する言語を設定してください。

自分のサイトでは、訪問者を位置情報でリダイレクトすべきですか?

Googleは、相手の言語だと思い込んだものに基づいてユーザーを自動的に別の言語版へリダイレクトすることを推奨していません。それによって、人々や検索エンジンがすべてのバージョンにアクセスできなくなる可能性があるためです。リダイレクトする代わりに、バージョンを提案し、人々が自分で切り替えられるようにしてください。

始める準備はできていますか?

Shifterのレジデンシャルプロキシをお試しください。IP 205M+件、195+カ国、$0.10/GBから。

始める