AI 크롤러 로그 분석

서버 로그에서 AI 크롤러와 실시간 추론 봇을 식별하고, 요청·응답·상태 코드·봇 유형을 분리해 AI 검색 접근성을 검증하는 방법을 설명합니다.

이 페이지의 근거 신호 1개

AI 크롤러 로그 분석은 GPTBot·OAI-SearchBot·ChatGPT-User 같은 사용자 에이전트를 요청 로그에서 분리해 학습·색인·실시간 추론 트래픽을 구분하는 작업입니다. 로그는 페이지 요청의 증거이지 모델이 내용을 사용했다는 증거가 아니므로 응답 상태와 인용 결과를 별도로 확인해야 합니다.

요약 — Apache/Nginx 또는 CDN 액세스 로그를 확보한 다음 네 가지 작업을 수행하세요. 검증: 사용자 에이전트가 일치하는지 확인하고 각 운영자의 공개 목록으로 IP도 확인합니다. 사칭 비율은 HUMAN Security의 5.7%부터 Duane Forrester가 직접 조사한 81.8%까지 나타났습니다. 도구 선택: 규모에 맞춰 grep → Screaming Frog Log File Analyser → ELK/Splunk → BigQuery/Cloudflare를 선택합니다. 측정: 봇별 크롤링 빈도, 요청한 페이지, 크롤링과 렌더링의 차이, 상태 코드를 확인합니다. 정직한 해석: 콘텐츠를 가져오는 것은 필요조건이지 충분조건이 아니므로 “크롤링이 많을수록 인용도 많다”는 주장은 입증되지 않았습니다. 이 글은 방법을 다루며, 봇의 정체를 설명하는 AI 크롤러, 클릭을 다루는 AI 트래픽 기여도 분석, 가져옴 → 언급 → 인용이라는 체계를 설명하는 LLM 가시성과 연결됩니다. 로그로 관찰하는 것은 그 첫 단계입니다.

이 글에서 다루는 것과 다루지 않는 것

로그는 요청이 있었다는 사실을 보여줄 뿐, 콘텐츠가 학습, 검색·가져오기 또는 답변에 사용되었는지는 보여주지 않습니다. 이 주장에 대한 근거 Server access logs record requests and can include fields such as request path, status, referrer, and user agent. 범위: Apache HTTP Server logging; available fields depend on server configuration. 신뢰도: 높음 · 검증일: Apache: Log files 공급업체가 공개한 검증 방법이 있다면 이를 사용하고, 요청 주체의 식별 결과를 한계가 있는 증거로 취급하세요. 이 주장에 대한 근거 OpenAI publishes user-agent tokens and controls for several of its crawlers. 범위: OpenAI's documented crawlers; a user-agent string is not proof of downstream training, retrieval, citation, or use. 신뢰도: 높음 · 검증일: OpenAI: Crawlers

관련 글인 AI 크롤러에서는 이미 봇별 표, 세 가지 분류(학습 / AI 검색 / 사용자 요청에 따른 가져오기), Google-Extended가 봇이 아니라 토큰이라는 구분, robots.txt 설정 예시를 다룹니다. 여기서는 이를 다시 설명하지 않습니다. AI 트래픽 기여도 분석은 GA4와 리퍼러, 즉 봇이 돌려보낸 트래픽을 다룹니다. 이 글은 퍼널의 반대쪽, 봇이 가져간 것을 다룹니다. LLM 가시성은 가져옴 → 언급 → 인용이라는 체계를 다루며, 로그 분석으로 관찰할 수 있는 것은 구체적으로 가져옴 단계뿐입니다. 그 이후는 알 수 없습니다.

이 글은 전통적인 SEO 로그 파일 분석의 AI 시대 후속편입니다. 제가 Ahrefs의 How to Do an SEO Log File Analysis 글을 검토했을 때 분석 항목은 크롤링 빈도, 크롤링한 URL, 상태 코드, Google의 공개 IP를 통한 봇 검증이었습니다. 기본 틀은 같지만, 여기서는 대부분 JavaScript를 렌더링하지 않고, 끊임없이 사칭당하며, 일정하게 방문하기보다 불규칙하게 요청을 몰아 보내는 봇들을 대상으로 합니다.

1단계 — 로그 확보

