본문으로 건너뛰기
네트워크 보안

GPTBot vs OAI-SearchBot vs ChatGPT-User: 무엇을 차단해야 할까

GPTBot vs OAI-SearchBot vs ChatGPT-User: OpenAI 봇 각각의 역할, 각각을 차단했을 때의 비용, 그리고 18개, 39개, 230개 프리픽스에 대한 실제 IP 확인.

작성자GeoIPHub 팀게시일읽는 시간31분 분량
서로 다른 빛의 궤적을 남기는 세 개의 추상적인 크롤러 형상, GPTBot, OAI-SearchBot, ChatGPT-User를 나타냄

2026-10-06에 OpenAI의 범위 파일에는 GPTBot 프리픽스 18개, OAI-SearchBot 39개, ChatGPT-User 230개가 올라 있었습니다. OpenAI는 네 번째 봇 OAI-AdsBot도 문서화하지만 ChatGPT 광고로 제출된 페이지만 방문하므로, 대부분의 사이트가 결정해야 하는 것은 위의 세 가지입니다. 이들을 "OpenAI"라는 하나로 취급하는 규칙은 지키려던 학습 권리를 내주거나 실수로 ChatGPT 검색에서 빠지게 만듭니다.

아래에서는 OpenAI 자신의 표현으로 각 봇이 하는 일, 각각을 차단했을 때의 비용, 가장 흔한 정책을 위한 robots.txt 설정, 그리고 이 중 하나라고 주장하는 요청이 OpenAI에서 왔는지 확인하는 방법을 다룹니다. 실제 API 출력의 차이를 볼 수 있도록 각 범위 파일에서 IP를 하나씩, 그리고 사칭 IP 하나를 조회했습니다. 이 확인의 일반적인 방법은 IP, 역방향 DNS, Web Bot Auth로 AI 크롤러 검증하기 가이드에 있습니다.

서로 다른 길이로 빛나는 칸들로 이루어진 막대 세 개, OpenAI 봇 세 가지가 공개한 IP 프리픽스를 나타냄
봇 세 개, 범위 파일 세 개, 서로 다른 세 가지 역할.

GPTBot vs OAI-SearchBot vs ChatGPT-User: 각각의 역할

GPTBot은 학습용, OAI-SearchBot은 검색용, ChatGPT-User는 사람의 실시간 요청용입니다. 구분은 이것이 전부이며, OpenAI의 크롤러 문서가 이를 직접 밝힙니다. "각 설정은 다른 설정과 독립적입니다." 그 페이지와 2026-10-06에 가져온 범위 파일에서 인용해 세 가지를 나란히 놓았습니다.

GPTBotOAI-SearchBotChatGPT-User
역할 (OpenAI의 표현)"생성형 AI 기반 모델 학습에 사용될 수 있는 콘텐츠를 크롤링하는 데 사용""ChatGPT의 검색 기능에서 검색 결과에 웹사이트를 표시하는 데 사용""ChatGPT와 Custom GPT에서의 특정 사용자 동작을 위해"
작동 계기자동 크롤링자동 크롤링사용자의 질문 또는 GPT Action
robots.txtOpenAI에 따르면 준수. 거부하면 "사이트의 콘텐츠를 학습에 사용하지 말아야 함을 나타냄"OpenAI에 따르면 준수. 거부한 사이트는 "ChatGPT 검색 답변에 표시되지 않음""robots.txt 규칙이 적용되지 않을 수 있음"
현재 User-Agent 토큰GPTBot/1.4OAI-SearchBot/1.4ChatGPT-User/1.0
범위 파일openai.com/gptbot.jsonopenai.com/searchbot.jsonopenai.com/chatgpt-user.json
파일 생성일2026-09-222026-01-022026-09-25
프리픽스 (IPv4 / IPv6)18 / 039 / 0230 / 0

다음은 2026-10-06에 OpenAI 페이지에 표시된 전체 User-Agent 문자열입니다.

GeoIPHub API
GPTBot: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot OAI-SearchBot: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot ChatGPT-User: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot

