웹 스크래핑을 위한 robots.txt: 그것이 구속하는 것과 구속하지 않는 것

robots.txt는 계약이 아닌 관례이며, 잠금 장치가 아닙니다. 스크래퍼에게 실제로 요구하는 것, 강제할 수 없는 것, 데이터를 얻으면서도 이를 존중하는 방법을 소개합니다.

스크래핑 윤리에 대한 모든 대화는 robots.txt로 시작되며, 대부분의 경우 두 가지 방향 중 하나로 잘못 이해됩니다 - 이를 어기면 체포될 법으로 취급하거나, 완전히 무시할 수 있는 소음으로 취급합니다. 둘 다 아닙니다. robots.txt는 사이트가 피하고 싶은 경로를 잘 행동하는 봇에게 알려주는 자발적인 관례입니다. 무엇이 구속되고 구속되지 않는지를 정확히 아는 것이 전문적인 데이터 운영과 무모한 운영을 구분합니다. 이것은 실무자의 가이드이며, 사전 주의사항: 이것은 정보 제공용이지 법률 자문이 아닙니다.

robots.txt의 실제 의미

robots.txt는 2022년에 RFC 9309로 표준화된 Robots Exclusion Protocol을 구현합니다. 이는 도메인의 루트에 위치한 일반 텍스트 파일입니다 - https://example.com/robots.txt - 도메인 또는 서브도메인당 하나의 파일이 있습니다. 선택 사항이며: 404는 사이트에 파일이 없고 선호도를 표현하지 않았음을 의미합니다. 중요한 것은, 이것은 요청이지 장벽이 아닙니다. robots.txt를 제공한다고 해서 기술적으로 접근을 막는 것은 아니며, 이를 읽는 봇의 선의에 의존합니다.

이를 읽는 것은 단일 요청입니다 - 크롤링하기 전에, 매번 이렇게 하세요:

# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@gate.quantumproxies.io:8000 https://example.com/robots.txt

중요한 지침

어휘는 작습니다. 이것들을 배우면 어떤 robots.txt도 한눈에 읽을 수 있습니다:

