클로킹 (블랙햇 기법) (Cloaking)
Cloaking
클로킹은 검색엔진 로봇과 실제 사용자에게 서로 다른 콘텐츠를 노출하는 기법으로, 구글의 스팸 정책을 정면으로 위반합니다. 적발 시 사이트 전체가 검색 결과에서 영구 삭제(De-indexing)될 위험이 매우 높으므로 절대 사용해서는 안 됩니다.
클로킹은 검색엔진 로봇과 실제 사용자에게 서로 다른 콘텐츠를 노출하는 기법으로, 구글의 스팸 정책을 정면으로 위반합니다. 적발 시 사이트 전체가 검색 결과에서 영구 삭제(De-indexing)될 위험이 매우 높으므로 절대 사용해서는 안 됩니다.
📖 개념 정의 및 실무 적용
클로킹은 과거 검색엔진의 알고리즘 허점을 이용해 특정 키워드 순위를 강제로 올리기 위해 사용되던 블랙햇 SEO 기법입니다. 기술적으로는 서버 사이드에서 User-Agent나 IP를 판별하여 로봇에게는 최적화된 텍스트를, 사용자에게는 광고나 다른 콘텐츠를 보여주는 방식으로 작동합니다.
💻 실무 활용 코드 스니펫 (PYTHON)
// 클로킹 여부를 확인하기 위한 서버 로그 분석용 파이썬 스크립트 예시
import re
def check_cloaking_risk(user_agent, content_type):
# 구글봇으로 위장한 악성 봇 탐지 로직
googlebot_pattern = re.compile(r'Googlebot', re.IGNORECASE)
if googlebot_pattern.search(user_agent) and content_type == 'text/html':
return 'Safe: Standard Googlebot access'
return 'Warning: Potential Cloaking or Bot Spoofing detected'
⚡ 5분 만에 적용하는 실행 스텝
- Google Search Console의 ‘URL 검사’ 도구를 사용하여 실제 구글이 보는 페이지와 사용자가 보는 페이지가 일치하는지 확인합니다.
- 서버 로그를 분석하여 특정 User-Agent(Googlebot 등)에 대해서만 다른 응답(HTTP 200 vs 302/403)을 반환하는 로직이 있는지 확인합니다.
- CDN 설정이나 WAF(웹 방화벽)에서 로봇과 일반 사용자의 경로를 분리하는 규칙이 있는지 검토하고 즉시 제거합니다.
- 사이트맵과 robots.txt가 실제 콘텐츠 구조와 일치하는지 재검증합니다.
첫째, 동적 렌더링(Dynamic Rendering)과 클로킹을 혼동하지 마세요. 구글은 이제 자바스크립트 렌더링을 지원하므로, 단순히 JS를 실행하지 못하는 봇을 위해 별도 페이지를 만드는 것은 불필요하며 위험합니다. 둘째, 서버 사이드 리다이렉션을 사용할 때는 반드시 301(영구 이동)을 사용하고, 로봇에게만 다른 페이지를 보여주는 조건부 리다이렉션은 피해야 합니다.
첫째, ‘사용자 경험 개선’을 명목으로 IP 기반 리다이렉션을 거는 행위는 클로킹으로 오인받기 쉽습니다. 국가별 리다이렉션은 반드시 언어 설정(hreflang)을 사용하세요. 둘째, 광고주를 위해 특정 트래픽만 다른 페이지로 보내는 행위는 구글의 스팸 정책 위반입니다. 모든 사용자와 로봇에게 동일한 콘텐츠를 제공하는 것이 원칙입니다.
❓ 자주 묻는 질문 (FAQ)
A. 아니요. 반응형 웹 디자인이나 별도의 모바일 URL(m.domain.com)을 사용하는 것은 정상적인 SEO 관행입니다. 단, 로봇에게만 모바일 페이지를 보여주고 사용자에게는 다른 내용을 보여주는 것이 문제의 핵심입니다.
A. 클로킹 로직을 즉시 제거하고, 구글 서치 콘솔을 통해 ‘재검토 요청(Reconsideration Request)’을 보내야 합니다. 이때 어떤 로직이 문제였고 어떻게 수정했는지 상세히 소명해야 하며, 복구까지는 수 주에서 수개월이 소요될 수 있습니다.