OpenAI는 GPTBot과 OAI-SearchBot 문자열을 예시로 표기하고 "버전 번호는 바뀔 수 있다"고 덧붙이며, ChatGPT-User 문자열은 전체 문자열로 제시합니다. OAI-SearchBot의 문자열은 Mac의 데스크톱 Chrome처럼 시작하므로 문자열 전체가 아니라 토큰(GPTBot, OAI-SearchBot, ChatGPT-User)으로 매칭하십시오. 로그 분석에 도움이 되는 세부 사항이 하나 있습니다. OpenAI에 따르면 GPTBot이나 OAI-SearchBot이 robots.txt를 가져올 때 User-Agent에 robots.txt 표식을 붙일 수 있으므로, 로그에 경로가 기록되지 않더라도 그런 요청을 구별할 수 있습니다.

OpenAI 페이지에는 네 번째 봇 OAI-AdsBot도 나옵니다. 이 봇은 "ChatGPT에 광고로 제출된 웹 페이지의 안전성을 검증하는 데 사용"되며, OpenAI는 "랜딩 페이지의 콘텐츠를 사용해 사용자에게 광고를 보여 주기에 가장 적합한 시점을 판단할 수도 있다"고 밝힙니다. 광고로 제출된 페이지만 방문하며, OpenAI는 수집한 데이터가 기반 모델 학습에 쓰이지 않는다고 합니다. 토큰은 OAI-AdsBot/1.0이고, 범위 파일 openai.com/adsbot.json은 2026-05-12에 생성되었으며 가져왔을 때 IPv4 프리픽스 2개가 있었습니다. OpenAI는 OAI-AdsBot을 robots.txt 태그로 나열하지 않습니다. 해당 페이지가 그런 태그로 명시하는 것은 OAI-SearchBot과 GPTBot뿐입니다.

ChatGPT-User vs GPTBot: 사용자가 일으킨 요청이 다른 이유

ChatGPT-User가 GPTBot과 다른 점은 방문 시점을 크롤링 일정이 아니라 사람이 정한다는 것입니다. OpenAI 페이지는 이렇게 말합니다. "ChatGPT-User는 웹을 자동으로 크롤링하는 데 쓰이지 않습니다. 이러한 동작은 사용자가 시작하므로 robots.txt 규칙이 적용되지 않을 수 있습니다."

같은 항목의 문장 두 개가 정책 면에서 더 중요합니다. ChatGPT-User는 "콘텐츠가 검색에 표시될 수 있는지 판단하는 데 쓰이지 않으며", OpenAI는 사이트 소유자에게 OAI-SearchBot을 안내합니다. "검색 거부와 자동 크롤링을 관리하려면 robots.txt에서 OAI-SearchBot을 사용하십시오."

따라서 ChatGPT-User에 대한 Disallow 줄은 기껏해야 OpenAI가 따르지 않을 수 있다고 말하는 요청일 뿐입니다. 사용자가 일으킨 요청을 꼭 막아야 한다면 방화벽이나 애플리케이션에서 IP로 처리해야 합니다. 이 표현이 언제 도입되었는지 날짜가 적힌 변경 기록을 찾아보았지만 찾지 못했습니다. 이 페이지는 업데이트용 RSS 피드를 링크하는데 확인했을 때 비어 있었습니다. 그래서 현재 문구만 인용하며 언제 바뀌었는지는 주장하지 않습니다.

ChatGPT가 사이트에 접근하는 경로는 ChatGPT-User만이 아닙니다. OpenAI의 ChatGPT Work의 Cloud 브라우저 허용 목록 등록 도움말(URL에는 아직 "chatgpt-agent"라고 되어 있고, Akamai도 여전히 봇 이름 "ChatGPT Agent"로 분류합니다)은 Cloud 브라우저가 "Web Bot Auth를 사용해 아웃바운드 HTTP 요청에 서명한다"고 밝힙니다. 각 요청에는 Signature와 Signature-Input 헤더, 그리고 "https://chatgpt.com"으로 설정된 Signature-Agent 헤더가 붙으며, chatgpt.com/.well-known/http-message-signatures-directory의 키로 RFC 9421에 따라 검증합니다. 이 트래픽은 범위 파일이 아니라 서명으로 식별됩니다. 서명 검증의 작동 방식은 허브 가이드의 Web Bot Auth 섹션에서 다룹니다.

