클로킹 (Cloaking)
최종 업데이트:
정의
클로킹(Cloaking)은 검색엔진 크롤러와 일반 사용자에게 의도적으로 다른 콘텐츠를 제공하는 기법이다. 구글에는 E-E-A-T가 높고 키워드가 풍부한 페이지를 보여주고, 실제 사용자에게는 스팸·광고·관련 없는 다른 페이지를 보여주는 방식이다.
Google Spam Policy는 클로킹을 "사용자와 구글 모두에게 관련성 높은 결과를 제공하기 위해 구글이 색인하는 것과 다른 콘텐츠를 사용자에게 표시하는 행위"로 정의하며 명시적으로 금지한다.
요약
클로킹 여부 자가 점검: GSC URL 검사에서 "구글이 본 페이지 화면"을 캡처하고, 일반 브라우저에서 같은 URL을 열어 비교한다. 두 화면이 다르면 클로킹 또는 클로킹처럼 작동하는 문제다.
클로킹의 작동 방식
방식 1: User-Agent 기반 분기
HTTP 요청의 User-Agent 헤더를 확인해 구글봇(Googlebot)이면 최적화된 페이지를, 일반 브라우저이면 다른 페이지를 반환한다.
if "Googlebot" in request.headers.get("User-Agent", ""):
return optimized_page() # 구글에게 보이는 페이지
else:
return spam_page() # 사용자에게 보이는 페이지
방식 2: IP 기반 분기
구글봇은 알려진 IP 대역에서 크롤한다. 요청 IP가 구글봇 대역이면 좋은 페이지를, 아니면 다른 페이지를 반환한다.
방식 3: JavaScript 기반 클로킹
구글봇은 일부 JavaScript를 실행하지 못하거나 지연 실행한다. JS 실행 여부에 따라 콘텐츠를 분기한다. 구글봇에게는 키워드가 담긴 서버 사이드 렌더링 콘텐츠를, 사용자에게는 광고 페이지나 리다이렉트를 보여준다.
방식 4: CSS/스타일 기반 숨기기
구글봇에게는 HTML에 키워드가 있지만 사용자에게는 CSS로 숨겨져 보이지 않는다.
.hidden-keywords {
display: none; /* 사용자에게 숨김, 봇은 HTML 읽음 */
}
클로킹을 Google이 엄격히 처벌하는 이유
사용자 기만
사용자는 검색 결과를 신뢰하고 클릭한다. 클로킹은 검색 결과와 실제 도달 페이지의 불일치를 만들어 사용자를 기만한다.
검색 결과 품질 저하
클로킹한 페이지가 좋은 순위를 차지하면 실제 사용자에게 필요한 정보가 밀려난다. 구글 검색 자체의 신뢰도를 위협한다.
악성 코드·스팸 유도 경로
실제로 클로킹이 사용되는 많은 사례에서 사용자는 악성 소프트웨어 다운로드, 피싱 사이트, 도박·성인 사이트로 유도된다.
클로킹 vs 정상 사용자 맞춤화
[COMPARISON_TABLE: 클로킹(금지) vs 정상 사용자 분기(허용)]
클로킹 (금지)
- 봇과 사용자에게 의도적으로 다른 핵심 콘텐츠 제공
- 검색 결과 노출 키워드와 실제 페이지 주제 불일치
- 봇에게는 품질 높은 콘텐츠, 사용자에게는 가치 없는 콘텐츠
정상 사용자 맞춤화 (허용)
- 사용자 언어·위치·기기에 따른 콘텐츠 조정
- 콘텐츠 본질은 동일하고 표현 방식만 다름
- 구글봇도 실제 사용자와 동일한 콘텐츠 핵심을 볼 수 있음
경계 케이스
페이월(Paywall): 일부 미리보기 + 결제 후 전체 공개는 허용된다. 단, 구조화 데이터로 페이월 상태를 명시해야 한다.
A/B 테스트: 일시적이고 범위가 제한적이면 허용된다. 단, 봇에게 항상 실제 콘텐츠를 보여줘야 한다.
다국어: hreflang으로 언어별 다른 URL을 명시하고 봇에게도 동일하게 처리하면 허용된다.
클로킹의 페널티
즉시 수동 조치
구글이 클로킹을 발견하면 가장 신속하게 수동 조치를 적용한다. 클로킹은 "의도적 사기"로 분류되어 다른 위반보다 엄격히 처리된다. 자세히는 구글 수동 조치 항목 참조.
사이트 전체 인덱스 제거
심각한 클로킹의 경우 사이트 전체가 구글 인덱스에서 제거된다. 이 상태에서 회복은 매우 어렵고 시간이 오래 걸린다.
SpamBrain 자동 감지
Google SpamBrain은 클로킹 패턴을 학습해 자동으로 감지한다. 구글은 자체 크롤 인프라를 통해 정기적으로 사이트를 검증한다. 자세히는 SpamBrain 항목 참조.
클로킹 진단 방법
GSC URL 검사 활용
- GSC → URL 검사 탭에 URL 입력
- "렌더링된 페이지" 확인 (구글이 본 화면 스크린샷)
- 일반 브라우저에서 같은 URL 열기
- 두 화면 비교
콘텐츠 본질이 다르면 클로킹 가능성이 있다.
사이트 점검 도구
- Chrome DevTools: User-Agent를 Googlebot으로 변경해 응답 비교
- Fetch as Googlebot 서드파티 도구: 구글봇 입장에서 페이지 조회
자체 코드 감사
서버 코드에서 User-Agent 또는 IP 기반 분기가 있는지 검토한다. 특히 과거에 SEO 업체가 코드를 수정한 사이트는 반드시 확인이 필요하다.
클로킹 해결 절차
- 클로킹 코드 즉시 제거: User-Agent, IP 기반 분기 코드 삭제
- 모든 사용자에 동일 콘텐츠 제공: 봇 = 일반 사용자와 같은 콘텐츠
- 서버 캐시 초기화: 캐시된 클로킹 응답이 남아있지 않도록
- GSC에서 URL 재검사 요청: 수정 후 재크롤 요청
- 수동 조치 재심사 요청: 수동 조치가 있었다면 GSC에서 재심사 요청
한국 시장 적용
한국에서 발견되는 클로킹 패턴
- SEO 대행사 삽입 코드: 과거 일부 SEO 업체가 클라이언트 사이트에 클로킹 코드를 삽입한 사례. 사이트 이전·리뉴얼 시 코드 감사가 필요하다.
- 해킹된 사이트의 클로킹: 도박·성인 사이트가 정상 사이트를 해킹해 클로킹 코드를 삽입하는 방식. GSC 보안 이슈 탭에서 발견된다.
- 한국어 키워드 클로킹: 한국어 고트래픽 키워드로 구글에 노출 후 무관한 한국어 페이지로 유도하는 사례.
자가 점검 권장
사이트 운영 중 다음 신호가 있으면 클로킹 가능성을 확인한다.
- GSC에서 클릭은 있지만 GA 방문이 없음 (유저가 리다이렉트됨)
- 특정 페이지의 이탈률이 비정상적으로 높음
- GSC URL 검사 화면과 실제 브라우저 화면이 다름
자주 묻는 질문
Q. 실수로 클로킹이 된 경우도 처벌받나요?
A. 구글은 의도를 증명하기 어렵다. 기술적 오류로 봇과 사용자에게 다른 콘텐츠가 제공된 경우에도 알고리즘 페널티가 발생할 수 있다. 발견하는 즉시 수정하고, 수동 조치를 받았다면 재심사 요청 시 비의도적 오류임을 설명하는 것이 도움이 된다.
Q. 로그인한 사용자와 비로그인 사용자에게 다른 콘텐츠를 보여주는 것도 클로킹인가요?
A. 아니다. 로그인 상태에 따른 콘텐츠 차이는 허용된다. 단, 구글봇은 항상 비로그인 상태로 접근하므로 비로그인 사용자가 보는 콘텐츠가 색인된다. 로그인 후에만 핵심 콘텐츠가 보이는 구조라면 색인 문제가 발생한다.
Q. 모바일 사용자에게 다른 페이지를 보여주는 것도 클로킹인가요?
A. 콘텐츠 본질이 같고 UI/레이아웃만 다르다면 정상이다. 모바일 기기에만 다른 URL로 리다이렉트하거나(m.example.com), 반응형 디자인으로 다른 레이아웃을 보여주는 것은 허용된다. 단, 구글봇에게도 동일하게 처리해야 한다.
Q. 클로킹한 사이트가 회복된 사례가 있나요?
A. 있다. 클로킹 코드를 완전히 제거하고 재심사 요청 후 수동 조치가 해제된 사례들이 있다. 단, 클로킹이 오랫동안 지속된 경우 회복에 수개월이 걸릴 수 있으며, 일부 케이스에서는 도메인 자체의 신뢰도가 낮아져 회복이 어려운 경우도 있다.
Q. 해킹으로 인한 클로킹이 발생했습니다. 어떻게 해야 하나요?
A. 즉시 ①악성 코드 제거 ②보안 취약점 패치 ③모든 비밀번호 변경 ④GSC 보안 이슈 보고 확인 ⑤재심사 요청을 진행한다. 해킹 피해자 입장임을 재심사 요청서에 명확히 기술하면 구글이 더 신속하게 처리한다.
관련 출처
- Google Search Central (2024). Spam policies for Google web search — Cloaking. https://developers.google.com/search/docs/essentials/spam-policies#cloaking
- Google Search Central (2024). Hacked sites. https://developers.google.com/search/docs/monitor-debug/security/hacked
- Search Engine Journal (2024). What Is Cloaking in SEO? Definition, Examples & How to Avoid It.