구문에 대한 한 가지 주의점: 경로 패턴의 와일드카드 *$는 원래 표준에 포함되어 있지 않지만, 모든 주요 엔진이 이를 인정하므로 Disallow: /*.pdf$는 일반적이고 실질적으로 효과적입니다.

import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
robots.txt가 무엇인지(관례, 속도 신호)와 무엇이 아닌지(계약, 접근 제어)를 대조하는 이열 도표
robots.txt는 존중할 신호이지, 당신을 멈추게 하거나 스스로 구속하는 계약이 아닙니다.

구속하는 것과 구속하지 않는 것

이 부분은 사람들이 가장 명확히 해야 하는 부분입니다. robots.txt는 자체적으로 법적 구속력이 없으며, 기술적인 접근 제어 메커니즘이 아닙니다 - 아무것도 잠그지 않습니다. 법원은 일반적으로 잘 알려진 공공 데이터를 공공으로 취급했습니다. 그러나 '자체적으로 법이 아님'이 '결과가 없음'과 동일하지는 않습니다. 사이트의 명시된 바람을 무시하는 것은 서비스 약관, 무단 침입 또는 컴퓨터 남용 논쟁의 요소가 될 수 있으며, 차단과 추가 검토를 초대하며, 단순히 나쁜 시민 정신입니다. 실용적인 입장: robots.txt를 당신이 존중해야 할 윤리적 기준으로 취급하고, 실제 법적 질문 - 개인 데이터, 계약, 관할권 - 을 별도로 올바르게 처리하세요. 2026년 웹 스크래핑 합법성에 대한 개요는 이를 별도로 다룹니다.

AI 크롤러의 변화

robots.txt는 AI 학습을 위한 옵트아웃 채널로서 두 번째 생명을 얻었습니다. 사이트는 이제 AI 사용자 에이전트 - GPTBot, Google-Extended, CCBot, ClaudeBot, PerplexityBot 및 기타 - 에 대한 명시적인 규칙을 추가하여 '나를 색인화하되, 나를 학습하지 마십시오'라고 말합니다. 이것이 연구자들이 이제 robots.txt가 공공 데이터를 모델에서 제외하기에 충분하지 않다고 주장하는 이유입니다: 이는 전적으로 각 크롤러가 이를 준수하기로 선택하는지에 달려 있으며, 선언된 잘 행동하는 에이전트에게만 말합니다. 크롤러를 운영하는 경우, 정직한 User-Agent를 선언하고 이러한 옵트아웃을 존중하는 것이 기본입니다. 반대 의도를 가진 AI 도구를 초대하는 동반 파일은 llms.txt이며, 이는 llms.txt 가이드에서 다룹니다.

# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
준수하는 크롤링의 흐름도: robots.txt를 가져오고, 사용자 에이전트를 일치시키고, crawl-delay를 존중하고, 허용된 공공 경로를 스크래핑합니다.
준수하는 크롤링은 먼저 파일을 읽고, 속도 지침을 존중하며, 허용된 공공 경로만을 다룹니다.

데이터를 얻으면서도 좋은 시민이 되는 방법

robots.txt를 존중하고 필요한 공공 데이터를 수집하는 것은 상충되지 않습니다. 당신을 환영받게 하는 규율은 차단되지 않게 하는 규율과 동일합니다: Crawl-delay를 존중하고 요청의 속도를 조절하며, 봇을 정직하게 식별하고, 동일한 페이지를 다시 가져오지 않도록 적극적으로 캐시하며, 사이트가 보호하려는 비싼 엔드포인트를 피하세요. 포럼에서 잘 표현된 커뮤니티 규범은 robots.txt가 주로 엄청난 트래픽을 생성하는 봇을 억제하기 위해 존재한다는 것입니다 - 그러니 그런 봇이 되지 마세요. 우리의 정중한 스크래핑 가이드는 이를 구체적인 속도 규칙으로 전환합니다.

기본적으로 준수를 처리하고자 하는 팀을 위해, Scraper API는 요청의 일부로 robots.txt를 읽고 존중할 수 있으며, 합리적인 속도 제한과 함께 - 그래서 좋은 시민 정신이 도구의 기본 행동이 되며, 잊어버릴 수 있는 체크박스가 아닙니다. 또한 하나의 IP에서 원시 스크립트가 때리는 것이 아닌 깨끗하고 선언된 발자국을 유지합니다.

준수하는 방식으로 공공 데이터를 수집하세요

자주 묻는 질문

robots.txt가 웹 스크래핑에 법적으로 적용되나요?

자체적으로는 아닙니다. robots.txt는 자발적인 관례(RFC 9309)이지 법이나 계약이 아니며, 기술적으로 접근을 차단하지 않습니다. 그러나 이를 무시하는 것은 서비스 약관, 무단 침입 또는 컴퓨터 남용 주장에 기여할 수 있으며, 차단과 검토를 초대합니다. 이를 존중해야 할 윤리적 기준으로 취급하고, 실제 법적 질문 - 개인 데이터, 계약 - 을 별도로 처리하세요. 이것은 법률 자문이 아닙니다.

웹사이트의 robots.txt를 어떻게 읽나요?

/robots.txt를 추가하여 도메인 루트에 HTTP GET을 보내세요, 예: https://example.com/robots.txt. curl 또는 모든 HTTP 클라이언트가 작동합니다; Python에서는 urllib.robotparser가 이를 구문 분석하고 주어진 사용자 에이전트 및 URL에 대해 can_fetch()를 답합니다. 404는 사이트에 robots.txt가 없으며 크롤링 선호도를 명시하지 않았음을 의미합니다.

Disallow: /의 의미는 무엇인가요?

이는 모든 일치하는 봇에게 사이트의 모든 경로를 크롤링하지 말라고 요청합니다 - 전체 도메인이 요청에 의해 금지됩니다. 빈 Disallow:는 반대 의미입니다: 모든 것이 허용됩니다. 이것들이 잘 행동하는 크롤러에 대한 요청이지, 강제된 장벽이 아님을 기억하세요. 경로 값은 대소문자를 구분하지만, 지침 이름은 그렇지 않습니다.

데이터가 공공이라면 robots.txt를 무시할 수 있나요?

기술적으로는 가능합니다, 왜냐하면 강제되지 않기 때문입니다, 그러나 일반적으로는 그러지 말아야 합니다. 이를 무시하는 것은 나쁜 시민 정신이며, 더 빨리 차단되며, 분쟁에서 사이트의 주장을 강화할 수 있습니다. 전문적인 접근 방식은 이를 존중하고, 허용된 공공 경로만 스크래핑하며, 요청의 속도를 조절하고, 개인 데이터를 완전히 범위 밖으로 유지하는 것입니다.

robots.txt는 작은 파일이지만 큰 신호를 전달합니다: 이 사이트가 어떻게 크롤링되기를 원하는지. 먼저 읽고, 경로와 속도를 존중하며, 당신이 누구인지 선언하면, 에티켓과 위험의 올바른 측면에 확고히 머물면서 필요한 공공 데이터를 수집할 수 있습니다.

robots-aware 크롤링으로 Scraper API를 시도해보세요