GPTBot, OAI-SearchBot, ChatGPT-User의 IP 대역

OpenAI는 세 봇의 IP 대역을 https://openai.com/gptbot.json, https://openai.com/searchbot.json, https://openai.com/chatgpt-user.json에 공개합니다. 2026-10-06 기준으로 IPv4 프리픽스가 각각 18개, 39개, 230개 올라 있었고 IPv6는 없었습니다. 각 범위 파일은 creationTime과 prefixes 목록이 있는 작은 JSON 문서입니다. 다음은 GPTBot 파일의 앞부분과, 세 파일을 한 줄로 요약하는 방법입니다.

GeoIPHub API
curl -s https://openai.com/gptbot.json | head -c 120 # { # "creationTime": "2026-09-22T02:00:07.000000", # "prefixes": [ # { # "ipv4Prefix": "132.196.86.0/24" for f in gptbot searchbot chatgpt-user; do curl -s https://openai.com/$f.json | jq -c '[.creationTime, (.prefixes | length), .prefixes[0]]' done # ["2026-09-22T02:00:07.000000",18,{"ipv4Prefix":"132.196.86.0/24"}] # ["2026-01-02T11:00:00.000000",39,{"ipv4Prefix":"104.210.140.128/28"}] # ["2026-09-25T18:04:57.257335",230,{"ipv4Prefix":"104.208.184.192/28"}]

파일을 가져온 날 눈에 띈 점이 세 가지 있습니다.

  • 세 범위 파일 모두 IPv4 전용입니다. ipv6Prefix 항목이 하나도 없었습니다. ipv4Prefix만 파싱하는 코드도 오늘은 동작하지만, 구조상 IPv6가 가능하므로 두 키를 모두 읽으십시오.
  • 구성이 매우 다릅니다. GPTBot은 대부분 /25인 프리픽스 18개입니다. ChatGPT-User는 주소 16개짜리 작은 /28 블록 229개와 큰 /17인 9.129.0.0/17 하나입니다. 직접 관리하는 ChatGPT-User 허용 목록은 틀릴 항목이 가장 많습니다.
  • 샘플로 뽑은 OpenAI IP 세 개(파일당 하나)는 모두 Microsoft의 네트워크(AS8075)에 있습니다. 그래서 ASN으로 허용 목록을 만들 수 없습니다. 같은 네트워크에 GPTBot을 사칭하려고 서버를 빌린 사람을 포함한 다른 모든 Azure 고객이 있기 때문입니다.

복사한 목록은 낡습니다. OpenAI는 이 범위 파일을 업데이트하며, 세 파일 중 두 개는 저희가 가져오기 전 2주 안의 creationTime을 가지고 있으므로, 블로그 글(이 글 포함)에서 붙여 넣은 목록은 파일이 다음에 바뀌는 순간 낡은 것이 됩니다. 파일을 가져와 캐시하고 일정에 따라 갱신하십시오. 대역을 설정 파일에 붙여 넣지 마십시오. 봇별로 게시된 CIDR 대역과 IP를 대조하는 방법을 포함한 프리픽스 매칭 자체는 허브 가이드에서 다루며, 이 글은 OpenAI의 봇 세 가지에 집중합니다.

GPTBot을 차단해야 할까? 각 봇을 차단했을 때의 비용

콘텐츠를 학습에 쓰지 않기를 원한다면 GPTBot을 차단하십시오. OpenAI에 따르면 ChatGPT 검색에는 아무 비용도 들지 않습니다. 나머지 두 봇을 차단하면 눈에 보이는 비용이 있으므로, 포괄 규칙의 부작용이 아니라 의도한 선택이어야 합니다.

차단 대상얻는 것잃는 것
GPTBot콘텐츠를 학습에 쓰지 말라는 신호OpenAI의 "각 설정은 독립적"에 따르면 ChatGPT 검색에서는 잃는 것 없음
OAI-SearchBotChatGPT 검색을 위한 자동 크롤링 없음ChatGPT 검색 답변에 나타나는 것. "탐색용 링크로는 여전히 나타날 수" 있음
ChatGPT-User (robots.txt가 적용되지 않을 수 있으므로 IP로)사용자가 ChatGPT에 내 URL을 물을 때 페이지를 가져가지 않음그 사용자들은 내 페이지에서 답을 얻지 못하고, ChatGPT도 대신 읽어 줄 수 없음