로그는 다음 두 곳 중 하나 또는 양쪽 모두에 있습니다.

  • 원본 서버 로그. Apache(access.log), Nginx(access.log) 또는 애플리케이션 서버의 로그입니다. 각 줄에는 최소한 타임스탬프, 클라이언트 IP, 요청 메서드와 경로, 상태 코드, 바이트 수, 리퍼러, 사용자 에이전트가 포함됩니다.
  • CDN / 엣지 로그. Cloudflare, Fastly, Akamai 등을 사용하면 많은 봇 요청이 엣지에서 처리되어 원본 서버에 전혀 도달하지 않을 수 있습니다. 따라서 엣지 로그가 더 완전한 기록입니다. Cloudflare는 Logpush와 GraphQL API로, Fastly는 실시간 로그 스트리밍으로 이를 제공합니다.
이 주장에 대한 근거 Server access logs record requests and can include fields such as request path, status, referrer, and user agent. 범위: Apache HTTP Server logging; available fields depend on server configuration. 신뢰도: 높음 · 검증일: Apache: Log files

AI 봇 분석에 실제로 필요한 필드는 타임스탬프, 클라이언트 IP, 사용자 에이전트, 요청 경로, 상태 코드이며, 바이트 수와 리퍼러도 있으면 좋습니다.

현실적인 문제는 보관 기간입니다. 많은 호스팅 업체가 로그를 며칠만 보관합니다. Lauren Busby의 Search Engine Land 글은 해결책을 직접 제시합니다. 정기적으로 로그를 수집하면 짧은 보관 기간을 넘어 시간에 따른 분석이 가능해집니다. n8n 같은 워크플로 도구나 스크립트로 예약된 SFTP 작업을 구성하는 것만으로도 장기간 분석할 자료를 확보할 수 있습니다(Busby, SEL). 데이터가 필요해지기 전에 설정하세요.

처음부터 기억해야 할 한계도 있습니다. Busby의 설명대로 로그 파일은 사이트에 도달한 요청을 보여주지만, 도달을 시도한 모든 요청을 보여주지는 않습니다(SEL). 상위 구간에서 차단되거나 응답이 완료된 요청은 로그에 전혀 나타나지 않을 수 있습니다.

2단계 — 사용자 에이전트를 믿기 전에 검증

이 단계가 AI 봇 로그 분석을 전통적인 분석과 구별하며, 다른 많은 안내 글에서 빠뜨리는 부분이기도 합니다. 사용자 에이전트 문자열은 아주 쉽게 위조할 수 있습니다. 문제의 규모를 보여주는 서로 독립적인 두 가지 관측 결과가 있습니다.

  • HUMAN Security는 유명 AI 크롤러 16개 중 하나라고 주장하는 트래픽을 2주간 분석하여 5.7%가 사칭 트래픽이라는 사실을 확인했습니다. 대략 요청 18건 중 1건입니다(SEJ의 보도).
  • Duane Forrester가 자신의 로그에서 같은 검사를 했을 때는 결과가 훨씬 나빴습니다. 실시간 가져오기 봇 이름을 사용한 요청 33건 중 공급업체가 공개한 IP에서 온 것은 6건, 그렇지 않은 것은 27건이었습니다. 확인 가능한 요청의 사칭 비율은 81.8%였습니다(SEJ). Googlebot 수치는 더 나빴습니다. Googlebot이라는 이름을 사용한 요청 799건 중 검증된 Google 주소에서 온 것은 107건뿐이었고, 나머지 약 87%는 Google의 요청이 아니었습니다(SEJ).

이 수치들은 서로 다른 표본과 방법에서 나온 경향을 보여줄 뿐, 하나의 보편적인 비율이 아닙니다. 더 중요한 것은 한 공급업체의 검증 방법을 모든 봇에 일반화하지 않는 것입니다. 일부 운영자는 주소 범위를 공개하지만, 현재 공개 주소 범위나 DNS 검증 절차 없이 사용자 에이전트 토큰만 문서화하는 운영자도 있습니다(SEJ).

