AI 크롤러 접근 확인: 봇 구분부터 크롤러가 받은 HTML·로그까지
AI 크롤러 접근은 검색 답변용 봇을 고른 뒤 robots.txt·방화벽·서버 응답 코드·페이지 지시어·받은 HTML 다섯 층을 대조하고, 서버 로그를 공개 IP 목록과 맞춰 확인합니다.

AI 서비스의 크롤러 접근을 확인하려면 먼저 확인할 검색 답변용 봇을 고릅니다. 이어서 robots.txt, 방화벽, 서버 응답 코드, 페이지 지시어, 크롤러가 받은 HTML 다섯 층을 차례로 대조합니다. IP 목록을 공개한 회사(OpenAI·Perplexity·Google)의 봇은 서버 로그의 요청 IP를 그 목록과 맞춰 실제 방문 여부를 판단합니다. Google은 Search Console의 URL 검사 도구로 Google이 렌더링한 HTML을 직접 볼 수 있습니다.
AI 서비스마다 사이트를 읽는 봇은 무엇인가요?
확인할 대상을 정하려면 봇의 용도부터 구분합니다. 각 서비스의 공식 문서는 검색 답변용, 모델 학습용, 사용자 요청용 봇을 따로 설명합니다. AI 답변에 출처로 표시되는 것이 목표라면 검색 답변용 봇을 먼저 확인합니다. 아래 표는 주요 해외 AI 검색 서비스와 Google을 기준으로 정리했습니다.
| 봇 이름 | 공식 문서가 설명하는 용도 | robots.txt 관련 설명 |
|---|---|---|
| OAI-SearchBot | ChatGPT 검색 기능에 사이트를 보여 줌 | 차단한 사이트는 ChatGPT 검색 답변에 나오지 않음. 이동용 링크로는 나올 수 있음 |
| GPTBot | OpenAI 기반 모델 학습에 쓰일 수 있는 콘텐츠 수집 | 차단하면 학습에 쓰지 말라는 표시가 됨 |
| ChatGPT-User | 사용자 요청에 따른 동작 처리. 자동 크롤링에는 쓰지 않음 | 사용자가 시작한 요청이라 규칙이 적용되지 않을 수 있음 |
| Claude-SearchBot | 검색 결과 품질을 높이기 위해 웹을 탐색 | 차단하면 검색용 색인에서 빠져 노출과 정확도가 낮아질 수 있음 |
| ClaudeBot | 모델 학습에 도움이 될 수 있는 웹 콘텐츠 수집 | 차단하면 이후 자료를 학습 데이터에서 빼라는 신호가 됨 |
| Claude-User | 사용자 질문에 따라 사이트 방문 | 차단하면 사용자 질문에 답하려는 수집이 막힘 |
| PerplexityBot | Perplexity 검색 결과에 사이트를 보여 주고 링크함 | robots.txt 설정을 따름. 기반 모델 학습에는 쓰지 않음 |
| Perplexity-User | 사용자 질문에 따라 페이지 방문 | 사용자 요청이라 일반적으로 robots.txt를 무시함 |
| Googlebot | Google 검색 색인용. AI 개요·AI 모드에 나오려면 색인되고 스니펫 표시 자격이 있어야 함 | 자동 크롤링 때는 항상 robots.txt를 따름 |
| Google-Extended | Gemini 학습과 그라운딩(답변 시점에 검색 색인 콘텐츠를 모델에 제공)에 쓸지 제어하는 토큰 | 기존 Google 크롤러로 수집하며 Google 검색 포함 여부에 영향을 주지 않음 |
OpenAI 문서는 봇별 robots.txt 설정이 서로 독립적이라고 설명합니다. 따라서 봇마다 허용 여부를 따로 확인합니다. OpenAI는 ChatGPT-User 방문으로 검색 노출 여부를 판단하지 않는다고 밝힙니다. 사용자 요청용 봇의 방문 기록은 검색 노출 자격의 근거로 쓰지 않습니다.
robots.txt에서 허용했는데도 크롤러 접근이 막히는 곳은 어디인가요?
robots.txt는 크롤러가 읽고 스스로 따르는 규칙입니다. 그 앞뒤에는 방화벽, 서버, 페이지 지시어, HTML 내용이 따로 있습니다. 아래 다섯 층을 위에서부터 차례로 확인합니다.
| 확인 층 | 확인 방법 | 정상으로 보는 기준 |
|---|---|---|
| 1. robots.txt | 검색 답변용 봇 이름이 들어간 규칙 확인 | 노출하려는 경로가 검색용 봇에 막혀 있지 않음 |
| 2. CDN(콘텐츠 전송 네트워크)·방화벽 | 보안 서비스의 봇 차단·확인 절차 규칙과 차단 기록 확인 | 공식 봇 허용 규칙이 차단 규칙보다 먼저 적용됨(구체 조건은 아래 요청 문안 참고) |
| 3. 원 서버 | 접근 로그에서 해당 봇의 페이지 요청 응답 코드 확인 | 페이지 요청에 200(정상 응답)이 기록되고 403(접근 거부)·429(요청 과다)·5xx(서버 오류)가 없음 |
| 4. 페이지 지시어 | robots 메타 태그와 X-Robots-Tag(HTTP 응답 헤더로 보내는 robots 지시) 확인 | 노출하려는 페이지에 noindex(색인 제외)·nosnippet(설명 문구 표시 금지)이 없음 |
| 5. 받은 HTML | 봇 사용자 에이전트로 페이지를 직접 요청해 서버가 보낸 원시 HTML(스크립트 실행 전 HTML 그대로)에서 본문 핵심 문장 찾기 | 제목, 본문 첫 문단, 회사명이 HTML에 그대로 있음 |
Google 문서는 X-Robots-Tag에 메타 태그와 같은 규칙을 쓸 수 있다고 설명합니다. 규칙이 서로 충돌하면 더 제한적인 쪽이 적용됩니다. robots.txt로 크롤링을 막은 페이지는 메타 태그와 헤더의 지시어를 읽지 못해 무시된다고도 설명합니다.
증상별 원인 후보는 어떻게 좁히나요?
증상 하나에 원인은 여러 개일 수 있습니다. 아래 표에서 원인 후보를 고른 뒤 다음 확인 항목으로 하나씩 지워 나갑니다.
| 확인된 증상 | 원인 후보 | 다음 확인 |
|---|---|---|
| 원 서버 로그에 검색용 봇 요청이 한 건도 없음 | 방화벽이 앞단에서 차단함, 아직 방문하지 않음 | 보안 서비스 차단 기록에서 같은 봇 이름 검색 |
| 봇이 robots.txt만 받아 가고 페이지는 요청하지 않음 | 해당 봇 그룹에 경로 차단 규칙이 있음 | 그 봇 이름이 적용되는 규칙 묶음 재확인 |
| 로그의 봇 이름은 맞는데 IP가 공개 목록에 없음 | 봇 이름을 사칭한 요청 | 공개 IP 목록과 역방향 DNS로 대조 |
| robots.txt로 막았는데 Perplexity-User 방문이 계속됨 | 사용자 요청 봇은 robots.txt를 일반적으로 무시함 | 차단이 목적이면 방화벽 규칙 검토 |
| Google 검색 결과에 설명 문구가 나오지 않음 | nosnippet 또는 max-snippet:0 적용 | URL 검사에서 렌더링된 HTML과 응답 헤더 확인 |
| 받은 HTML에 본문 문장이 없음 | 본문을 스크립트로 나중에 불러옴, 필요한 리소스를 불러오지 못함 | 로드된 리소스와 자바스크립트 콘솔 확인 |
| robots.txt를 고쳤는데 바로 바뀌지 않음 | 반영 대기 시간(OpenAI 약 24시간, Perplexity 최대 24시간 안내) | 안내된 시간이 지난 뒤 로그에서 robots.txt 재요청과 페이지 요청 재확인 |
Google AI 개요·AI 모드에서는 무엇을 확인하나요?
Google 문서는 AI 기능의 연결 출처가 되려면 페이지가 색인되고, 스니펫(검색 결과 설명 문구)과 함께 표시될 자격이 있어야 한다고 설명합니다. 추가 기술 요건은 없다고 밝힙니다. 따라서 Google 쪽 확인은 Search Console의 URL 검사 도구에서 시작합니다.
- URL 검사에서 크롤링 허용, 페이지 가져오기, 색인 생성 허용 세 항목을 확인합니다.
- 크롤링된 페이지 보기에서 Google이 렌더링한 HTML, HTTP 헤더, 로드된 리소스, 자바스크립트 콘솔을 엽니다.
- 검사 결과는 마지막으로 색인된 버전 기준이므로 실시간 테스트 결과와 비교합니다.
- HTML과 헤더에서 nosnippet, max-snippet, data-nosnippet이 쓰인 위치를 찾습니다.
URL 검사 화면의 HTML은 렌더링 결과이므로 스크립트 실행 전 원시 HTML과 다를 수 있습니다. 실무에서는 봇 사용자 에이전트로 페이지를 직접 요청해 서버 응답 HTML을 따로 확인하는 방법을 권합니다.
Google 문서는 미리보기 지시어 세 가지를 다음과 같이 설명합니다.
- nosnippet: 설명 문구 표시를 막고, 콘텐츠를 AI 개요와 AI 모드의 직접 입력으로 쓰는 것도 막습니다.
- max-snippet: 설명 문구의 글자 수를 제한하며, 0으로 두면 nosnippet과 같습니다.
- data-nosnippet: span, div, section 요소 안의 일부 문장만 제외합니다.
AI 기능 문서는 미리보기 제어가 반영되지 않으면 그 지시어가 Googlebot이 받은 HTML에 보이는지 URL 검사로 확인하라고 안내합니다.
지시어를 고친 뒤 다시 크롤링되어 반영되기까지는 시간이 걸릴 수 있습니다.
Google-Extended는 Google 검색 포함 여부에 영향을 주지 않으므로, AI 개요 노출 문제라면 원인 후보에서 뺍니다.
로그의 AI 봇 방문이 진짜인지 어떻게 가려내나요?
Google 문서는 HTTP 사용자 에이전트(요청한 프로그램이 스스로 밝히는 이름) 문자열이 위조될 수 있다고 경고합니다. 로그에 봇 이름이 있다는 것만으로는 실제 크롤러가 읽었다고 판단할 수 없습니다. OpenAI, Perplexity, Google은 봇별 IP 목록 파일을 공개합니다.
- 접근 로그에서 검색 답변용 봇 이름이 들어간 요청만 추립니다.
- 요청 IP를 해당 회사가 공개한 IP 목록 파일과 대조합니다. Google 목록은 CIDR(IP 대역 표기) 형식입니다.
- Google 봇은 역방향 DNS(IP로 호스트 이름을 조회하는 방식)로 googlebot.com, google.com, googleusercontent.com 중 하나인지 봅니다.
- 그 호스트 이름을 다시 정방향으로 조회해 원래 IP와 같은지 확인합니다.
- 결과를 검증됨과 사칭 의심으로 나누고, 검증된 요청의 응답 코드만 판단 근거로 씁니다.
결과는 아래 양식으로 남기고, 기록할 때는 날짜를 함께 적습니다. 두 행은 설명을 위한 가상의 예입니다.
| 봇 이름 | 요청 IP | 공개 목록 일치 | 요청 경로·응답 코드 | 판정 |
|---|---|---|---|---|
| OAI-SearchBot | 공개 목록 대역 안의 주소 | 일치 | /product/overview · 200 | 검증됨 |
| PerplexityBot | 목록에 없는 주소 | 불일치 | /blog/guide · 403 | 사칭 의심 |
실무에서는 원 서버 로그와 보안 서비스 차단 기록을 같은 기간으로 맞춰 함께 보는 방법을 권합니다. 앞단에서 막힌 요청은 원 서버 로그에 남지 않을 수 있기 때문입니다. Anthropic 문서는 IP 차단만으로는 수집 거부가 정확히 적용되지 않거나 오래 유지되지 않을 수 있다고 설명합니다. 봇 허용·차단 의사는 robots.txt로 먼저 밝힙니다.
방화벽 담당자에게 보낼 요청은 어떻게 쓰나요?
방화벽이나 CDN을 다른 부서나 호스팅사가 관리하면 확인 결과를 바탕으로 요청 문안을 보냅니다. Perplexity 문서는 봇 이름 일치와 공개 IP 목록 일치를 함께 조건으로 둔 허용 규칙을 권합니다. 실무에서는 이 허용 규칙을 차단 규칙보다 먼저 적용되도록 두는 방법을 권합니다. 아래 문안은 이 권장 방식을 다른 봇에도 적용하는 실무 제안입니다.
- 요청 사항: AI 검색 서비스의 공식 크롤러가 공개 페이지를 읽을 수 있도록 허용 규칙 추가를 요청합니다.
- 대상: OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot 네 봇입니다.
- 조건: OAI-SearchBot과 PerplexityBot은 봇 이름 일치와 각 회사가 공개한 IP 목록 일치를 함께 적용합니다. Googlebot은 봇 이름 일치와 Google 공개 IP 목록 또는 역방향 DNS 확인을 함께 적용합니다. Claude-SearchBot은 봇 이름 기준으로 허용하고 robots.txt 설정과 함께 관리합니다.
- 우선순위: 기존 봇 차단·확인 절차 규칙보다 먼저 적용합니다.
- 유지: 공개 IP 목록이 바뀌므로 주기적으로 자동 반영합니다.
- 병행: 같은 네 봇이 robots.txt에서도 허용되어 있는지 함께 확인합니다.
- 회신: 적용 일시와 이후 일주일간 해당 봇의 허용·차단 기록 공유를 요청합니다.
실무에서는 규칙을 적용한 뒤 바로 판단하지 않고, 일정 시간이 지난 뒤 로그로 정상 봇 트래픽이 허용되는지 확인하는 방법을 권합니다. 사용자 요청용 봇까지 허용할지는 사이트 정책에 따라 따로 정합니다.
정리
- 검색 답변용 봇 네 가지(OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot)를 확인 대상으로 정합니다.
- robots.txt, 방화벽, 원 서버, 페이지 지시어, 받은 HTML 다섯 층을 차례로 대조합니다.
- Search Console URL 검사로 Google이 렌더링한 HTML과 헤더에서 본문과 nosnippet 여부를 확인합니다.
- 최근 일주일 로그의 봇 요청을 공개 IP 목록과 대조해 기록 양식에 검증됨과 사칭 의심을 나눠 적습니다.
- 막힌 층이 방화벽이면 요청 문안을 담당자에게 보내고, 회신받은 기록으로 응답 코드를 재확인합니다.
이 글은 일반적인 정보 제공을 위한 것이며, 글 속 수치와 사례는 인용한 출처 기준입니다.