두 크롤러를 모두 허용한다면 알아 둘 OpenAI의 문장이 하나 더 있습니다. "사이트가 두 봇을 모두 허용했다면, 중복 크롤링을 피하기 위해 한 번의 크롤링 결과를 두 가지 용도에 모두 사용할 수 있습니다." 둘 다 허용한다고 해서 부하가 반드시 두 배가 되는 것은 아닙니다.

다른 사이트들은 어떻게 하는지 참고할 수 있도록, 2025-05-21에 발표된 약 1억 4천만 개 웹사이트의 robots.txt 파일에 대한 Ahrefs 연구(2024년 12월까지의 데이터)는 GPTBot이 사이트의 5.89%에서 차단되어 가장 많이 차단된 AI 봇이라고 밝혔습니다. OAI-SearchBot은 5.54%, ChatGPT-User는 5.64%가 차단했습니다. 대부분은 포괄 규칙에 의한 것으로, GPTBot을 명시한 사이트는 0.5%, ChatGPT-User는 0.22%, OAI-SearchBot은 0.08%뿐이었습니다. 이를 현재 비율이 아니라 참고 자료로 읽으십시오. 이 데이터는 오늘의 봇 설명보다 앞선 것이며, 방화벽이나 IP 차단이 아니라 robots.txt만 다룹니다.

5.54%와 0.08%의 차이가 핵심입니다. OAI-SearchBot을 차단하는 사이트 중 이를 명시한 곳은 거의 없습니다. 차단은 User-agent: *와 Disallow: / 같은 일반 규칙이나 특정 봇만 허용하는 허용 목록에서 비롯되었고, 둘 다 학습 봇과 함께 검색 봇까지 걸러냅니다.

GPTBot은 차단하고 ChatGPT 검색은 허용하는 방법

GPTBot은 차단하고 ChatGPT 검색은 허용하려면, robots.txt에서 OpenAI가 쓰는 그대로의 토큰을 사용해 GPTBot을 disallow하고 OAI-SearchBot을 allow하십시오.

GeoIPHub API
User-agent: GPTBot Disallow: / User-agent: OAI-SearchBot Allow: / User-agent: * Allow: /

OpenAI가 robots.txt가 ChatGPT-User에 "적용되지 않을 수 있다"고 말하므로 ChatGPT-User 그룹은 없습니다. OpenAI는 또한 검색 결과에 robots.txt 변경이 반영되기까지 약 24시간이 걸릴 수 있다고 말합니다.

robots.txt는 OpenAI가 요구하는 것의 절반일 뿐입니다. OAI-SearchBot 항목에서 OpenAI 페이지는 "사이트의 robots.txt 파일에서 OAI-SearchBot을 허용하고 게시된 IP 대역의 요청을 허용"하라고 권장합니다. IP 쪽은 모르는 사이에 깨지기 쉽습니다. 샘플로 뽑은 OAI-SearchBot 주소는 저희 API가 datacenter_ip로 표시하는 Microsoft Azure IP이므로, 데이터센터나 Azure 트래픽을 차단하거나 챌린지하는 WAF 규칙은 robots.txt가 Allow여도 OAI-SearchBot을 막아 ChatGPT 검색에서 빠지게 만들 수 있습니다. 그런 규칙을 운영한다면 searchbot.json의 프리픽스는 규칙에서 예외로 두십시오.

저장소의 파일이 아니라 서버가 실제로 보내는 파일을 확인하십시오. CDN이 전송 중에 파일을 바꿀 수 있습니다. 예를 들어 Cloudflare의 관리형 robots.txt는 "기존 robots.txt 앞에 관리형 robots.txt를 덧붙입니다". 이 규칙은 GPTBot을 disallow하지만 OAI-SearchBot이나 ChatGPT-User는 언급하지 않으므로, 그것만으로 위 파일과 같은 "학습은 차단하고 검색은 허용" 정책이 됩니다. 이런 설정은 직접 쓰지 않은 규칙을 추가하므로 실제로 제공되는 파일을 테스트하십시오.