검증 방법:

  1. 사용자 에이전트 문자열을 대조합니다. GPTBot은 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.3; +https://openai.com/gptbot으로 자신을 식별합니다. OAI-SearchBot과 ChatGPT-User는 각각 별도의 토큰을 사용합니다(OpenAI 봇 문서).
  2. 공급업체가 현재 공식 검증 방법을 제공한다면 그 방법을 사용합니다. OpenAI는 openai.com/gptbot.json, searchbot.json, chatgpt-user.json 목록을 제공합니다. Anthropic의 현재 크롤러 문서 내용에 따르면 공개 목록 안에 포함된 주소는 Anthropic에서 온 크롤러임을 나타냅니다. 해당 공급업체의 현재 방법을 사용하고, 이를 모든 봇에 적용되는 보편적인 검증 규칙으로 일반화하지 마세요.
  3. 임의의 대체 방법을 만들지 않습니다. 역방향 조회 후 정방향 조회를 수행하는 DNS 검증은 해당 공급업체가 호스트 이름 패턴과 검증 절차를 공개했을 때만 유효합니다. 일반적인 PTR 일치는 DNS 제어권을 입증할 뿐, 주장하는 봇의 정체를 입증하지 않습니다. Screaming Frog의 Log File Analyser는 공개적으로 확인된 목록이 있을 때 이를 적용할 수 있습니다. 가져오기 시 검증 기능은 공개적으로 확인된 IP 목록과 대조하여 진짜 봇인지 확인합니다(Screaming Frog).

검증 결과는 정밀한 정책 설정과 사고 대응에 활용해야 합니다. 크롤링 정책에는 공급업체가 문서화한 robots 토큰을 우선 사용하세요. 네트워크 제어는 악용이나 보안 사례에 사용하고 robots 준수 여부와 구분하여 표시하세요.

3단계 — 도구 선택

작업 규모에 맞춰 선택하세요. 대략 무료 → 유료, 원시 기록 직접 분석 → 관리형 서비스 순서입니다.

  • grep / PowerShell — 일회성으로 빠르게 집계하고 검증 여부를 고려해 필터링할 때 사용합니다. AI 크롤러 글에 기본 봇 집계 코드가 있으며, 이 글의 스크립트 탭에서는 IP 검증, 상태 코드별 분석, 크롤링과 렌더링의 구별로 확장합니다.
  • Screaming Frog Log File Analyser — AI 봇 사전 설정(GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, CCBot)과 “Verify Bots When Importing”(가져올 때 봇 검증) 옵션을 제공하는 데스크톱 가져오기 도구입니다. Response Codes 탭은 URL별 2XX/3XX/4XX/5XX를, User Agents 탭은 봇별 요청과 오류율을 보여줍니다. URLs 탭에서 Num Events로 정렬하면 가장 많이 가져간 페이지를 확인할 수 있고, IPs 탭에서는 의심스러운 요청 출처를 조사할 수 있습니다(사용 안내).
  • ELK Stack(Elasticsearch / Logstash / Kibana) 또는 Splunk — 대시보드와 알림을 갖춘 지속적인 대규모 수집에 적합합니다. 단일 가져오기 방식의 데스크톱 도구가 너무 느려지거나, 주기적인 내보내기 대신 상시 모니터링이 필요할 때 사용합니다.
  • BigQuery — 대규모 데이터의 장기 보관과 SQL 조회에 적합합니다. 흔히 Cloudflare Logpush나 Cloudflare의 httpRequestsAdaptiveGroups 데이터세트를 정기적으로 수집하는 GraphQL 작업에서 데이터를 받습니다. 일반 파일을 다시 가져오지 않고 페이지, 날짜, 상태 코드별 봇 활동을 조회할 수 있습니다.
  • Cloudflare AI Crawl Control(Cloudflare를 사용하는 사이트) — 직접 파이프라인을 구축하지 않고 크롤러 활동과 요청 패턴, 봇 검증, 지시문 준수를 추적할 수 있는 관리형 대시보드입니다(문서).

4단계 — 측정할 항목과 해석 방법

봇별 크롤링 빈도. 봇 이름별 일간·주간 요청 수입니다. AI 봇은 일정하게 방문하지 않고 요청을 몰아 보냅니다. WISLR의 48일간 CDN 로그 사례에서 GPTBot은 몇 주 동안 나타나지 않다가 한 주에 요청 187건을 보냈습니다. 그중 152건이 3분 동안 몰렸고, 최고치는 분당 114건이었습니다(WISLR). 빈도는 합계뿐 아니라 패턴으로 읽으세요.

요청한 페이지와 요청하지 않은 중요한 페이지. 요청 수로 정렬하세요. Busby는 AI 크롤러가 홈페이지, 기본 내비게이션, 소수의 상위 URL처럼 얕은 수준에 머무는 경우가 흔하다고 설명합니다(SEL). 인용에 가장 중요한 것이 깊은 페이지여도 방문은 급격히 줄어듭니다. 로그에 전혀 나타나지 않는 깊은 페이지는 가져올 수 없습니다.

