독일 출구를 통해 어떤 페이지를 열면 영어가 나옵니다. 동료가 같은 주소를 열면 미국 스토어가 나옵니다. 두 사람 모두 올바른 프록시를 사용했는데, 무슨 일이 일어난 걸까요? 웹사이트는 하나의 신호만으로 당신의 국가를 결정하는 경우가 드뭅니다. 여러 신호를 조합하며, 그 순서는 사이트마다 다릅니다. 현지화 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는 전혀 리디렉션하지 않았습니다. 독일 출구와 독일어 브라우저를 사용해도 여전히 영어로 된 국제 페이지가 나왔으며, 선택은 방문자에게 맡겨져 있었습니다.
이것이 당신의 점검에 의미하는 것
- 출구와 언어를 함께 설정하세요. 독일 시장을 영어 브라우저로 테스트하면 Netflix 행에서 보듯 실제 방문자는 보지 못할 조합을 얻을 수 있습니다. 일부 사이트는 시간대도 확인하므로 시간대도 맞추세요.
- 최종 URL을 기록하세요. 요청한 주소와 도달한 페이지가 다른 경우가 많습니다. 리디렉션이 눈에 띄지 않게 지나가지 않도록 둘 다 저장하세요.
- 각 시장을 새로 시작하세요. 이전 방문의 쿠키가 IP를 무시할 수 있습니다. 국가마다 새 세션을 사용하세요.
- URL만 믿지 마세요. Google 같은 사이트에서는 같은 URL이 IP에 따라 다른 콘텐츠를 제공합니다. Apple 같은 사이트에서는 URL이 결정하고 IP는 상관없습니다. 당신이 다루는 사이트가 어느 쪽인지 테스트하세요.
- 되고 싶은 방문자에 맞춰 출구를 선택하세요. 출구 국가 선택하기에 관한 글에서 위치가 중요한 경우와 그렇지 않은 경우를 다룹니다.
사이트를 운영한다면
지오 리디렉션은 당신에게 불리하게 작용할 수 있습니다. Google의 가이드라인은 추정한 사용자 언어를 기준으로 한 언어 버전에서 다른 버전으로 자동 리디렉션하는 것을 피하라고 권합니다. 이는 사용자와 검색 엔진이 모든 버전에 도달하지 못하게 막을 수 있기 때문입니다. 또한 Googlebot은 보통 미국 IP 주소로 크롤링하며 Accept-Language 헤더를 보내지 않으므로, 위치에 따라 콘텐츠를 조정하는 사이트는 모든 버전이 색인되지 않을 수 있다고 명시합니다.
더 안전한 방식은 위의 사이트 대부분이 어떤 형태로든 하고 있는 것입니다: 국가 또는 언어별로 분리된 URL, 방문자의 신호에 기반한 제안, 그리고 쉽게 전환할 수 있는 방법입니다.
결론
웹사이트가 당신이 어디에 있는지 판단하는 방식은 IP, 브라우저 언어, URL, 기록의 조합이며, 사이트마다 다르게 결합됩니다. 페이지가 잘못된 국가를 보여줄 때는 프록시를 탓하기 전에 이 네 가지를 모두 확인하고, 테스트할 때는 한 번에 하나의 신호만 바꿔서 사이트가 어떤 것을 따르는지 파악하세요.
출처 및 참고자료
- Google Search Central, Managing multi-regional and multilingual sites: developers.google.com
- Google Search Central, How Google crawls locale-adaptive pages: developers.google.com