본문으로 건너뛰기
트래픽 품질 및 사기

정상 봇 vs 악성 봇: 차단하기 전에 분류하세요

정상 봇 vs 악성 봇: 차단하기 전에 분류하세요

IP 하나가 10분 동안 600페이지를 요청합니다. 가격 스크레이퍼라면 멈춰야 합니다. 새 사이트맵을 발견한 Googlebot이라면 차단했을 때 수천 개 상품이 지연될 수 있습니다. 행동은 똑같이 "빠르게" 보이지만 운영상의 결정은 정반대입니다.

정상 봇과 악성 봇은 user agent, 속도, JavaScript 지원 여부만으로 구분할 수 없습니다. 세 가지 질문에 답하세요. 누구인가, 무엇을 하고 있는가, 어떤 영향을 만드는가?

정상 봇, 악성 봇, 정체불명의 봇

정상 봇

정상 봇은 사이트가 받아들이거나 이득을 얻는 목적을 수행합니다.

  • 검색 엔진 크롤러;
  • 직접 설정한 링크, 업타임, 보안 모니터;
  • 소셜 공유 미리보기 가져오기 도구;
  • 승인된 접근성 또는 아카이브 서비스;
  • 계약에 따른 파트너 API 클라이언트.

정상이 무제한을 뜻하지는 않습니다. Googlebot은 자동 크롤링에서 robots 규칙을 따르며, 내 모니터에도 엔드포인트와 속도 경계가 있어야 합니다.

악성 봇

악성 자동화는 피해를 만들거나 사이트의 목적에 반하게 접근합니다.

  • 사기성 광고 클릭;
  • 가격, 콘텐츠, 고객 데이터 스크레이핑;
  • 크리덴셜 스터핑과 비밀번호 공격;
  • 계정 생성, 폼 스팸, 재고 선점;
  • 취약점 스캔;
  • 애널리틱스를 오염시키는 가짜 트래픽.

정체불명의 봇

가장 큰 그룹인 경우가 많습니다. SEO 도구, 모바일 애플리케이션, 헤드리스 브라우저, 테스트용 프록시, 새로운 AI 서비스가 포함됩니다. 즉시 차단하면 연동이 깨질 수 있고, 무제한 접근을 허용하면 위험이 생깁니다.

이 그룹에는 이분법적 결정보다 rate limit과 관찰이 더 나은 경우가 많습니다.

user agent는 신원 확인이 아닙니다

다음과 같이 말하는 요청이:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

구글에서 왔다는 것을 증명한 것은 아닙니다. 어떤 스크립트든 그 텍스트를 복사할 수 있습니다.

구글은 다음을 권장합니다.

  1. 리버스 DNS가 구글 소유의 유효한 호스트 이름을 반환해야 하고, 정방향 DNS가 같은 IP로 확인되어야 합니다;
  2. 소스 IP를 구글이 공개한 크롤러 대역과 비교합니다.

user agent만으로 허용 목록을 만들면 사칭을 부릅니다. user agent만으로 차단하면 브라우저인 척하는 봇을 놓칩니다.

봇 분류를 위한 신호 매트릭스

완벽한 단일 신호는 없습니다. 여러 가지를 결합하세요.

신호 질문
네트워크 신원 가정용, 데이터센터, VPN, Tor, 확인된 크롤러 대역 중 무엇인가?
User agent TLS 핑거프린트와 행동에 부합하는가?
속도 분당, 5분당, 시간당 요청 수는?
내비게이션 HTML, CSS, 이미지, 일반적인 경로를 불러오는가?
행동 스크롤, 클릭, 포커스, 읽는 시간, 전환이 자연스러운가?
목표 공개 콘텐츠인가, 로그인·결제·폼 엔드포인트인가?
영향 자원 비용, 애널리틱스 왜곡, 광고 손실이 있는가?

