고급Google

서버 로그 파일 분석으로 크롤러 행동 파악하기

핵심 요약 (TL;DR)

서버 접근 로그(access.log)에서 Googlebot·네이버봇의 크롤 패턴을 분석하는 방법, 크롤 빈도·에러 URL·크롤 버짓 낭비를 진단하는 실전 가이드입니다.

읽기 20 2025-03-22

로그 파일 분석이 다른 SEO 도구와 다른 이유

Google Search Console은 구글이 선별해 제공하는 데이터만 보여줍니다. 반면 웹서버 로그 파일은 구글 봇이 실제로 방문한 모든 URL과 시간을 기록합니다. 이를 통해 다음을 정확히 파악할 수 있습니다.

  • 구글봇이 실제로 크롤링하는 URL 목록 (GSC가 알려주지 않는 URL 포함)
  • 어떤 URL에 크롤 버짓이 낭비되고 있는가
  • 크롤링 오류(404·5xx)가 발생하는 정확한 URL
  • Googlebot의 일별·시간대별 크롤링 빈도 패턴
  • 중요 페이지가 충분히 자주 크롤링되는가

웹서버 로그 파일 형식과 추출 방법

공통 로그 형식 (Apache/Nginx)

# 샘플 Nginx access.log 항목
66.249.66.1 - - [22/Mar/2025:09:15:32 +0900] "GET /seo/fundamentals HTTP/1.1" 200 5234 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

# 구성: IP 주소 - - [날짜:시간] "메서드 URL 프로토콜" 상태코드 크기 "Referer" "User-Agent"

Googlebot IP 범위 확인

가짜 Googlebot을 걸러내려면 DNS 역방향 조회(rDNS)로 IP 소유자가 googlebot.com 또는 google.com인지 확인해야 합니다. 단순 IP 기반 필터는 스푸핑 가능합니다.

# Linux/Mac에서 rDNS 확인
host 66.249.66.1
# 결과: 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com

Python으로 Googlebot 로그 분석하기

import re
from collections import Counter
from datetime import datetime

# Googlebot User-Agent 패턴
GOOGLEBOT_PATTERN = re.compile(r'Googlebot', re.IGNORECASE)

# 로그 파싱 정규식
LOG_PATTERN = re.compile(
    r'(S+) S+ S+ [(.+?)] "(S+) (S+) S+" (d+) S+ "S+" "(.+?)"'
)

def analyze_log(log_file_path):
    googlebot_requests = []
    
    with open(log_file_path, 'r', encoding='utf-8', errors='ignore') as f:
        for line in f:
            match = LOG_PATTERN.match(line)
            if not match:
                continue
            
            ip, timestamp, method, url, status, user_agent = match.groups()
            
            if GOOGLEBOT_PATTERN.search(user_agent):
                googlebot_requests.append({
                    'ip': ip,
                    'timestamp': timestamp,
                    'method': method,
                    'url': url,
                    'status': int(status),
                })
    
    return googlebot_requests

def generate_report(requests):
    # 상태코드별 분류
    status_counts = Counter(r['status'] for r in requests)
    
    # 크롤링 빈도 상위 URL
    url_counts = Counter(r['url'] for r in requests)
    
    # 404 오류 URL
    not_found = [r['url'] for r in requests if r['status'] == 404]
    
    print(f"총 Googlebot 요청: {len(requests)}건")
    print(f"\n상태코드 분포:")
    for code, count in sorted(status_counts.items()):
        print(f"  {code}: {count}건 ({count/len(requests)*100:.1f}%)")
    
    print(f"\n크롤링 빈도 상위 10 URL:")
    for url, count in url_counts.most_common(10):
        print(f"  {count}회: {url}")
    
    print(f"\n404 오류 URL (상위 10개):")
    for url, count in Counter(not_found).most_common(10):
        print(f"  {count}회: {url}")

로그 분석으로 발견하는 주요 SEO 인사이트

인사이트발견 방법대응 방안
크롤 버짓 낭비 URL 크롤 빈도 높고 SEO 가치 낮은 URL (파라미터 URL, 태그 페이지 등) robots.txt Disallow 또는 noindex 처리
404 오류 URL Googlebot 요청 중 상태코드 404 301 리다이렉트 설정 또는 내부 링크 수정
중요 페이지 미크롤링 로그에 등장하지 않는 중요 URL 내부 링크 추가, 사이트맵 재제출
서버 5xx 오류 Googlebot 요청에 500·503 응답 서버 안정성·성능 개선
크롤링 빈도 급격한 감소 날짜별 크롤링 수 추이 robots.txt 실수 확인, 서버 문제 점검

