1P by GN⁺ | ★ favorite | 댓글 1개
  • 사이트 장애를 일으킬 만큼 요청을 보내는 Googlebot 사례 상당수는 Google이 아니라 Googlebot을 사칭한 외부 봇에서 비롯됨
  • HTTP User-Agent는 요청자가 임의로 지정할 수 있어, 로그의 Googlebot/2.1 문자열만으로는 실제 Googlebot임을 보장할 수 없음
  • 사칭 봇은 차단을 우회하려 Googlebot 이름을 사용하며, 여러 호스팅 업체의 서버를 동원한 단일 대규모 악성 크롤러 캠페인일 가능성도 있음
  • 실제 Googlebot인지는 host 명령이나 Google이 공개한 IP 범위로 검증해야 하며, 등록자가 Google LLC인 IP도 Google Cloud 주소일 수 있어 추가 확인이 필요함
  • 전체 Googlebot 트래픽의 과반이 가짜라는 데이터는 없지만, 서비스를 방해하는 Googlebot 트래픽은 주로 사칭 봇에서 발생하는 것으로 보임

Googlebot 트래픽을 둘러싼 오해

  • Google 검색 크롤러가 과도한 트래픽으로 사이트 장애를 유발하거나 DDoS처럼 동작한다는 운영자들의 불만이 있음
  • 그러나 이런 파괴적 트래픽은 Google이 아니라 다른 주체가 Googlebot 이름을 도용해 보낸 사칭 요청일 수 있음
  • 서버 로그에서 Googlebot 문자열을 발견한 것만으로 Google을 트래픽 출처로 단정할 수 없음

User-Agent는 신원 증명이 아님

  • Googlebot으로 보이는 요청에는 보통 다음과 같은 값이 포함됨
  • nginx 로그에도 같은 문자열이 기록될 수 있지만, User-Agent 헤더는 요청자가 원하는 값으로 자유롭게 설정 가능함
  • User-Agent는 검증된 인증 정보가 아닌 자발적인 자기 식별이므로 누구나 Googlebot이라고 주장할 수 있음

사칭 봇의 출처와 규모

  • 사칭 주체는 기존 봇 차단을 우회하기 위해 Googlebot User-Agent를 사용하는 것으로 보임
  • 예시 로그의 IP는 Google이 아닌 호스팅 업체 Virtual Machine Solutions LLC가 제공한 서버로 확인됨
  • Googlebot 사칭은 오래전부터 흔히 쓰인 수법이며, 최근에는 그 규모가 커진 것으로 관찰됨
  • Chris Siebenmann은 오래된 수법이 여러 곳에서 동시에 유행했다기보다, 다수의 호스팅 업체에서 많은 서버를 확보한 단일 악성 크롤러의 대규모 캠페인일 가능성을 제시함

진짜 Googlebot을 검증하는 방법

  • Google의 Googlebot 검증 문서에 따라 몇 차례 host 명령을 실행하거나, Google이 공개한 IP 범위와 대조할 수 있음
  • 주요 크롤러 대부분은 IP 목록을 공개하지만 구체적인 형식과 운영 방식은 서로 다름
  • JAFAR는 크롤러 IP 목록을 표준화하려는 제안으로, 아직 표준화 절차가 진행 중임
  • IP 등록자가 Google LLC로 표시되더라도 Google Cloud 호스팅 주소일 수 있어 별도 검증이 필요함
    • Google Cloud를 통한 최근 사칭 사례는 확인하지 못함
  • 검증 결과 실제 Googlebot이 과도하게 크롤링한다면 Google의 과도한 크롤링 대응 문서를 따라야 함

신뢰할 수 있는 봇 인증

  • 단순히 필드를 하나 추가해도 악성 행위자가 그 값을 정직하게 설정할 이유는 없음
  • RFC 3514의 이른바 evil bit는 악성 주체가 이런 표준을 준수하지 않는다는 점을 풍자함
  • Web Bot Auth HTTP Signatures는 별도 필드보다 복잡하지만, 암호학적 서명을 통해 신뢰할 수 있는 User-Agent를 구현하려는 방안임

‘대부분’이라는 표현의 한계

  • 전체 Googlebot 트래픽 가운데 가짜가 실제로 과반이라는 사실을 입증할 데이터는 없음
  • 다만 사이트를 심각하게 방해한 Googlebot 트래픽 사례 대부분은 가짜 Googlebot에서 비롯된 것으로 보임
  • 실제 Googlebot은 경험상 매우 안정적으로 동작하는 반면, 사칭 봇은 사이트가 장애를 일으킬 때까지 요청을 보낼 수 있음

댓글과 토론

Lobste.rs 의견들
  • 봇 사용자에게는 상호 TLS(mTLS) 가 잘 맞아 보임. 봇 운영자가 유효한 인증서를 발급하기 어렵지 않고, 사이트 운영자는 도메인을 기준으로 봇 클라이언트를 허용할 수 있음
    • 글에서 설명하듯 정상적인 크롤러 대부분은 크롤러 서브넷을 공개함. 요청 서명을 표준화하려는 시도도 있었지만, 아는 한 널리 채택되지는 못했음
  • googlebot이라고 주장하는 트래픽을 전부 차단하면 해결됨