정상 크롤러는 신원이 확인되고, robots를 인식하고, 공개 콘텐츠에 집중하면서도 빠를 수 있습니다. 스크레이퍼는 Chrome이라고 주장하면서 자산을 건너뛰고, IP를 돌려 가며, 상품만 수집할 수 있습니다.

의심스러운 행동 패턴 여섯 가지

1. 사람의 리듬이 없는 높은 속도

정확히 200ms 간격의 수백 번의 클릭은 사람이 한 것일 가능성이 낮습니다. 정상 크롤러도 빠르기 때문에 속도를 신원 및 대상 URL과 결합해 판단하세요.

2. 비즈니스 가치가 있는 엔드포인트에만 요청

?? ?? ???? ?? ??? ????, ?? ??? ??? ?? ???? ????, ?? ??? ?? ?? ???? ???? ?????. ???? ?? ??? ???? ?? ?? ??? ???? ??? ?????.

3. 핑거프린트와 user agent의 불일치

user agent는 iPhone의 Safari라고 하는데 TLS, 헤더 순서, 뷰포트는 데스크톱 헤드리스 Chromium과 비슷합니다. user agent 텍스트 자체보다 이런 불일치가 더 유용합니다.

4. IP는 바뀌어도 기기의 증거는 남음

가정용 프록시를 쓰면 자동화가 주소를 바꿀 수 있습니다. 쿠키, 핑거프린트, 행동, 대상이 반복된다면 IP를 하나씩 차단하는 일은 끝이 없습니다.

5. 보조 자산을 전혀 불러오지 않음

브라우저는 보통 필요한 CSS, JavaScript, 글꼴, 이미지를 가져옵니다. 단순한 스크레이퍼는 HTML이나 API만 요청할 수 있습니다. 캐시와 개인정보 보호 도구 때문에 이것은 증거가 아니라 보조 신호입니다.

6. 목록을 따라 실패가 이어짐

순차적인 사용자 이름, 쿠폰, 카드 데이터, 관리자 경로는 자동화를 드러냅니다. 분산된 봇에게는 IP 제한만으로는 부족하므로 계정, 핑거프린트, 동작 단위까지 포함하세요.

뭉툭한 규칙으로 정상 봇을 차단하지 마세요

모든 데이터센터 차단

많은 악성 봇이 데이터센터를 사용하지만 모니터, 웹훅, 검색 크롤러, 비즈니스 서비스도 마찬가지입니다. 민감한 쿠폰 동작에는 맞을 수 있지만 공개 사이트 전체에는 맞지 않습니다.

빠른 클라이언트 모두 차단

검색 크롤러와 업타임 모니터는 정당한 버스트 요청을 보냅니다. rate limit은 엔드포인트의 민감도와 확인된 신원을 반영해야 합니다.

모든 곳에 JavaScript 챌린지 요구

검색 크롤러는 일부 JavaScript를 렌더링할 수 있지만 봇 방지 챌린지, 필수 쿠키, CAPTCHA는 발견을 막을 수 있습니다. 중요한 공개 콘텐츠에는 확인된 크롤러를 위한 깨끗한 경로가 필요합니다.

오래된 허용 목록을 영원히 신뢰

IP 대역, 서비스, 비즈니스 요구는 바뀝니다. 모든 허용 목록 항목에는 출처, 담당자, 검토 날짜, 사용 로그가 있어야 합니다.

위험에 따른 대응 정책

1단계: 허용하고 기록

확인된 크롤러, 직접 운영하는 모니터링, 알려진 파트너에 적용합니다. 비공개 영역에는 여전히 인증이 필요합니다. "정상 봇"은 권한이 아닙니다.

2단계: 소프트 rate limit

공개 콘텐츠를 읽는 정체불명의 자동화에 적용합니다. 짧은 급증 한 번 때문에 영구 차단하는 대신 임계값을 넘으면 Retry-After와 함께 429를 반환하세요.

3단계: 챌린지 또는 기능 축소