로그 분석 도구 비교

도구유형특징비용
Screaming Frog Log File Analyser데스크탑 앱GUI 기반, 빠른 분석. Googlebot 필터링 특화유료 (연 £179)
Splunk / ELK Stack서버 솔루션실시간 모니터링, 대규모 로그 처리오픈소스 (설치 비용)
Python 커스텀 스크립트코드완전 자유로운 분석, 학습 필요무료
AWStats / GoAccess웹/CLI호스팅 내장 분석, 기본적 통계무료

자주 묻는 질문 (FAQ)

Q. 로그 파일 분석이 GSC보다 나은 점은 무엇인가요?
GSC는 Google이 선별해 제공하는 샘플 데이터입니다. 반면 서버 로그는 Googlebot이 실제로 요청한 모든 URL을 100% 기록합니다. GSC에서는 (1) 크롤 버짓이 낭비되는 정확한 URL, (2) 크롤링되지 않는 고아 페이지, (3) 가짜 봇(스푸핑)의 접근, (4) 시간대별 크롤링 패턴 등을 확인하기 어렵지만, 로그 분석으로는 모두 파악 가능합니다.
Q. 로그 파일은 얼마나 오래 보관해야 하나요?
최소 90일 이상 보관을 권장합니다. 이렇게 해야 Google 코어 업데이트 전후의 크롤링 패턴 변화를 분석할 수 있습니다. 대규모 사이트는 로그 파일이 매우 커질 수 있으므로, Googlebot User-Agent만 필터링한 별도 로그를 보관하면 용량을 절약할 수 있습니다.
Q. 가짜 Googlebot을 어떻게 구별하나요?
User-Agent 문자열은 쉽게 위조할 수 있습니다. 진짜 Googlebot은 DNS 역방향 조회(rDNS)로 확인합니다. host [IP주소] 명령으로 확인했을 때 *.googlebot.com 또는 *.google.com으로 끝나야 진짜입니다. Google은 공식적으로 Googlebot IP 범위를 JSON 파일로 공개하고 있으므로 이를 기반으로 필터링할 수도 있습니다.
Q. Vercel이나 Cloudflare 같은 서버리스 환경에서도 로그 분석이 가능한가요?
서버리스 환경에서는 전통적인 웹서버 로그가 없지만, 대안이 있습니다: (1) Vercel Analytics에서 봇 트래픽 확인, (2) Cloudflare Analytics에서 Bot Traffic 보고서 활용, (3) Edge Function이나 Middleware에서 Googlebot 요청을 감지하여 로깅하는 커스텀 솔루션 구축. 완벽한 로그 분석을 위해서는 로깅 서비스(Datadog, LogDNA)와 연동하는 것이 좋습니다.
Q. 로그 분석을 얼마나 자주 해야 하나요?
규모에 따라 다릅니다. 대규모 사이트(10만+ 페이지)는 매주 주요 지표(크롤링 수, 오류율, 상위 크롤링 URL)를 모니터링하는 것이 이상적입니다. 중소규모 사이트는 월 1회 또는 주요 변경(사이트 리뉴얼, 대량 콘텐츠 발행) 후에 분석하면 충분합니다. Google 코어 업데이트 직후에도 크롤링 패턴 변화를 확인하는 것이 좋습니다.

지금 읽으신 SEO 지식, 바로 적용해보세요!

검색엔진 최적화는 실전입니다. SEO SOVISS의 무료 분석 도구로 내 웹사이트의 오디트 점수를 즉시 확인하고 기술적 문제점을 점검해보세요.

내 웹사이트 진단하기 →
주정만

AI 개발팀 팀장

주정만

LLM(대형 언어 모델)의 구동 원리를 리버스 엔지니어링하여, AI가 가장 선호하는 응답 구조(GEO)를 웹 기술로 구현합니다.

SEO SOVISS 전체 집필진 보기 →
서버 로그 파일 분석으로 크롤러 행동 파악하기