지난 30년 동안 robots.txt는 대체로 예의의 문제였다. 크롤러에게 특정 경로에 들어오지 말라고 요청하는 평문 텍스트 파일이었고, 그 뒤에는 좋은 매너 외에 아무것도 없었다. 이제 상황이 달라졌다. 2022년에 robots.txt는 공식 인터넷 표준이 되었다. EU에서는 기계가 읽을 수 있는 옵트아웃이 텍스트 및 데이터 마이닝의 적법성 여부를 결정하며, AI 모델 제공자는 이를 찾아내고 준수할 법적 의무를 진다. 그 사이 새로운 신호들도 여럿 등장했는데, 저마다 사이트가 AI 시스템의 콘텐츠 사용에 대해 무엇을 허용하는지를 표현한다고 주장한다.
공개된 웹 데이터를 수집하는 사람이라면, 특히 그 데이터가 결국 AI 모델을 훈련시키거나 공급하는 데 쓰이는 경우라면, 실질적인 질문은 단순하다. 이 신호들 중 어떤 것을 반드시 읽어야 하는가, 각각 무엇을 의미하는가, 그리고 무엇을 해야 하는가? 이 글은 2026년 9월 기준 현재 상황을 정리한다.
핵심 요약
- robots.txt는 IETF 표준인 RFC 9309이다. 이는 정밀한 매칭 규칙을 정의하지만, 자신의 규칙이 “접근 권한 부여의 한 형태가 아니다”라고 명시한다.
- EU에서는 온라인 콘텐츠에 대해 저작권자가 “기계가 읽을 수 있는 수단 등 적절한 방식으로” 권리를 유보하지 않은 경우에만 상업적 텍스트 및 데이터 마이닝 예외가 적용된다. 독일 법원은 그러한 유보가 기계가 읽을 수 있는 형태로만 효력을 가진다고 판시했다.
- 범용 AI 모델 제공자는 2025년 8월 2일부터 그러한 유보를 식별하고 준수할 의무를 진다. 집행위원회의 과징금 부과 권한은 2026년 8월 2일부터 적용된다.
- Cloudflare의 Content Signals부터 IETF의 초안 AI 선호도(preferences) 어휘까지 새로운 선호도 신호가 존재하지만, 아직 완성된 표준은 없다. 구속력이 없더라도 기록해 두어야 한다.
- 프록시 네트워크를 사용한다고 해서 사이트가 요청한 내용이 바뀌지는 않는다. 의무는 데이터를 수집하는 IP 주소가 아니라, 무엇을 수집하고 어떻게 사용하는지에 부착된다.
robots.txt는 이제 표준이다
2022년 9월에 발표된 RFC 9309는 사실상의 관행을 제안 표준(Proposed Standard)으로 격상시켰다. 그 규칙 중 여럿은 robots.txt 파일을 눈으로만 읽어온 사람들을 놀라게 한다.
- 가장 구체적인 규칙이 우선한다. “가장 구체적인 일치가 발견되면 그것을 사용해야 한다(MUST)“고 하며, 이는 일치하는 규칙의 길이로 측정되고, allow와 disallow 규칙이 동등할 경우
allow가 우선된다. 파일 내 순서는 중요하지 않다. - 에이전트 매칭은 대소문자를 구분하지 않으며, 일치하는 그룹이 없는 크롤러는
*그룹으로 대체된다. - 오류는 상황에 따라 다른 의미를 가진다. robots.txt를 4xx 응답으로 사용할 수 없는 경우, 크롤러는 무엇이든 접근할 수 있다. 서버 오류나 네트워크 오류로 접근할 수 없는 경우, 크롤러는 “완전한 차단으로 간주해야 한다(MUST).”
- 캐싱에는 한도가 있다. 크롤러는 “robots.txt 파일에 접근할 수 없는 경우를 제외하고, 캐시된 버전을 24시간 넘게 사용해서는 안 된다(SHOULD NOT).”
그리고 가장 중요한 한계는 이것이다. “이 규칙들은 접근 권한 부여의 한 형태가 아니다.” robots.txt는 콘텐츠를 비공개로 만들지 않으며, 이를 무시하는 것이 시스템 침입과 같지는 않다. 어떤 맥락에서 이것에 무게를 부여하는 것은 프로토콜 자체가 아니라 법이다.
EU에서 법적으로 중요한 이유
EU의 저작권 규칙은 적법하게 접근 가능한 콘텐츠에 대한 텍스트 및 데이터 마이닝을 허용하며, 여기에는 두 가지 서로 다른 예외가 있다. 하나는 과학적 연구를 수행하는 연구 기관 및 문화유산 기관을 대상으로 하며 옵트아웃이 없다. 다른 하나는 상업적 마이닝을 포함한 그 외 모든 사람을 대상으로 하지만, 사용이 “온라인에 공개적으로 제공된 콘텐츠의 경우 기계가 읽을 수 있는 수단 등 적절한 방식으로 저작권자에 의해 명시적으로 유보되지 않은” 경우에만 적용된다.
AI Act는 이 규칙을 AI에 적용한다. 범용 AI 모델 제공자는 “저작권 및 관련 권리에 관한 연합법 준수를 위한 정책을 수립해야 하며, 특히 최신 기술을 통해서라도 저작권 규칙에 따라 이루어진 권리 유보를 식별하고 준수해야 한다.” 이 의무는 2025년 8월 2일부터 적용되고 있다. 범용 AI 제공자에 대한 집행위원회의 과징금 부과 권한(전 세계 매출의 최대 3%)은 2026년 8월 2일부터 적용되며, 2025년 8월 이전에 시장에 출시된 모델은 2027년 8월 2일까지 준수하면 된다.
2025년 7월에 발표된 자발적인 General-Purpose AI Code of Practice는 이를 구체화한다. 서명자들은 “RFC 9309에 명시된 대로 Robot Exclusion Protocol (robots.txt)에 따라 표현된 지침을 읽고 따르는 웹 크롤러를 사용”하고, 그 외 적절한 기계 판독 가능 프로토콜을 식별하고 준수하기로 약속한다. Code에 있는 두 가지 유의사항은 짚어볼 만하다. 준수가 “저작권 및 관련 권리에 관한 연합법 준수를 구성하지는 않는다”는 점이다. 그리고 이 약속은 “제3자가 인터넷에서 스크래핑하거나 크롤링한” 콘텐츠에 저작권이 어떻게 적용되는지, 그리고 서명자들이 이를 사용하는 방식에는 영향을 미치지 않는다. 데이터셋을 구매한다고 해서 그 출처에 적용되었던 유보 사항이 사라지지는 않는다.
법원의 판단
판례는 아직 형성 중이며, 두 판결이 그 방향을 보여준다.
독일에서는 한 사진작가가 자신의 이미지가 AI 훈련 데이터셋에 사용된 것과 관련해 비영리 단체 LAION을 상대로 소송을 제기했다. 함부르크 법원들은 이 청구를 기각했다. 항소심에서 고등법원은 연방대법원의 요약에 따르면, 온라인 저작물에 대한 유보는 “maschinenlesbarer Form”, 즉 기계가 읽을 수 있는 형태로만 효력을 가지며, 원고가 이용약관에 자연어로 작성한 유보가 관련 시점에 기계가 읽을 수 있는 형태였음을 입증하지 못했다고 판시했다. 연방대법원은 2026년 9월 3일에 추가 항소심을 심리했으며 2026년 12월 17일로 판결을 예정하고 있다.
네덜란드에서는 암스테르담 법원이 2024년 10월 30일 신문 발행사들과 뉴스 애그리게이터 간의 분쟁에서 판결을 내렸다. 애그리게이터는 발행사들의 robots.txt가 GPTBot, ChatGPT-User, CCBot 등 특정 AI 봇만 차단했다고 주장했고, 발행사들도 이를 부인하지 않았다. 이는 애그리게이터의 사용에 대해 권리가 적절한 기계 판독 가능 방식으로 유보되었음을 입증하기에는 충분하지 않았으며, 따라서 예외가 적용되었다.
두 판결 모두 같은 방향을 가리킨다. 중요한 것은 기계가 읽을 수 있는 신호이며, 특정 봇을 겨냥한 신호는 그 외 모든 사람에 대해 권리를 유보하지 못할 수 있다는 것이다. 어느 쪽도 최종적인 지침은 아니며, 둘 다 사실관계에 좌우된다. 구체적인 사안은 법률 자문에 맡겨야 한다.
마주치게 될 신호들
| 신호 | 위치 | 상태 | 표현하는 내용 |
|---|---|---|---|
| robots.txt Allow 및 Disallow | /robots.txt | IETF 표준, RFC 9309 | 특정 크롤러가 경로에 접근할 수 있는지 여부 |
| Content Signals | robots.txt의 줄, 예: Content-Signal: search=yes, ai-train=no | Cloudflare 정책, 2025년 9월 발표 | 검색, AI 입력, AI 훈련에 대한 선호도 |
| AI preferences (Content-Usage) | robots.txt 줄 또는 HTTP 헤더, 예: Content-Usage: train-ai=n | IETF 워킹그룹 초안, 아직 표준 아님 | AI 훈련, AI 사용, 검색에 대한 선호도 |
| TDMRep | /.well-known/tdmrep.json, tdm-reservation HTTP 헤더 또는 HTML 메타 태그 | W3C Community Group 보고서, W3C Standard 아님 | 텍스트 및 데이터 마이닝 권리 유보 여부 |
| 이용약관 | 사이트의 법적 페이지 | 계약이며, EU에서는 기계 판독 가능한 경우 유보로 간주될 수 있음 | 사이트 약관에 명시된 모든 내용 |
두 가지 세부사항이 중요하다. Cloudflare의 Content Signals는 search, ai-input(검색 증강, 근거 제시, 생성된 답변용), ai-train을 정의하며, 이 정책은 “content signals는 선호도를 표현하는 것이며, 스크래핑에 대한 기술적 대응 수단이 아니다”라고 명시한다. 또한 이 신호를 통해 표현된 제한이 EU 저작권 규칙에 따른 명시적 권리 유보임을 선언한다. 한편 IETF 초안은 아직 진정으로 미완성 상태다. 현재의 어휘 초안에는 그 내용이 “워킹그룹의 합의를 반영하지 않는다(DO NOT REFLECT CONSENSUS of the Working Group)“는 안내문이 있다. 명칭이 바뀔 것으로 예상해야 한다.
주요 AI 크롤러가 이를 다루는 방식
각 운영사는 자체 규칙을 공개하는데, 특히 사용자를 대신해 이루어지는 페치(fetch)의 경우 규칙이 서로 다르다.
| 운영사 | 에이전트 | 차단 시 발생하는 일 (운영사 기준) |
|---|---|---|
| OpenAI | GPTBot | 콘텐츠를 “생성형 AI 파운데이션 모델 훈련에 사용해서는 안 된다”는 것을 나타냄 |
| OpenAI | OAI-SearchBot | 사이트가 ChatGPT 검색 답변에는 표시되지 않지만, 내비게이션 링크로는 여전히 나타날 수 있음 |
| OpenAI | ChatGPT-User | 사용자가 직접 요청한 것; “robots.txt 규칙이 적용되지 않을 수 있음” |
| Google-Extended | 별도의 user agent가 없는 robots.txt 토큰; Gemini 모델의 훈련 및 grounding 용도 사용을 제어하며, “Google 검색에 사이트가 포함되는 데에는 영향을 미치지 않음” | |
| 사용자 트리거 페처 | ”일반적으로 robots.txt 규칙을 무시함” | |
| Anthropic | ClaudeBot, Claude-User, Claude-SearchBot | ClaudeBot을 차단하면 향후 콘텐츠가 훈련에서 제외됨; Claude-User를 차단하면 사용자 질의를 위한 검색이 차단됨; 이 봇들은 robots.txt와 crawl-delay를 준수함 |
데이터 팀에게 얻을 수 있는 교훈은, “AI 차단”이 단일한 스위치가 아니라는 것이다. 사이트는 검색 색인은 허용하면서 훈련은 거부할 수 있고, 훈련은 거부하면서도 사용자가 그 사이트에 대해 물어볼 때는 실시간으로 페치되도록 허용할 수 있다. 실제로 사용하려는 용도에 해당하는 신호를 읽어야 한다.
얼마나 많은 사이트가 옵트아웃하는가
옵트아웃은 빠르게 증가해왔다. Data Provenance Initiative의 “Consent in Crisis” 연구, 2024년 7월에 발표된 14,000개 웹 도메인에 대한 감사에서는, 단 1년 사이에 robots.txt 제한으로 인해 “C4 전체 토큰의 약 5% 이상, 또는 C4에서 가장 활발히 유지관리되는 핵심 출처의 28% 이상이 완전히 제한되었으며”, “이용약관에 의한 크롤링 제한의 경우 C4의 무려 45%가 현재 제한되어 있다”는 것을 발견했다. 다만 웹 상위권에서는 커버리지가 고르지 않다. Cloudflare는 2025년 7월 “상위 10,000개 도메인 중 약 37%만이 현재 robots.txt 파일을 보유하고 있으며”, 그 중 GPTBot이 차단된 경우는 7.8%였다고 보고했다.
책임 있는 수집자가 해야 할 일
모델을 훈련시키든 그렇지 않든, 명확한 정책은 여러분 자신과 여러분이 의존하는 사이트들을 보호한다.
- robots.txt를 올바르게 페치하고 준수하라. 24시간 이상 캐시하지 말고, 서버 오류는 “모두 차단”으로 처리하며, RFC 9309 방식으로 규칙을 매칭하라.
- 목적을 파악하라. 색인 생성, 실시간 답변을 위한 검색, 모델 훈련은 서로 다른 용도이며, 최신 신호들은 이를 다르게 취급한다. 자신의 수집이 어떤 용도로 쓰이는지 결정하고, 그 용도에 해당하는 신호를 읽어라.
- 신호를 데이터와 함께 기록하라. 수집 시점에 적용되었던 robots.txt 규칙, content signals, TDMRep 헤더를 각 레코드와 함께 저장하라. 데이터셋이 나중에 AI에 사용되는 경우, 이 기록이 유보 사항을 식별했음을 보여주는 근거가 된다. 이는 벤티지 포인트와 캡처 시각과 같은 출처 기록에 함께 포함되어야 한다.
- 법률 자문을 통해 이용약관을 평가하라. 이용약관은 어디서든 계약상 중요할 수 있으며, EU에서는 기계가 읽을 수 있는 방식으로 표현된 경우 유보로 간주될 수 있다.
- 수집 속도를 조절하라. 크롤링 제한을 준수하고 부하 상황에서 물러나는 것은 같은 선의의 일부이며, 이는 속도 제한과 요청 스로틀링에서 다룬다.
도구에 대한 경고 하나: Python의 내장 urllib.robotparser는 가장 구체적인 일치가 아니라 파일 순서대로 규칙을 적용한다. Disallow: /shop 다음에 Allow: /shop/public이 오는 경우, 이 도구는 /shop/public/item을 차단됨으로 보고한다. 두 줄의 순서를 바꾸면 허용됨으로 보고한다. RFC 9309에 따르면 어느 경우든 허용되어야 한다. RFC를 따르고 발견한 AI 선호도 줄을 기록하는 작은 검사기는 다음과 같은 모습이다.
import re
import urllib.error
import urllib.request
def _groups(text):
"""Parse robots.txt into (agents, rules, extras) groups, following RFC 9309 grouping."""
groups, agents, rules, extras, last = [], [], [], [], None
for raw in text.splitlines():
line = raw.split("#", 1)[0].strip()
if ":" not in line:
continue
key, value = (p.strip() for p in line.split(":", 1))
key = key.lower()
if key == "user-agent":
if last != "user-agent" and agents:
groups.append((agents, rules, extras))
agents, rules, extras = [], [], []
agents.append(value.lower())
elif key in ("allow", "disallow") and agents:
rules.append((key, value))
elif key in ("content-signal", "content-usage") and agents:
extras.append((key, value))
last = key
if agents:
groups.append((agents, rules, extras))
return groups
def _pattern(path):
regex = re.escape(path).replace(r"\*", ".*")
return re.compile(regex[:-2] + "$" if regex.endswith(r"\$") else regex)
def check(robots_txt, user_agent, path):
"""Allow/disallow per RFC 9309 (most specific match wins, allow on ties), plus AI signals."""
token = user_agent.lower()
groups = _groups(robots_txt)
matched = [g for g in groups if token in g[0]] or [g for g in groups if "*" in g[0]]
rules = [r for g in matched for r in g[1]]
extras = [e for g in matched for e in g[2]]
best = None
for kind, value in rules:
if value and _pattern(value).match(path):
length = len(value)
if best is None or length > best[1] or (length == best[1] and kind == "allow"):
best = (kind, length)
return {"allowed": best is None or best[0] == "allow", "signals": extras}
def fetch_robots(origin, opener=None):
"""Fetch robots.txt. Per RFC 9309: 4xx means no rules; 5xx or network failure means disallow all."""
opener = opener or urllib.request.build_opener()
try:
with opener.open(origin.rstrip("/") + "/robots.txt", timeout=30) as r:
return r.read(512 * 1024).decode("utf-8", "replace")
except urllib.error.HTTPError as e:
return "" if 400 <= e.code < 500 else "User-agent: *\nDisallow: /"
except OSError:
return "User-agent: *\nDisallow: /"
이는 의도적으로 작게 만들어졌다. 프로덕션 크롤러라면 훈련이 대상 범위에 있는 경우 TDMRep 헤더와 /.well-known/tdmrep.json 파일도 확인해야 하며, 의존했던 모든 robots.txt의 날짜가 찍힌 사본을 보관해야 한다.
프록시가 관련되는 지점
레지덴셜 프록시는 요청이 어디서 오는 것처럼 보이는지를 바꾼다. 이는 사이트가 요구한 내용을 바꾸지 않으며, 저작권법이나 사이트 약관에 따른 여러분의 의무를 바꾸지도 않는다. EU 규칙은 콘텐츠의 사용에 부착되며, Code of Practice는 제3자의 수집을 명시적으로 그 범위에 포함시킨다. 프록시 네트워크는 특정 시장의 실제 사용자가 웹을 보는 방식으로 보기 위해, 부하를 정중하게 분산시키기 위해, 그리고 정직하게 측정하기 위해 사용하고, 자신의 서버에서 적용할 것과 동일한 robots.txt 및 유보 사항 확인을 적용하라. 이에 대한 더 폭넓은 논의는 AI 데이터 수집을 위한 윤리적 레지덴셜 프록시에서 다룬다.
결론
robots.txt는 성숙해졌다. 이제는 정밀한 규칙을 갖춘 표준이며, EU에서는 이를 기반으로 하고 그 곁에서 구축된 기계 판독 가능한 유보 사항이 텍스트 및 데이터 마이닝의 허용 여부를 결정한다. AI 제공자는 이를 준수할 직접적인 법적 의무를 지며, 2026년 8월부터 과징금이 부과될 수 있다. 검색, AI 입력, 훈련을 위한 새로운 신호들은 그 배경이 되는 표준이 미완성임에도 불구하고 빠르게 확산되고 있다.
데이터 팀에게 실행 가능한 정책은 세부사항이 어떻게 정리되든 동일하다. robots.txt를 정확히 파싱하고, 자신의 수집이 어떤 용도로 쓰이는지 파악하고, 수집 시점에 적용되었던 모든 신호를 기록하며, 엄격히 구속되지는 않는 선호도라도 버릴 소음이 아니라 간직할 가치가 있는 정보로 취급하라. 지금 이렇게 해두는 팀은 나중에 이를 재구성할 필요가 없을 것이다.
출처 및 참고 자료
- IETF, RFC 9309: Robots Exclusion Protocol, 2022년 9월.
- 디지털 단일 시장의 저작권 및 관련 권리에 관한 지침 (EU) 2019/790. 텍스트 및 데이터 마이닝 예외.
- 규정 (EU) 2024/1689, AI Act. 범용 AI 모델 제공자에 대한 의무 및 적용 시점.
- European Commission, General-Purpose AI Code of Practice, 2025년 7월 10일 발표, 저작권 관련 장.
- Bundesgerichtshof, 보도자료 085/2026, I ZR 281/25 관련, 및 심리 및 판결 일정.
- Rechtbank Amsterdam, 2024년 10월 30일 판결, ECLI:NL:RBAMS:2024:6563.
- IETF AI Preferences working group, draft-ietf-aipref-vocab 및 draft-ietf-aipref-attach.
- W3C Community Group, TDM Reservation Protocol, 2024년 5월 10일.
- Cloudflare blog, Content Signals Policy, 2025년 9월 24일, 및 Reid Tatoris, AI 훈련을 위한 콘텐츠 사용 통제에 관하여, 2025년 7월 1일.
- OpenAI, OpenAI 크롤러 개요; Google, 일반 크롤러 및 사용자 트리거 페처; Anthropic, 크롤러 관련 도움말 문서.
- Longpre 외, Consent in Crisis: The Rapid Decline of the AI Data Commons, 2024년 7월.
이 글은 일반적인 정보 제공을 목적으로 하며 법률 자문이 아니다. 각 관할권에서의 의무에 관해서는 법률 자문을 구하기 바란다.