빠른 검색, 반복되는 장바구니, 폼 제출 같은 중간 위험의 행동에 적용합니다. JavaScript 점검, 임계값 기반 CAPTCHA, 데이터 축소를 도입하세요.

4단계: 차단

크리덴셜 스터핑, 익스플로잇 시도, 확인된 스팸, 입증된 클릭 사기, 또는 품질 높은 차단 목록과의 일치에 적용합니다.

5단계: 조사하고 증거 보존

지속적인 광고 사기나 공격 캠페인에서는 요청 ID, 타임스탬프, 해시된 IP, user agent, 핑거프린트, 캠페인, 동작을 보관하세요. 필요 이상의 개인 데이터는 저장하지 마세요. 목적은 재현 가능한 결정입니다.

표면마다 다르게 보호하기

콘텐츠 및 SEO 페이지

확인된 크롤러를 허용하고, 캐시를 적극적으로 사용하고, 정체불명의 자동화에는 rate limit을 걸고, 스크레이핑을 모니터링하세요. 색인이 필요한 글이나 카테고리 앞에는 CAPTCHA를 두지 마세요.

로그인과 비밀번호 재설정

계정과 IP별로 제한하고, 사용자 이름 목록을 탐지하고, MFA를 사용하고, 실패 급증을 알리세요. 가정용 IP의 봇도 동작 패턴으로 잡을 수 있습니다.

리드 폼

허니팟, 최소 작성 시간, 서버 검증, rate limit이 스팸을 줄입니다. CAPTCHA만으로는 사람이 개입하는 팜을 막기에 부족합니다.

결제와 쿠폰

계정, 기기, 카드, 쿠폰 전반의 속도를 추적하세요. 데이터센터 차단이 도움이 될 수 있지만 기업 고객에게는 예외가 필요할 수 있습니다.

광고 랜딩 페이지

캠페인, 클릭 ID, 타임스탬프, 품질 점수를 기록하세요. 광고 네트워크의 클릭을 세션, 로그, 전환과 비교하세요. 재무상의 제외에는 의심스러운 요청 하나보다 강한 증거가 필요합니다.

IP나 핑거프린트 조사하기

  1. IP 검사기로 주소를 분류합니다.
  2. 주요 크롤러의 신원을 주장한다면 리버스 DNS를 확인합니다.
  3. 5–30분 구간의 동작 시퀀스를 가져옵니다.
  4. user agent, 헤더, 핑거프린트, 자산 요청을 비교합니다.
  5. 캠페인, 랜딩 페이지, 동작의 가치를 검토합니다.
  6. 절대적인 참/거짓 라벨 대신 신뢰도를 부여합니다.
  7. 허용, 제한, 챌린지, 차단 중에서 선택합니다.
  8. 임시 규칙에는 만료일을 설정합니다.

0–100점은 회색 지대를 보존합니다.

  • 80–100: 강한 사람의 신호;
  • 50–79: 모니터링하거나 가볍게 제한;
  • 50 미만: 여러 자동화 또는 위험 신호.

임계값은 제품에 따라 다릅니다. 블로그, 은행, 게임은 위험 허용 수준이 다릅니다.

오탐을 제품 지표로 취급하세요

봇의 99%를 막지만 실제 고객의 5%를 잃는 시스템은 덜 공격적인 시스템보다 나쁠 수 있습니다. 다음을 모니터링하세요.

  • 성공한 챌린지;
  • 차단된 뒤 지원팀에 문의하는 방문자;
  • 규칙 전후의 전환;
  • 새 IP로 돌아오는 봇;
  • 오탐률이 높은 엔드포인트.

모든 규칙에는 이유, 담당자, 롤백 경로가 있어야 합니다. "이 IP가 이상한 느낌이다"는 운영 정책이 아닙니다.

봇 규칙도 운영 코드처럼 관리하세요

