용어집

robots.txt란 무엇인가요?

robots.txt는 웹사이트 루트에 위치한 일반 텍스트 파일(예: example.com/robots.txt)로, Robots Exclusion Protocol을 따라 사이트 소유자가 크롤러의 접근을 허용하거나 원하지 않는 URL을 알려줍니다.

로봇 배제 프로토콜(Robots Exclusion Protocol)이 무엇인지, robots.txt가 실제로 강제하는 것(그리고 강제하지 않는 것)은 무엇인지, 그리고 법적, 운영적 이유로 스크래퍼가 이를 어떻게 다루어야 하는지 이해합니다.

설명

robots.txt는 1994년부터 이어진 관습으로, 도메인 루트에 위치한 일반 텍스트 파일이며 어떤 사용자 에이전트(크롤러)가 어떤 URL 경로에 접근하도록 허용되거나 금지되는지를 나열합니다. 검색 엔진(Google, Bing)과 정상적으로 동작하는 크롤러는 이를 준수합니다. 이 파일은 공개적으로 읽을 수 있습니다. 어떤 사이트든 robots.txt를 직접 가져와서(`curl https://example.com/robots.txt`) 사이트 소유자가 크롤러에게 원하는 동작을 확인할 수 있습니다.

Robots Exclusion Protocol은 순전히 권고 사항입니다. 웹 서버는 robots.txt 지침을 강제하지 않으며, 단지 게시할 뿐입니다. 제대로 동작하지 않는 크롤러는 robots.txt를 무시할 수 있으며, 그래도 사이트는 요청된 URL을 그대로 제공합니다. 실질적인 강제력은 검색 엔진 정책(Googlebot은 robots.txt에서 금지된 페이지를 색인하지 않음)과, 상업적 스크레이퍼가 소유자의 명시적 의도를 무시할 때 발생하는 법적/평판상의 결과에서 나옵니다.

상업적 스크레이핑의 경우 robots.txt는 두 가지 측면에서 중요합니다. 법적으로, 명시적인 `Disallow` 지침을 무시하는 것은 CFAA(컴퓨터 오용 관련법) 사건에서 악의적 접근의 증거로 인용될 수 있습니다(특히 미국에서는 hiQ v LinkedIn 판결 이후). 운영 측면에서, 특정 경로를 금지하는 사이트는 해당 경로에 더 강력한 안티봇 보호를 두는 경우가 많습니다. `Disallow: /search`는 보통 `/search`를 스크레이핑할 경우 사이트의 나머지 부분보다 더 강한 방어 체계가 작동한다는 의미입니다.

작동 방식

크롤러가 도메인에서 작업을 시작하면 먼저 `/robots.txt`를 가져와서 지시문을 파싱합니다. 이 파일은 간단한 문법을 사용합니다: `User-agent: ` 블록은 다음 규칙이 어떤 크롤러에 적용되는지를 지정하고(`*`는 전체를 의미), `Disallow: `는 특정 URL 접두사를 차단하며, `Allow: `는 차단된 접두사 내에서 경로를 다시 허용하고, 선택적인 `Crawl-delay: ` 및 `Sitemap: ` 지시문은 메타데이터를 제공합니다.

그런 다음 크롤러는 가져오려는 각 URL을 규칙에 대조하여 확인하고 차단된 경로는 건너뜁니다. 일부 크롤러는 robots.txt를 24시간 동안 캐시하며, 성숙한 프로덕션 크롤러는 변경 사항을 반영하기 위해 더 자주 새로고침합니다.

타입

허용 안 함

크롤러에게 해당 접두사와 일치하는 URL에 접근하지 말라고 지시합니다. `Disallow: /admin/`은 /admin/ 하위의 모든 것을 제외합니다. 가장 일반적인 지시어입니다.

허용

금지된 접두사 내 특정 경로를 다시 허용합니다. `Disallow: /private/` + `Allow: /private/public-data/`는 /private/를 제외하지만 /private/public-data/는 허용합니다.

User-agent

