2026년 10월 7일 기준으로 Shifter는 Oxylabs와 Bright Data보다 많은, 가장 큰 규모의 실시간 미국 IP 풀을 보유하고 있으며, 비용은 그 일부에 불과합니다.Shifter는 이제 가장 많은 미국 라이브 IP 풀을 보유하고 있습니다

벤치마크 보기

지오 리다이렉트: 웹사이트가 당신이 보는 국가를 결정하는 방법

사이트는 IP, 브라우저 언어, URL 또는 저장된 선택 항목을 바탕으로 당신의 국가를 선택합니다. 실제 사이트들이 이를 어떻게 조합하는지 테스트해 보고, 자신의 설정을 확인하는 방법도 알아봅니다.

고객 성공 · 2026년 11월 6일에 업데이트됨 · 5분 읽기
IP 주소Accept-LanguageURL: /de/쿠키apple.com/de/exit US
네 가지 신호, 하나의 페이지. IP가 무엇을 말하든 Apple에서는 호박색 쪽이 우선합니다.
지식
이 페이지에서
  1. 네 가지 신호
  2. 실제 사이트는 무엇을 하는가
  3. 이것이 당신의 점검에 의미하는 것
  4. 사이트를 운영한다면
  5. 결론
  6. 출처 및 참고자료

독일 출구를 통해 어떤 페이지를 열면 영어가 나옵니다. 동료가 같은 주소를 열면 미국 스토어가 나옵니다. 두 사람 모두 올바른 프록시를 사용했는데, 무슨 일이 일어난 걸까요? 웹사이트는 하나의 신호만으로 당신의 국가를 결정하는 경우가 드뭅니다. 여러 신호를 조합하며, 그 순서는 사이트마다 다릅니다. 현지화 QA를 실행하거나 로컬 페이지를 모니터링한다면, 이러한 신호를 아는 것이 많은 혼란을 줄여줍니다.

이 가이드는 사이트가 사용하는 네 가지 신호, 실제 사이트가 이를 조합하는 방식을 검증한 예시, 그리고 관심 있는 사이트를 확인하는 방법을 다룹니다.

네 가지 신호

신호보통 무엇을 결정하는가어떻게 제어하는가
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

네 개의 사이트, 네 가지 다른 동작.

Netflix는 IP와 언어를 모두 사용합니다. 출구가 국가 경로를 결정했고, 브라우저 언어가 버전을 결정했습니다: 독일 출구와 영어 브라우저의 조합은 /de-en/을, 독일 브라우저와의 조합은 /de/를 보여주었습니다. 브라질 출구와 영어 브라우저의 조합은 /br-en/을 보여주었습니다.

Google은 하나의 URL을 유지하면서 언어는 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, 기록의 조합이며, 사이트마다 다르게 결합됩니다. 페이지가 잘못된 국가를 보여줄 때는 프록시를 탓하기 전에 이 네 가지를 모두 확인하고, 테스트할 때는 한 번에 하나의 신호만 바꿔서 사이트가 어떤 것을 따르는지 파악하세요.

출처 및 참고자료

자주 묻는 질문

웹사이트는 제가 어느 국가에 있는지 어떻게 아는 건가요?

대부분 IP 주소를 지리정보 데이터베이스에서 조회해서 사용합니다. 많은 사이트가 Accept-Language 헤더에서 브라우저 언어도 읽고, URL에 포함된 국가나 언어를 반영하며, 쿠키에 저장된 이전 선택을 기억하기도 합니다. 사이트가 이러한 신호들을 적용하는 순서는 사이트마다 다릅니다.

브라우저 언어를 바꾸면 표시되는 국가도 바뀌나요?

보통은 그것만으로는 바뀌지 않습니다. 저희 테스트에서는 브라우저 언어가 해당 국가 내에서 어떤 언어 버전을 보여줄지를 결정했고, 국가는 IP가 결정했습니다. 국가나 언어를 명시한 URL은 둘 다를 덮어썼습니다.

프록시를 사용할 때 사이트가 잘못된 국가를 보여주는 이유는 무엇인가요?

보통 다른 신호가 종료 지점과 일치하지 않기 때문입니다. 국가 경로가 포함된 URL, 이전 방문의 쿠키, 또는 사이트가 선호도로 취급하는 브라우저 언어가 그 예입니다. 쿠키를 지우고, URL을 확인하고, 일치하는 언어를 설정하세요.

제 사이트에서 방문자를 위치에 따라 리디렉션해야 할까요?

Google은 사용자의 언어라고 추정되는 정보를 바탕으로 자동으로 다른 언어 버전으로 리디렉션하는 것을 권장하지 않습니다. 이는 사람들과 검색 엔진이 모든 버전에 접근하지 못하게 막을 수 있기 때문입니다. 대신 버전을 제안하고 사람들이 직접 전환할 수 있게 하세요.

시작할 준비가 되셨나요?

205M개 이상의 IP, 195개 이상의 국가를 지원하는 Shifter의 레지덴셜 프록시를 $0.10/GB부터 이용해보세요.

시작하기