봇 통제는 쌓이기 마련입니다. 공격 중에 추가한 긴급 IP 차단이 주소의 소유자가 바뀐 뒤에도 몇 년씩 남아 있을 수 있습니다. 규칙을 버전 관리되는 운영 로직으로 다루세요.

각 규칙에는 다음을 기록해야 합니다.

  • 규칙을 정당화한 행동이나 사고;
  • 사용한 신호와 신뢰 수준;
  • 영향을 받는 엔드포인트와 사용자 그룹;
  • 담당자와 승인 날짜;
  • 만료일 또는 검토일;
  • 롤백 지침;
  • 지켜볼 오탐 지표.

위험이 허용하는 한 새 통제를 보고 전용(report-only) 모드로 테스트하세요. 어떤 요청이 제한되거나 차단되었을지 기록한 다음 성공한 로그인, 구매, 확인된 크롤러, 지원 문의와 비교하세요. 이 섀도 기간은 광범위한 정규식과 네트워크 규칙이 고객에게 영향을 주기 전에 드러내 줍니다.

전역이 아니라 표면별로 적용하세요. 엄격한 규칙이 쿠폰 사용에는 적절해도 문서 페이지에서는 해로울 수 있습니다. 엔드포인트별 정책은 무언가 바뀌었을 때 더 명확한 지표도 만들어 줍니다.

확인된 운영 작업을 위한 긴급 우회 경로와 빠른 롤백 경로를 마련해 두세요. 오탐 사고가 났을 때 전체 애플리케이션 배포를 기다리는 비용이 규칙이 막으려던 자동화보다 더 클 수 있습니다.

마지막으로 허용 목록도 차단 목록만큼 신중하게 검토하세요. 침해된 파트너 토큰이나 오래된 크롤러 예외는 영구적인 허점이 될 수 있습니다. 신뢰는 범위가 한정되고, 관찰할 수 있으며, 주기적으로 다시 검증되어야 합니다.

robots.txt는 봇 방어 도구일까?

robots.txt는 협조적인 크롤러를 위한 관례입니다. 악성 자동화는 무시할 수 있습니다. Googlebot과 정상 크롤러에는 여전히 필수이지만 WAF, 인증, rate limit, 행동 분석을 대체하지는 않습니다.

Robots.txt 검사기로 스크레이핑 방지 변경이 검색 크롤러를 실수로 차단하지 않았는지 확인하세요.

전체 그림 보기: 트래픽 품질 점수의 작동 방식을 읽고 사이트 전체에 차단 규칙을 적용하기 전에 무료 SEO 감사를 실행하세요.

결론

제공업체의 공식 방법으로 크롤러 신원을 확인하고 요청 동작을 검토하세요. 보안 헤더만으로 신원이나 WAF의 접근 허용 여부를 확인할 수 없습니다.

참고 자료: Google Search Central – Googlebot 및 Google 크롤러 개요.

광고

자주 묻는 질문

user agent만으로 Googlebot을 확인할 수 있나요?
아니요. user agent는 쉽게 위조됩니다. 정방향 확인된 리버스 DNS를 사용하거나 소스 IP를 구글의 공식 크롤러 대역과 비교하세요.
모든 데이터센터 IP를 차단해야 하나요?
사이트 전체에는 그렇지 않습니다. 데이터센터에는 악성 봇이 있지만 크롤러, 모니터, 웹훅, 정상적인 비즈니스 서비스도 있습니다. 엔드포인트와 행동을 평가하세요.
robots.txt가 악성 봇을 차단할 수 있나요?
확실하지 않습니다. 협조적인 크롤러를 위한 관례일 뿐이므로 악성 봇은 무시할 수 있으며 rate limit, WAF, 인증, 행동 제어가 필요합니다.
#봇 트래픽 #VPN 및 프록시 #품질 점수

웹사이트를 무료로 확인하세요

지금 SEO 감사를 실행하거나 트래픽 품질을 확인해 보세요. 가입이 필요 없습니다.