GeoIPHub API
import urllib.robotparser p = urllib.robotparser.RobotFileParser("https://your-site.com/robots.txt") p.read() for bot in ["GPTBot", "OAI-SearchBot", "ChatGPT-User"]: print(bot, p.can_fetch(bot, "/blog/"))

위 파일에 대해 실행하자 Python 3.9의 파서는 GPTBot False, OAI-SearchBot True, ChatGPT-User True를 출력했습니다. OAI-SearchBot이 False로 나오면 상위 어딘가에서 ChatGPT 검색을 막고 있는 것입니다.

robots.txt vs IP 차단: robots.txt 규칙은 요청일 뿐 차단이 아닙니다

robots.txt 규칙은 정직한 크롤러에게 원하는 바를 알려 줄 뿐이며, 봇을 실제로 막는 것은 요청이 도착하는 곳에서 하는 IP 확인뿐입니다. OpenAI의 진짜 봇은 robots.txt를 읽습니다. User-Agent에 GPTBot이나 ChatGPT-User를 넣는 스크래퍼는 이를 무시하며, 이름을 빌리는 데는 플래그 하나면 충분합니다. curl -A "ChatGPT-User/1.0" https://your-site.com/는 진짜와 같은 봇 토큰을 담고 있습니다.

User-Agent도, robots.txt도 어느 쪽이 진짜인지 알려 주지 못합니다. 방화벽이나 CDN이 OpenAI의 봇에 요청 제한이나 봇 챌린지 면제를 준다면, 그 면제는 누가 요청하는지를 얼마나 잘 확인하느냐만큼만 유효합니다. 다른 모든 종류의 봇도 마찬가지이며, 어떤 IP 신호가 어떤 봇을 식별하는지 개요에서 각 신호가 무엇을 확인하는지 정리했습니다.

차단은 요청이 도착하는 곳에서 이루어져야 하고 두 가지 사실이 함께 필요합니다(OpenAI의 봇만이 아니라 모든 AI 크롤러에 이를 적용하는 nginx 및 Express 정책은 IP 검증 후 AI 크롤러 차단 가이드에 있습니다).

  1. 주장: User-Agent가 어느 OpenAI 토큰을 말하는가.
  2. 증거: 접속한 IP가 그 봇의 범위 파일 안에 있는가.

증거 없는 주장은 OpenAI로 검증되지 않은 것입니다. 공격으로 취급하지 말고 챌린지하거나 요청을 제한하십시오. 허브 글에서 공개된 대역 밖의 IP는 가짜의 증거가 아니라 결론을 낼 수 없는 것이라고 설명합니다. 각 토큰은 자신의 범위 파일에 고정하십시오. ChatGPT-User IP가 GPTBot이라는 주장을 증명하지는 않기 때문입니다. 역방향 DNS는 여기서 도움이 되지 않습니다. 각 파일에서 IP 하나씩에 dig -x를 실행했더니 셋 모두 Microsoft의 Azure DNS에서 NXDOMAIN을 반환했으므로 정방향 확인할 호스트 이름이 없습니다. OpenAI에는 범위 파일이 통하는 확인 수단입니다.

요청이 정말 OpenAI에서 왔는지 확인하는 방법: 실제 IP 세 개와 가짜 하나

요청이 OpenAI에서 온 것이란 IP가 User-Agent가 말하는 봇의 범위 파일 안에 있다는 뜻입니다. 저희 API는 파일 안의 IP에 대해 verified: true와 그 봇의 이름을 반환하고, 저희가 확인하는 모든 크롤러 피드 밖의 IP에는 verified: false를 반환합니다. 2026-10-06에 OpenAI 범위 파일 각각의 첫 번째 프리픽스의 첫 주소와 DigitalOcean 서버를 조회했습니다. 대역이 움직이면 결과도 달라집니다.

IP출처 파일threat.crawler네트워크와 도시점수, 조치
132.196.86.0gptbot.jsonverified: true, name: GPTBotMicrosoft AS8075, 디모인 US0, allow
104.210.140.128searchbot.jsonverified: true, name: OAISearchBotMicrosoft AS8075, 샌안토니오 US0, allow
104.208.184.192chatgpt-user.jsonverified: true, name: ChatGPTUserMicrosoft AS8075, 보이든 US0, allow
104.248.50.21없음verified: false, name: noneDigitalOcean AS14061, 노스버겐 US15, allow

