AI 크롤러가 트래픽 수치를 부풀리고 있습니다. 일반적인 방법인 User-Agent 헤더 확인으로는 이를 잡아낼 수 없습니다.
최근 8일간의 로그를 분석한 결과, 실제 기사 호출은 468건이었으나, .env나 .git 같은 파일을 탐색하며 AI 봇인 척 위장한 요청은 991건에 달했습니다. 원인은 무엇일까요? 누구나 HTTP 요청에 GPTBot이나 ChatGPT-User와 같은 사용자 정의 User-Agent 문자열을 삽입할 수 있기 때문입니다.
이 지표가 중요한 이유
웹사이트는 "AI 트래픽"의 급증을 관련성(relevance)의 신호로 간주합니다. 이 수치를 광고 단가 책정, 서버 리소스 할당, 투자자 대상 홍보 등에 활용합니다. 보고된 AI 접속의 절반이 단순한 노이즈라면, 예산은 낭비되고 대시보드는 왜곡됩니다.
허상과 실체를 구분하는 두 가지 필터
- Cloudflare의
verifiedBotCategory– Cloudflare는 역방향 DNS(reverse DNS)를 통해 요청의 IP가 알려진 봇 도메인으로 확인된 경우에만 이 필드를 채웁니다. 헤더에는 "GPTBot"이라고 되어 있어도 IP 조회가 실패하면 해당 요청은 "미확인(unverified)" 분류로 들어갑니다. - 사이트맵 교차 검증 – 봇이 요청한 URL이 XML 사이트맵에 존재할 때만 실제로 콘텐츠를 읽는다고 볼 수 있습니다. 사이트맵에 없는 경로에 대한 요청은 기사를 인덱싱하기보다는 취약점을 탐색할 가능성이 높습니다.
동일한 8일간의 샘플에 두 필터를 모두 적용한 결과, 극명한 수치가 나타났습니다:
- ChatGPT-User – 요청의 39%만 검증 통과.
- GPTBot – 13% 검증 통과.
- PerplexityBot – 검증 통과 0%.
- Google-Extended – 검증 통과 0%; 해당 문자열은 공식 Google 크롤러와 일치하지 않습니다.
검증된 호출 중에서도 많은 봇이 정작 중요한 기사 페이지가 아닌 robots.txt나 사이트맵 자체만 가져갔습니다.
개발자가 지금 바로 할 수 있는 일
- 분석 파이프라인에서 Cloudflare 봇 검증을 활성화하세요.
verifiedBotCategory필드는 요청 헤더에 나타나며 자체 로그와 함께 저장할 수 있습니다. - 최신 사이트맵을 유지하고, 모든 유입 요청의 경로가 사이트맵에 존재하는지 확인하는 프로세스를 자동화하여 이를 콘텐츠 조회수로 집계하세요.
- GET 방식이 아닌 메서드와 일반적인 개발 파일(
.env,.git,.bak)을 대상으로 하는 요청을 필터링하세요. 이러한 요청은 거의 항상 악의적인 스캔입니다.
반론
역방향 DNS 확인도 스푸핑(spoofing)될 수 있으며, 봇의 정당한 목적이 아직 사이트맵에 등록되지 않은 새로운 URL을 발견하는 것일 수도 있다는 의견이 있습니다. 이러한 우려는 타당합니다. 공격자가 DNS 레코드를 장악할 수도 있고, 새로운 콘텐츠는 다음 생성 주기 전까지 현재 사이트맵에 반영되지 않을 수 있기 때문입니다.
실용적인 대응책은 검증을 절대적인 관문이 아닌 '신뢰 점수(confidence score)'로 취급하는 것입니다. DNS 검증, 사이트맵 존재 여부, 요청 메서드 확인을 결합하여 "실제 AI 트래픽"으로 간주하는 기준을 높이십시오. 요청이 세 가지 검사 중 두 가지를 통과하면 즉시 버리는 대신 수동 검토 대상으로 분류하십시오.
향후 주목해야 할 사항
- Cloudflare 검증 API의 변경 –
verifiedBotCategory로직의 변경은 검증 비율에 영향을 줄 수 있습니다. - 새로운 자가 식별 봇의 등장 – 로그에 나타나는 User-Agent 문자열을 주시하십시오. 갑작스러운 급증은 AI 크롤러로 위장한 새로운 스캐너의 등장을 의미할 수 있습니다.
- 사이트맵 생성 빈도 – 생성 간격이 길어질수록 정당한 크롤러가 오분류될 가능성이 높아집니다.
핵심은 간단합니다. User-Agent 문자열을 증거로 믿지 마십시오. DNS 검증과 사이트맵 검증을 계층화하면 실제로 누가 귀하의 콘텐츠를 읽고 있는지 더 명확하게 파악할 수 있습니다.
Source: https://dev.to/aulvem/ai-crawler-user-agents-are-self-reported-468-real-fetches-991-fake-ones-bgo