원시 HTML 의존성 — 측정하되 일반화하지 마세요. 공급업체 문서에는 GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot 및 다른 에이전트에 공통으로 적용되는 JavaScript 렌더링 보장이 없습니다. 그래도 유용한 관측 패턴은 있습니다. WISLR 표본에서 ChatGPT-User는 HTML만 가져갔고 이미지, CSS, JS 파일 요청은 전혀 없었습니다. 반면 Googlebot과 OAI-SearchBot은 이미지도 가져갔습니다(WISLR). 원시 HTML이 거의 빈 JS 껍데기인 페이지에 AI 봇이 반복해서 요청한다면 확인 가능한 의존성 위험입니다. 모든 공급업체가 항상 그렇게 동작한다는 증거는 아닙니다. 전달한 HTML을 결과 또는 공급업체별 가져오기 테스트와 비교하세요. 렌더링의 기초는 JavaScript SEO를 참고하세요.

상태 코드와 차단 내역. 200(성공), 304(변경 없음 — 효율적인 재크롤링이므로 좋은 신호), 404(봇이 따라간 깨진 링크), 403/429(차단 / 속도 제한)를 확인하세요. Busby는 로그에서 크롤러가 겪는 문제를 확인할 수 있으며, 특히 403 응답(차단된 요청)과 429 응답(속도 제한)을 짚습니다(SEL). 의도한 차단인지 실수인지 확인하세요.

robots.txt와 llms.txt 요청을 별도의 신호로 확인. 어떤 봇이 크롤링 전에 /robots.txt를 요청하는지, 금지된 경로에도 요청하는지 교차 확인하세요. WISLR 표본에서 GPTBot과 Meta-WebIndexer는 48일 동안 이를 한 번도 확인하지 않았습니다. 같은 48일 동안 어떤 AI 봇에서도 /llms.txt 요청은 한 건도 기록되지 않았습니다(WISLR). 이는 AI 크롤러 글에서 다룬 약 97%가 읽히지 않았다는 결과와도 일치합니다. llms.txt가 “효과가 있다”는 증거로 로그에 해당 요청이 나타나기를 기대하지 마세요.

크롤링이 많으면 인용도 많을까요? 정직하게 해석하세요.

“크롤링을 더 많이 하면 더 많이 인용된다”는 주장을 뒷받침하는 확립된 데이터는 없습니다. 콘텐츠를 가져오는 것은 인용의 필요조건이지만 충분조건과는 거리가 멉니다. 클라이언트 측 렌더링, 유료 장벽, 빈약하거나 중복된 콘텐츠, 또는 모델의 검색·순위 결정 단계에서 더 나은 출처에 밀리는 등의 이유로 계속 크롤링되면서도 전혀 인용되지 않는 페이지가 있습니다. 핵심 체계는 LLM 가시성 글의 가져옴 → 언급 → 인용이며, 로그 분석으로 관찰하는 것은 그 첫 단계뿐입니다.

이를 정직하게 연결하려면 크롤링 입력 측면인 로그와 인용 출력 측면을 함께 봐야 합니다. Bing의 AI Performance 보고서(2026년 2월 공개 미리보기)는 인용 데이터와 그라운딩 쿼리, 즉 AI 생성 답변에서 참조한 콘텐츠를 가져올 때 AI가 사용한 핵심 구문을 함께 보여주는 첫 공식 도구입니다(Bing Webmaster Blog). 로그는 무엇을 가져갔는지, 그라운딩 쿼리와 인용 수는 그 결과가 무엇인지 보여줍니다. 어느 하나만으로는 전체를 알 수 없습니다. 이 층위들을 어떻게 연결하는지는 측정 및 보고 허브를 참고하세요.

은밀한 크롤링이라는 변수

검증은 일회성 감사가 아닙니다. Seer Interactive의 Clint Spaulding에 따르면 차단된 은밀한 크롤러는 일반 브라우저 헤더와 관련 없는 IP를 사용해 다시 나타날 수 있습니다. 이런 세션은 로그에서 사람처럼 보이므로 세션 수는 부풀려지고, 봇 트래픽은 적게 집계되며, GEO 세분화의 신뢰성은 낮아집니다(Seer). 그의 요지는 명확합니다. 이런 은밀한 크롤러를 볼 수 없다면 영향도 측정할 수 없습니다. 따라서 로그 분석은 한 번으로 끝내지 말고 주기적으로 다시 검증하고 기준선을 갱신해야 합니다.

전문가 메모 추가

전문가 인용문 고정

새로운 사람인가요? 미등록 프로필을 다음 위치에서 /admin/experts/ → 전문가 인용문 고정 먼저 만드세요.