특정 크롤러를 대상으로 합니다. `User-agent: Googlebot`은 다음 규칙을 Google의 크롤러에만 적용합니다. `User-agent: *`는 대체(fallback)로 모든 크롤러에 적용됩니다.

Crawl-delay

요청 간 최소 지연 시간(초 단위)을 제안합니다. Bing과 Yandex는 이를 준수하지만, Google은 무시합니다(대신 Search Console의 크롤링 속도 설정을 사용하세요).

사이트맵

사이트의 XML 사이트맵을 가리킵니다. `Sitemap: https://example.com/sitemap.xml`. 사이트가 색인되기를 원하는 모든 URL을 크롤러가 발견하도록 돕습니다.

일반적인 사용 사례

검색엔진에게 색인하지 않아야 할 페이지를 알려주는 것
크롤러가 비용이 많이 드는 엔드포인트를 과도하게 호출하는 것을 방지
크롤러를 정식 사이트맵으로 안내
공개 색인에서 관리자/비공개 경로 제외
협조적인 크롤러를 위한 크롤 지연 지정
사이트 전체 크롤러 정책 문서화
자주 묻는 질문

자주 묻는 질문

다음에 대한 일반적인 질문 robots.txt.

그 자체만으로는 아닙니다. robots.txt는 권고적인 것이며, 서버가 이를 강제하지 않아 협조하지 않는 크롤러는 이를 무시할 수 있습니다. 그러나 법원(특히 CFAA 하의 미국)은 명시적인 Disallow 지시문을 사이트 소유자 의도의 증거로 인용해왔으며, 이는 컴퓨터 오용 사건에서 스크래퍼 측 주장을 약화시킵니다. 이를 준수 스크래핑의 법적 최저선으로 취급하십시오.

예, 대부분의 경우 그렇습니다. robots.txt를 준수하는 것은 분쟁이 발생할 경우 선의의 접근을 입증하는 가장 저렴한 방법이며, 금지된 경로는 대개 더 강력한 안티봇 보호를 갖추고 있기도 합니다. 일부 상업용 스크래핑은 검색 엔진 순위 분석, 경쟁사 정보 등 정당한 공개 데이터 용도로 robots.txt를 무시하기도 합니다. 이는 법률 자문을 받아 판단해야 할 법적 문제입니다.

항상 루트에 위치합니다: `https://example.com/robots.txt`. 호스트당 정확히 하나의 robots.txt가 존재합니다. 유효하려면 200 OK 응답과 `Content-Type: text/plain`으로 제공되어야 합니다.

모든 협력 크롤러가 중지하도록 `User-agent: *` + `Disallow: /`를 요청할 수 있습니다. 규칙을 지키지 않는 크롤러는 이를 무시합니다. 실제로 크롤러를 차단하려면 서버 측 강제 조치(속도 제한, Cloudflare 같은 안티봇 도구, IP 허용 목록)가 필요합니다. robots.txt는 정중한 요청일 뿐 보안 메커니즘이 아닙니다.

크롤링의 경우, 그렇습니다. Googlebot은 허용되지 않은 페이지를 가져오지 않습니다. 색인의 경우, 대체로 그렇지만 항상 그런 것은 아닙니다. 허용되지 않은 페이지가 다른 곳에서 많이 링크되어 있다면, Google은 링크 신호만으로 해당 페이지를 검색 결과에 포함시킬 수 있으며, 페이지를 크롤링할 수 없다는 안내와 함께 표시됩니다. 색인을 완전히 방지하려면 robots.txt가 아닌 `noindex` 메타 태그를 사용하세요.

robots.txt는 URL 패턴 수준에서 동작하며 크롤링 세션마다 한 번 가져옵니다. 메타 robots 태그(`<meta name='robots' content='noindex'>`)는 페이지별로 HTML head에 삽입됩니다. robots.txt는 크롤링을 방지하고, 메타 robots는 크롤링된 페이지의 색인을 방지합니다. 두 가지는 서로 다른 목적을 가지며 함께 사용되는 경우가 많습니다.