API의 크롤러 이름에서는 하이픈이 빠진다는 점에 유의하십시오. OAI-SearchBot과 ChatGPT-User가 아니라 OAISearchBot과 ChatGPTUser입니다.

OpenAI 주소 세 개 모두 operator: "OpenAI", category: "ai", verification_method: "ip_range_list"로 반환되었습니다. 이제 추적 예시입니다. 저희 트래픽이 아닌 예시용 로그 한 줄을 가정해 봅니다. 104.248.50.21에서 ChatGPT-User/1.0 User-Agent로 온 요청입니다. 다음은 그 IP를 실제 ChatGPT-User 주소 옆에 놓은 것으로, 실제 응답을 줄였습니다.

GeoIPHub API
[ { "ip": "104.208.184.192", "asn": { "asn": 8075, "org": "MICROSOFT-CORP-MSN-AS-BLOCK - Microsoft Corporation", "asn_type": "hosting" }, "detection": { "is_hosting": true, "is_vpn": false, "is_proxy": false }, "threat": { "is_crawler": true, "crawler": { "verified": true, "name": "ChatGPTUser", "operator": "OpenAI", "category": "ai", "verification_method": "ip_range_list" } }, "scoring": { "fraud_score": 0, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "no_ptr_datacenter", "verified_crawler"] } }, { "ip": "104.248.50.21", "asn": { "asn": 14061, "org": "DIGITALOCEAN-ASN - DigitalOcean, LLC", "asn_type": "hosting" }, "detection": { "is_hosting": true, "is_vpn": false, "is_proxy": false }, "threat": { "is_crawler": false, "crawler": { "verified": false, "name": "none", "operator": "none", "category": "none", "verification_method": "none" } }, "scoring": { "fraud_score": 15, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "no_ptr_datacenter"] } } ]

세 단계로 읽습니다.

  1. 조회. DigitalOcean IP는 저희가 확인하는 어떤 크롤러 피드에도 없으므로 threat.crawler.verified는 false이고 name은 "none"입니다. 데이터센터 IP라는 사실만으로는 악의적이라고 할 수 없으므로 점수는 15, allow입니다.
  2. 비교. API는 IP만 받으므로 ChatGPT-User 주장을 본 적이 없고, 응답의 crawler.spoofed 필드(위에서는 생략)는 항상 false인 자리표시자여서 요청이 정직하다고 알려 줄 수도 없습니다. 두 사실은 여러분의 코드가 가지고 있습니다. 요청은 OpenAI 토큰을 주장하는데 검증된 신원은 "none"입니다. 이 불일치가 곧 사칭입니다.
  3. 대조. 104.208.184.192는 chatgpt-user.json에 있으므로 verified: true, name: "ChatGPTUser"로 반환되고, verified_crawler가 점수를 0으로 낮춥니다.

비교는 몇 줄이면 됩니다. 맵은 각 User-Agent 토큰을 API의 하이픈 없는 이름으로 변환합니다.

