사이트가 미국의 영어 사용자를 위해 하나의 페이지를 보여주고, 물리적으로 마운틴 뷰 데이터 센터에 있는 구글봇은 전혀 다른 페이지를 보여줍니다. 공식적으로 이는 지역에 맞게 콘텐츠를 조정하려는 의도라도 이미 클로킹에 해당합니다. 사이트가 순위를 잃고, 수동 제재를 받으며, 파트너 네트워크에서 전체 도메인이 차단되는 이유인 6가지 전형적인 지오 리디렉션 오류를 분석합니다.
지오 리디렉션이란 무엇이며 비즈니스에 왜 필요한가
지오 리디렉션은 사용자를 그의 국가에 맞게 조정된 사이트 버전으로 자동으로 리디렉션하는 메커니즘입니다: 다른 언어, 통화, 가격, 제안. 인터넷 쇼핑몰은 독일의 구매자가 유로로 가격이 표시된 독일어 버전으로 즉시 이동하도록 사용합니다. 아비트라지 마케터는 지오 트래픽에 따라 다른 오퍼를 보여주기 위해 지오 리디렉션을 사용합니다 — 예를 들어, Tier-1 국가의 사용자에게는 하나의 랜딩 페이지를, 나머지 사용자에게는 대체 페이지나 다른 제품을 보여줍니다.
문제는 사용자의 국가를 IP로 결정하는 동일한 논리가 구글봇에도 적용된다는 것입니다. 구글의 봇 IP 주소는 물리적으로 미국에 위치해 있으며, 이는 러시아, 카자흐스탄 또는 독일의 페이지를 색인화하는지 여부와 관계없이 마찬가지입니다. 만약 지오 리디렉션 시스템이 크롤러와 실제 사람을 구분하지 못한다면, 결과는 하나입니다 — 구글은 실제 방문자가 보는 페이지와 다른 페이지를 보게 됩니다. 이는 구글 검색 센트럴의 클로킹에 대한 공식 정의이며, 이에 대한 처벌은 검색 결과에서의 하락부터 도메인 전체의 색인 제외까지 다양합니다.
왜 구글봇과 사람이 서로 다른 페이지를 보는가
이러한 불일치는 동시에 세 가지 이유로 발생하며, 일반적으로 서로 겹칩니다. 첫째, 구글봇은 구글에 속한 IP 주소로 사이트를 크롤링하며, 이러한 주소는 지오 서비스(MaxMind, IP2Location 등)에 의해 거의 100% 미국으로 식별됩니다. 둘째, 구글봇은 자체 User-Agent를 전송하며, 이는 종종 별도의 코드 분기에서 처리됩니다 — 때로는 색인화를 방해하지 않기 위해 의도적으로, 때로는 개발자의 실수로 인해 발생합니다. 셋째, 구글봇의 JS 렌더링 동작은 브라우저의 동작과 다릅니다: 크롤러는 클라이언트 JavaScript에 의존하는 리디렉션을 수행하지 않을 수 있으며, 이 경우 사용자가 JS를 활성화한 상태에서 보는 페이지와는 전혀 다른 페이지를 색인화하게 됩니다.
여기에 CDN 캐싱을 추가하면, 특정 국가의 버전에서 "고착"되어 모든 사용자에게 해당 버전을 제공할 수 있는 상황이 발생합니다. 이는 서버 응답에 올바른 Vary: Accept-Language 헤더 또는 유사한 지오 기준 캐싱 키가 없을 때 발생합니다.
오류 1: User-Agent 확인 없이 IP에 의한 리디렉션
가장 흔한 오류는 리디렉션 논리가 IP에 따른 국가 결정에만 의존하고, 요청을 하는 주체가 사람인지 크롤러인지에 대한 확인이 전혀 없다는 것입니다. 그 결과, 미국 IP 범위에서 접근하는 구글봇은 자동으로 미국 버전의 사이트로 리디렉션되며, 페이지가 원래 러시아나 카자흐스탄의 요청에 맞춰 홍보되었더라도 마찬가지입니다. 몇 주간의 크롤링 후, 구글의 색인은 "잘못된" 콘텐츠 버전으로 가득 차게 되고, 목표 지역에서의 순위는 명백한 이유 없이 하락하기 시작합니다.
해결책은 항상 알려진 User-Agent 및 검색 봇의 IP 범위(구글봇, 빙봇, 얀덱스봇)를 지오 리디렉션에서 제외하고, 특정 국가와 관계없이 페이지의 정식 버전을 제공하는 것입니다. User-Agent 확인은 필요한 장벽이지만 충분하지 않으며, 쉽게 위조될 수 있기 때문에, 심각한 프로젝트는 구글봇 확인을 위한 구글의 문서에서 권장하는 대로 역 DNS 조회(reverse DNS lookup)를 통해 IP를 추가로 검증합니다.
오류 2: 실제 사용자 대신 데이터 센터 IP로 테스트
두 번째 오류는 테스트 단계에서 발생합니다. 개발자나 마케팅 담당자가 일반 데이터 센터 프록시나 VPN을 통해 지오 리디렉션을 테스트하며, 이 논리는 마치 필요한 국가의 실제 사용자인 것처럼 작동합니다. 그러나 데이터 센터 IP는 일반 트래픽과 쉽게 구별되며, 많은 CDN 및 안티 프로드 시스템이 이를 별도의 플래그로 표시하고, 지오 타겟팅의 일부 논리는 이러한 주소에 대해 일반 가정용 IP 제공자와 다르게 작동할 수 있습니다.
결과적으로 테스트는 "통과"되고, 개발 서버에서 리디렉션이 완벽하게 작동하지만, 실제 사용자들은 목표 국가에서 잘못된 버전을 받게 됩니다. 이는 제공자의 지오 위치 데이터베이스나 CDN 규칙이 그들의 IP를 테스트 데이터 센터 주소와 다르게 해석하기 때문입니다. 올바른 검증을 위해서는 주거용 프록시를 사용하는 것이 좋습니다 — 이들은 필요한 국가의 실제 가정용 제공자의 IP를 가지고 있으며, 지오 서비스는 이를 실제 사용자로 식별합니다. 이는 실제 방문자가 사이트에서 보게 될 내용을 정확하게 보여줍니다.
오류 3: 캐시와 Vary 헤더의 부재
사이트가 CDN(Cloudflare, Fastly, Akamai) 뒤에 위치하고 지오 리디렉션이 원본 서버 수준에서 구현되었다면, CDN이 첫 번째로 제공된 페이지 버전을 캐시하고 다음 방문자에게 국가에 관계없이 해당 버전을 제공하는 상황에 쉽게 빠질 수 있습니다. 이는 서버 응답에 올바른 Vary: Accept-Language 헤더 또는 유사한 지오 기준 캐싱 키가 없을 때 발생합니다.
이 경우 구글봇은 첫 번째 방문 시 "올바른" 버전을 발견하고 이를 자신의 색인 시스템에 캐시한 후, 이후 몇 주 동안 반복 방문 시 동일한 버전을 받게 됩니다. 반면 다른 국가의 콘텐츠는 이미 변경되었을 수 있습니다. 이 동안 사용자들은 актуальную, но другую версию — расхождение нарастает постепенно и его сложно диагностировать без прямого сравнения ответов сервера для разных гео через инструменты вроде curl с подменой заголовков или через прокси с нужной геолокацией.
오류 4: JS 리디렉션, 봇이 다르게 해석하는 경우
구글봇은 JavaScript를 실행할 수 있지만 상당한 지연이 발생합니다(두 번째 렌더링 파동은 며칠이 걸릴 수 있음) 그리고 항상 사용자 브라우저와 동일하게 작동하지 않습니다. 만약 지오 리디렉션이 클라이언트 JS를 통해 구현되었다면 — 예를 들어, geo-API에 대한 fetch 요청 후 window.location을 통해 — 첫 번째 통과 시 크롤러가 리디렉션이 발생하기 전에 페이지를 색인화할 위험이 있습니다. 즉, 특정 지역에 대해 "잘못된" 콘텐츠 버전이 색인화될 수 있습니다.
이는 모든 개인화 로직이 클라이언트 측에 있는 단일 페이지 랜딩 페이지(SPA)에서 특히 중요합니다. 올바른 접근 방식은 서버 측에서 지오 식별 및 리디렉션을 수행하여 구글봇과 사용자가 페이지가 브라우저에서 렌더링되기 전에 HTTP 302 리디렉션을 받도록 하는 것입니다. 이는 크롤러가 특정 시점에 JS를 어떻게 처리할지에 대한 의존성을 제거합니다.
오류 5: 다양한 언어에 대한 hreflang 없이 하나의 URL
다섯 번째 오류는 동일한 URL에서 여러 언어 버전을 제공하려는 시도입니다. Google은 명확하게 권장합니다: 만약 동일한 URL의 콘텐츠가 사용자의 로케일에 따라 다르다면, 각 버전마다 서로 다른 URL(서브도메인, 서브폴더 또는 개별 도메인)을 제공하고 교차 hreflang 마크업을 추가하거나, 모든 사용자와 봇에게 동일한 버전을 정직하게 보여주고 수동으로 언어를 전환할 수 있는 기능을 추가해야 합니다.
hreflang이 없으면 구글은 물리적으로 /product의 러시아어 버전과 /product의 영어 버전이 서로 다른 청중을 위한 의도된 콘텐츠임을 이해할 수 없으며, 하나의 버전을 숨기려는 시도로 간주할 수 있습니다. 결과적으로 임의의 버전(보통 마지막 크롤링 시 봇이 접근할 수 있었던 버전)이 색인에 포함되며, 이는 모든 지역에서 동시에 순위가 매겨지게 되어 검색 결과의 관련성과 전환율에 부정적인 영향을 미칩니다.
오류 6: VPN 및 모바일 프록시 사용자를 위한 fallback 없음
여섯 번째 오류는 구글봇보다는 실제 사용자와 관련이 있습니다 — 그러나 이는 지오 리디렉션 주제와 직접적으로 관련이 있습니다. 종종 봇을 위한 동작을 "수정"하려는 시도가 VPN이나 모바일 인터넷을 사용하는 실제 사람들에게는 문제를 일으킵니다. 모바일 제공업체의 사용자들은 종종 CGNAT(Carrier-Grade NAT)를 통해 인터넷에 접속하며, 수만 명의 가입자가 동일한 외부 IP를 사용하고, 지오 데이터베이스는 이러한 IP를 이웃 국가에 속하는 것으로 잘못 식별할 수 있습니다.
사이트에 잘못 식별된 IP에 대해 수동으로 국가/언어를 전환할 수 있는 기능이 없다면, 사용자는 관련 없는 버전에서 갇혀버리게 되고 변경할 수 있는 방법이 없어 그냥 떠나게 됩니다. 이러한 시나리오를 테스트하기 위해서는 모바일 프록시를 통해 사이트의 동작을 확인하는 것이 좋습니다. 이는 CGNAT의 특성을 가진 실제 이동통신 제공자의 IP를 에뮬레이트하여 문제를 사전에 발견할 수 있도록 도와줍니다.
다양한 국가에서 구글의 시각으로 지오 리디렉션 확인하기
초기 진단을 위한 주요 도구는 구글 서치 콘솔의 "구글봇처럼 보기" 기능(URL 검사 도구)입니다. 이는 구글 크롤러가 실제로 어떤 HTML을 받는지 보여줍니다. 만약 여기서 당신이 브라우저에서 보는 것과 다른 버전이 표시된다면 — 문제가 확인된 것입니다. 그러나 서치 콘솔은 항상 미국 IP로 크롤링하므로, 지역별 사이트 동작을 비교하기 위해서는 별도의 테스트 레이어가 필요합니다.
실제로 마케팅 담당자와 SEO 전문가들은 안티 디텍트 브라우저(Dolphin Anty, AdsPower, Multilogin 또는 GoLogin)에서 여러 프로필을 설정하고 각 프로필에 필요한 국가의 프록시를 연결하여 사용자의 경로를 수동으로 따라갑니다: 사이트를 열고 어떤 버전이 로드되었는지, 어떤 Accept-Language 헤더가 전송되었는지, 리디렉션이 작동했는지 및 어떤 URL로 리디렉션되었는지 확인합니다. 이러한 검증을 위해 주거용 프록시가 도시나 제공업체를 선택할 수 있어 가장 신뢰할 수 있는 실제 방문자를 에뮬레이트할 수 있습니다. 이는 일부 서비스가 지오 평가 전에 의심스러운 것으로 표시할 수 있는 데이터 센터 주소와는 다릅니다.
| 프록시 유형 | 어떤 검증에 적합한가 | 잘못된 결과의 위험 |
|---|---|---|
| 주거용 프록시 | 필요한 국가/도시의 일반 가정 사용자 에뮬레이션 | 낮음 |
| 모바일 프록시 | CGNAT 및 모바일 지오 위치의 동작 검증 | 낮음 |
| 데이터 센터 프록시 | 국가별 리디렉션 작동 여부의 빠른 검증 | 높음: 일부 지오 데이터베이스는 IP를 가정용과 다르게 표시합니다 |
서버 로직의 동작(시각적 렌더링이 아닌)을 검증하기 위해서는 curl을 통해 서버의 원시 응답을 추가로 확인하는 것이 유용합니다. 이때 User-Agent를 구글봇으로 변경하고 X-Forwarded-For 헤더를 필요한 국가의 IP로 변경하면, 서버가 어떤 HTTP 상태 및 Location을 제공하는지 확인할 수 있으며, 이는 오류 4 및 오류 1을 단 한 명령으로 잡아낼 수 있게 해줍니다.
안전한 지오 리디렉션 설정을 위한 체크리스트
- 구글봇, 빙봇 및 얀덱스봇은 User-Agent에 따라 지오 리디렉션에서 제외되며 역 DNS를 통해 확인됨
- 리디렉션은 서버 측에서 구현됨 (302/307), 클라이언트 JavaScript만으로는 아님
- 지오/언어에 따른 올바른 CDN 캐싱을 위한
Vary헤더가 설정됨 - 각 언어 버전마다 교차 hreflang 마크업이 있는 별도의 URL가 있음
- 잘못 식별된 IP를 위한 fallback으로 국가/언어 수동 전환 기능이 있음
- 테스트는 데이터 센터 주소뿐만 아니라 필요한 국가의 주거용 및 모바일 프록시를 통해 수행됨
- 분기마다 구글 서치 콘솔이 보여주는 내용을 확인하여 실제 사용자가 보는 것과 일치하는지 확인됨
결론
구글봇이 보는 것과 사용자가 보는 것 사이의 불일치는 의도적인 검색 엔진 속임수가 드물며, 대개는 쌓인 기술적 부채입니다: 봇 확인 없이 IP에 의한 리디렉션, Vary 헤더 없는 캐시, 크롤러가 수행하지 못하는 JS 리디렉션, 언어 버전에 대한 hreflang의 부재. 이러한 오류 각각은 사소해 보이지만, 함께 모이면 구글의 눈에 전형적인 클로킹의 모습을 만들어내며, 이에 따른 제재가 발생합니다.
사이트가 봇과 사람 모두에게 동일하게 정직하게 행동하는지 확인하는 유일한 신뢰할 수 있는 방법은 필요한 국가의 실제 IP로 정기적으로 검증하는 것입니다. 이러한 진단을 위해 주거용 프록시를 사용하여 일반 가정 사용자를 에뮬레이트하고, 모바일 프록시를 사용하여 CGNAT 시나리오를 검증하는 것이 좋습니다 — 이는 각 지역에서 실제로 귀하의 청중이 보는 내용을 최대한 정확하게 보여주며, 문제가 발생하기 전에 이를 발견하는 데 도움이 됩니다.