클로킹
클로킹(Cloaking)은 검색엔진 봇과 실제 사용자에게 서로 다른 콘텐츠나 URL을 보여 검색 순위를 조작하고 사용자를 속이는 행위입니다. 구글은 이를 스팸 정책 위반으로 규정하며, 순위 하락이나 검색 결과에서의 완전 제거로 제재합니다.
- 클로킹은 검색엔진 크롤러와 사용자에게 의도적으로 다른 콘텐츠·URL을 제공해 순위를 조작하는 기법입니다.
- 구글 검색 스팸 정책상 명백한 위반 행위로, 순위 하락 또는 색인 제외 같은 제재 대상입니다.
- 봇과 사용자에게 비슷한 콘텐츠를 보여 주는 다이내믹 렌더링은 클로킹이 아니지만, 완전히 다른 콘텐츠를 내보내면 클로킹이 됩니다.
- 해킹된 사이트가 관리자 몰래 클로킹에 악용되는 경우도 있어, 의도와 무관하게 사이트가 피해를 볼 수 있습니다.
- 봇과 사용자에게 동일한 콘텐츠를 제공하는 것이 가장 확실한 회피 원칙입니다.
클로킹이란?
클로킹(Cloaking)은 검색엔진 봇(크롤러)이 요청할 때와 실제 사용자가 요청할 때 서로 다른 콘텐츠 또는 URL을 보여 주는 행위입니다. 구글은 클로킹을 "검색 순위를 조작하고 사용자를 오도할 의도로 사용자와 검색엔진에 서로 다른 콘텐츠를 제시하는 행위"로 정의하며, 검색 결과가 사용자의 기대와 달라지기 때문에 스팸 정책 위반으로 분류합니다.
핵심은 의도와 차이입니다. 사용자에게는 의미 없는 페이지를 보여 주면서 봇에게는 특정 키워드로 가득 찬 페이지를 노출하거나, User-Agent나 IP를 기준으로 콘텐츠를 분기해 검색엔진만 다른 화면을 보게 만드는 방식이 전형적인 클로킹입니다.
대표적인 클로킹 사례
구글 검색 스팸 정책 문서는 다음과 같은 예시를 제시합니다.
- 검색엔진에는 여행 관련 콘텐츠를 보여 주면서, 실제 사용자에게는 할인 의약품 판매 페이지를 노출하는 경우
- 사람이 아닌 검색엔진이 페이지를 요청할 때만 보이도록 텍스트나 키워드를 삽입하는 경우
이 밖에도 사용자에게는 이미지를, 검색엔진에는 전혀 다른 텍스트 블록을 제공하거나, 봇 IP 대역에만 별도의 콘텐츠를 응답하는 방식 등이 클로킹에 해당합니다.
다이내믹 렌더링과의 차이
봇과 사용자에게 다른 응답을 내보낸다고 해서 모두 클로킹인 것은 아닙니다. 자바스크립트 기반 페이지의 색인을 돕기 위해 크롤러에는 서버에서 미리 렌더링한 HTML을, 사용자에게는 클라이언트 렌더링 버전을 제공하는 다이내믹 렌더링이 대표적입니다.
구글은 "Googlebot은 일반적으로 다이내믹 렌더링을 클로킹으로 간주하지 않으며, 다이내믹 렌더링이 비슷한 콘텐츠를 생성하는 한 클로킹으로 보지 않는다"고 명시합니다. 즉 판단 기준은 콘텐츠의 동일성입니다. 구글의 비유에 따르면 "사용자에게는 고양이 페이지를, 크롤러에는 강아지 페이지를 제공하는 사이트는 클로킹"입니다.
| 구분 | 클로킹 | 다이내믹 렌더링 |
|---|---|---|
| 의도 | 순위 조작·사용자 기만 | 자바스크립트 콘텐츠 색인 지원 |
| 봇·사용자 콘텐츠 | 본질적으로 다름 | 실질적으로 동일 |
| 정책 판정 | 스팸 정책 위반 | 위반 아님(동일 콘텐츠 전제) |
| 제재 위험 | 순위 하락·색인 제외 | 없음 |
다만 구글은 다이내믹 렌더링을 권장 해법이 아닌 임시 우회책으로 보며, 복잡성과 리소스 부담 때문에 서버 사이드 렌더링이나 정적 렌더링, 하이드레이션을 우선 권장합니다. 또한 다이내믹 렌더링으로 봇과 사용자에게 완전히 다른 콘텐츠를 내보내면 그 순간 클로킹으로 간주될 수 있습니다.
패널티와 근거
클로킹은 구글 검색 스팸 정책상 명백한 위반 행위입니다. 구글은 이를 위반한 사이트에 대해 검색 순위 하락 또는 검색 결과에서의 완전 제거(색인 제외)를 적용할 수 있다고 밝히고 있습니다. 제재는 알고리즘에 의해 자동으로 적용되거나, 수동 조치(Manual Action)로 부과되어 서치 콘솔에 통지되기도 합니다.
주의할 점은 클로킹이 사이트가 해킹되었을 때 공격자가 악성 변경을 숨기기 위해 사용되는 경우도 있다는 사실입니다. 관리자의 의도와 무관하게 클로킹이 발생할 수 있으므로, 정기적인 보안 점검과 색인 상태 모니터링이 필요합니다.
회피 가이드
- 검색엔진 봇과 사용자에게 동일한 콘텐츠와 URL을 제공합니다.
- User-Agent나 IP 주소를 기준으로 콘텐츠를 분기해 검색엔진만 다른 화면을 보게 만들지 않습니다.
- 자바스크립트나 이미지, 페이월을 사용하더라도 구글봇이 사용자와 동일한 본문에 접근할 수 있게 합니다.
- 다이내믹 렌더링을 쓴다면 봇에 제공하는 사전 렌더링 결과가 사용자 화면과 실질적으로 같은지 정기적으로 검증합니다.
- 서치 콘솔의 URL 검사 도구로 구글이 실제로 보는 렌더링 결과를 확인하고, 사람이 보는 화면과 대조합니다.
- 해킹에 의한 클로킹을 막기 위해 보안 패치와 접근 권한 관리를 유지하고, 색인된 페이지에 의심스러운 콘텐츠가 없는지 점검합니다.