GeoIPHub API
const OPENAI_BOTS = { "GPTBot": "GPTBot", "OAI-SearchBot": "OAISearchBot", "ChatGPT-User": "ChatGPTUser" }; const ua = req.headers["user-agent"] ?? ""; const claimed = Object.keys(OPENAI_BOTS).find((token) => ua.includes(token)); if (claimed) { const res = await fetch(`https://api.geoiphub.com/v1/lookup/${clientIp}`, { headers: { "x-api-key": process.env.GEOIPHUB_KEY }, }); const { threat } = await res.json(); const isThatBot = threat.crawler.verified && threat.crawler.name === OPENAI_BOTS[claimed]; if (!isThatBot) { // Claims an OpenAI bot, but the IP isn't in that bot's file: challenge or rate-limit it. } }

키 없이 시험하려면 curl https://api.geoiphub.com/v1/lookup/104.208.184.192를 실행하거나(익명 조회 분당 30회), 자체 로그의 IP를 무료 IP 조회 도구에 붙여 넣으십시오. "미검증" 범주에 들어가는 IPv6 출처는 /64 프리픽스 기준으로 IPv6를 요청 제한하고 차단하는 가이드처럼 프리픽스 단위로 요청을 제한하십시오.

이 확인의 한계

이 확인에는 세 가지 한계가 있습니다. OAI-AdsBot이나 ChatGPT의 서명된 Cloud 브라우저 트래픽은 다루지 않고, 요청 헤더를 볼 수 없으며, 새 프리픽스가 저희를 통해 검증되기까지 최대 2일이 걸릴 수 있습니다. 또한 사칭 샘플에서 출력 필드 하나가 틀렸습니다.

  • OpenAI의 봇 네 개 중 세 개를 검증합니다. GeoIPHub의 크롤러 검증은 운영자 10곳의 공식 대역 피드 19개를 확인하며, 여기에는 OpenAI의 GPTBot, ChatGPT-User, OAI-SearchBot 파일과 Anthropic, Perplexity가 ClaudeBot, PerplexityBot용으로 공개하는 파일이 포함됩니다. OAI-AdsBot은 그중에 없으므로 OpenAI 자체 방식으로 확인하십시오.
  • 서명은 검증하지 않습니다. ChatGPT Work의 Cloud 브라우저는 Web Bot Auth 서명으로 식별되는데, 저희의 어떤 대역 피드도 이를 다루지 않습니다. OpenAI의 키 디렉터리와 직접 대조해 검증하십시오. OpenAI의 문서에 따르면 Cloudflare, Akamai, HUMAN은 이를 자동으로 검증합니다.
  • API가 보는 것은 IP이지 헤더가 아닙니다. 주소가 ChatGPT-User에 속한다는 것은 알려 줄 수 있습니다. 이를 요청이 주장한 User-Agent와 맞춰 보는 일은 위에서처럼 여러분 코드의 몫입니다.
  • 피드가 최대 2일 늦을 수 있습니다. 크롤러 범위 파일은 매일 다시 가져오고 조회 데이터베이스도 매일 재구축하며, OpenAI의 범위 파일 세 개 중 두 개는 저희가 가져오기 전 2주 안에 생성되었습니다. 새로 생긴 프리픽스는 며칠 동안 저희를 통해 검증되지 않을 수 있으므로, 불일치는 즉시 차단할 이유가 아니라 챌린지할 이유입니다.
  • no_ptr_datacenter는 여기서 정확하지만 사칭 샘플에서는 틀렸습니다. OpenAI IP 세 개 모두에서 발동했고 dig -x로 역방향 DNS가 없음을 확인했습니다. 그러나 104.248.50.21에는 실제 PTR 레코드가 있는데 저희 레코드에는 없습니다. IP로 Googlebot을 검증하고 가짜를 가려낼 때 발견한 것과 같은 공백이며 백엔드 버그로 기록되어 있습니다. 크롤러 판정은 이 값에 의존하지 않습니다.

주장 대 증거 확인은 결제 단계에서도 중요합니다. 자동화된 구매자는 원하는 봇 이름을 얼마든지 주장할 수 있기 때문입니다. 그 버전은 IP로 결제 단계의 AI 쇼핑 에이전트를 처리하는 방법을 참고하십시오.

실제 제공되는 robots.txt부터 시작하십시오. 위의 짧은 Python 확인을 실행해, 의도한 경우가 아니라면 OAI-SearchBot이 True로 나오는지 확인합니다. 그런 다음 로그에서 GPTBot, OAI-SearchBot, ChatGPT-User를 명시한 일주일 분량의 요청을 가져와 그 IP를 세 범위 파일과 대조하십시오. 일치하지 않는 것은 OpenAI로 검증되지 않은 것이므로 챌린지하거나 요청을 제한하십시오.

자주 묻는 질문

ChatGPT-User는 GPTBot과 같은 봇인가요?

아닙니다. GPTBot은 자체 일정에 따라 크롤링하며 OpenAI 모델 학습에 쓰일 수 있는 콘텐츠를 수집합니다. ChatGPT-User는 ChatGPT나 Custom GPT를 사용하는 사람이 요청을 일으킬 때에만 페이지를 방문하며, OpenAI는 이 봇을 웹을 자동으로 크롤링하는 데 쓰지 않는다고 밝힙니다. IP 대역 파일도 gptbot.json과 chatgpt-user.json으로 따로 공개합니다.

robots.txt로 ChatGPT-User를 차단할 수 있나요?

확실하게는 안 됩니다. OpenAI는 ChatGPT-User의 요청이 사용자에 의해 시작되므로 "robots.txt 규칙이 적용되지 않을 수 있다"고 밝힙니다. 또한 ChatGPT-User는 콘텐츠가 ChatGPT 검색에 나타날지 결정하는 데 쓰이지 않으며, 그 역할은 OAI-SearchBot이 맡는다고 합니다. 사용자가 일으킨 요청을 막아야 한다면 openai.com/chatgpt-user.json의 대역을 사용해 방화벽이나 애플리케이션에서 IP로 차단하십시오.

OAI-SearchBot이란 무엇인가요?

OAI-SearchBot은 OpenAI의 검색 크롤러입니다. OpenAI는 이 봇이 "ChatGPT의 검색 기능에서 검색 결과에 웹사이트를 표시하는 데 사용된다"고 밝힙니다. User-Agent에는 데스크톱 Chrome처럼 보이는 문자열 안에 OAI-SearchBot/1.4 토큰이 들어 있고, IP 대역은 openai.com/searchbot.json에 있으며 2026-10-06에는 IPv4 프리픽스 39개가 올라 있었습니다. OpenAI는 robots.txt에서 이 봇을 허용하고 공개된 IP 대역의 요청을 허용하라고 권장합니다.

OAI-SearchBot은 robots.txt를 준수하나요?

예. OpenAI는 OAI-SearchBot과 GPTBot을 robots.txt 태그로 명시하며, OAI-SearchBot을 거부한 사이트는 탐색용 링크로는 나타날 수 있지만 ChatGPT 검색 답변에는 표시되지 않는다고 밝힙니다.

robots.txt 변경이 ChatGPT 검색에 반영되기까지 얼마나 걸리나요?

OpenAI에 따르면 약 24시간입니다. OpenAI는 "사이트의 robots.txt가 업데이트된 후 시스템이 조정되기까지 약 24시간이 걸릴 수 있다"고 설명합니다.

GPTBot의 IP 대역은 어디에 있나요?

https://openai.com/gptbot.json에 있습니다. 2026-10-06에 가져온 사본은 2026-09-22에 생성되었으며 IPv4 프리픽스 18개가 있고 IPv6는 없었습니다. OAI-SearchBot의 대역은 openai.com/searchbot.json, ChatGPT-User의 대역은 openai.com/chatgpt-user.json에 있습니다. 대역은 변하므로 복사해 두지 말고 일정에 따라 파일을 가져오십시오.

GPTBot이 왜 Microsoft IP에서 오나요?

저희 샘플에서는 그랬습니다. 조회한 GPTBot 주소와 OAI-SearchBot, ChatGPT-User 주소 모두 Microsoft의 네트워크인 AS8075에 있었습니다. OpenAI의 크롤러 페이지는 어느 네트워크에서 크롤링하는지 밝히지 않으므로 저희 샘플에서 확인된 내용만 보고합니다. 같은 ASN을 다른 Microsoft 클라우드 고객도 쓰므로 그것만으로는 아무것도 증명하지 못합니다. 대신 IP를 gptbot.json과 대조하십시오.

GPTBot을 차단하면 ChatGPT에서 제외되나요?

OpenAI에 따르면 ChatGPT 검색에서는 제외되지 않습니다. 문서는 각 설정이 독립적이라고 하며, 학습에서 빠지려고 GPTBot을 거부하면서 검색 결과에 나타나도록 OAI-SearchBot을 허용하는 예시를 듭니다. ChatGPT 검색 답변에서 사라지게 하는 것은 OAI-SearchBot을 차단하는 것입니다.

작성자

GeoIPHub 팀

GeoIPHub API를 만드는 팀

GeoIPHub IP 인텔리전스 API와 스캐너를 만드는 GeoIPHub 팀이 작성했습니다. 초안은 AI의 도움을 받아 준비하고 팀이 편집합니다. API 예시는 예시용으로 표시된 경우를 제외하고 라이브 API에 대한 실제 조회 결과입니다.

이 글 공유하기
더 많은 글

관련 글