고급Google
서버 로그 파일 분석으로 크롤러 행동 파악하기
핵심 요약 (TL;DR)
서버 접근 로그(access.log)에서 Googlebot·네이버봇의 크롤 패턴을 분석하는 방법, 크롤 빈도·에러 URL·크롤 버짓 낭비를 진단하는 실전 가이드입니다.
로그 파일 분석이 다른 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 코어 업데이트 직후에도 크롤링 패턴 변화를 확인하는 것이 좋습니다.