robots.txt 검사

URL 만 서버로 전송됩니다. 입력한 URL 은 진단을 위해 microlab scan-api 로 전송됩니다. 대상 페이지가 돌려준 내용의 분석은 브라우저 안에서 하며, URL 외에는 아무것도 서버로 가지 않습니다. 익명 방문 통계만 집계합니다.

사이트 주소(예: https://example.com)를 넣으면 그 사이트의 /robots.txt 를 검사합니다. 경로까지 넣으면 그 경로가 경로 테스트의 첫 값이 됩니다.

사용법

  1. 검사할 사이트 주소를 입력합니다. https://example.com 처럼 사이트 주소만 넣어도 되고, 특정 페이지 주소를 넣으면 그 경로가 경로 테스트의 첫 값으로 들어갑니다.
  2. "검사"를 누르면 microlab scan-api 가 그 사이트의 /robots.txt 를 한 번 받아 옵니다(리다이렉트는 5번까지 따라가고, 크기는 구글과 같은 500KiB 까지). 규칙 해석은 전부 이 브라우저 안에서 합니다.
  3. 맨 위 요약에서 HTTP 상태가 무엇을 뜻하는지(없음 = 전부 허용, 서버 오류 = 전부 차단으로 취급될 수 있음)와 그룹·규칙·Sitemap 개수를 확인하고, 주요 크롤러가 사이트 첫 화면(/)을 수집할 수 있는지 봅니다.
  4. 경로 테스트에서 크롤러(Googlebot·Bingbot·네이버 Yeti·다음 Daum 또는 직접 입력한 이름)와 경로를 고르면, 허용인지 차단인지와 그렇게 판정한 규칙이 몇 번째 줄인지 바로 나옵니다.
  5. "줄마다 확인할 것" 목록의 줄 번호를 누르면 원문의 그 줄로 이동합니다. 오타·콜론 빠짐·경로 형식 오류처럼 크롤러마다 다르게 읽힐 수 있는 줄을 고친 뒤 다시 검사합니다.

자주 묻는 질문

입력한 주소는 어디로 가나요?

사이트의 오리진(https://호스트)만 microlab scan-api 로 전송되고, scan-api 가 그 사이트의 /robots.txt 와 선언된 사이트맵 원본을 받아 그대로 돌려줍니다. 규칙 해석과 경로 판정은 이 브라우저 안에서 하며, 경로 테스트에 넣는 값은 어디로도 전송되지 않습니다.

Disallow 규칙이 있는데 왜 "허용"으로 나오나요?

RFC 9309 §2.2.2 는 경로와 일치하는 규칙 중 가장 구체적인(글자 수가 가장 많은) 규칙 하나만 쓰게 합니다. 예를 들어 Disallow: / 와 Allow: /$ 가 함께 있으면 첫 화면(/)은 더 긴 Allow: /$ 가 이겨 허용이고, 길이가 같으면 Allow 가 이깁니다. 또 크롤러 이름으로 지정된 그룹이 하나라도 있으면 그 크롤러는 User-agent: * 그룹의 규칙을 물려받지 않습니다(§2.2.1) — * 그룹의 Disallow 가 Googlebot 그룹에는 적용되지 않는 이유입니다. 결과 아래의 "적용 그룹"과 "일치한 규칙 전부 보기"에서 근거를 확인할 수 있습니다.

robots.txt 로 막으면 검색 결과에서 사라지나요?

흔한 오해입니다. robots.txt 는 수집(크롤링)을 막는 것이지 색인을 막는 것이 아닙니다. 구글은 다른 사이트의 링크로 알게 된 주소를 내용 없이 검색 결과에 보여 줄 수 있습니다. 검색 결과에서 빼려면 페이지를 수집할 수 있게 둔 채 robots 메타 태그나 X-Robots-Tag 헤더의 noindex 를 써야 합니다. robots.txt 안의 Noindex: 줄은 표준이 아니고 구글은 2019년 9월부터 지원하지 않습니다.

robots.txt 가 없거나 서버 오류가 나면 어떻게 되나요?

404 같은 4xx 는 "없음"이라 크롤러는 모든 주소를 수집해도 됩니다(RFC 9309 §2.3.1.3). 반대로 5xx 나 연결 실패는 "도달 불가"라 RFC 는 전부 차단으로 가정하라고 합니다(§2.3.1.4). 구글은 처음 12시간 동안 사이트 크롤링을 멈추고, 이후 30일은 마지막으로 받은 정상 사본을 쓰며, 사본이 없으면 제한이 없다고 봅니다. 429 는 4xx 지만 구글은 서버 오류로 취급합니다. 이 도구는 상태 코드에 따라 이 해석을 먼저 보여 주고, 그 경우 경로 테스트도 규칙 대신 상태로 판정합니다. 검사 서버가 바빠서 robots.txt 를 받지 못했거나, 응답이 /robots.txt 가 아닌 곳으로 리다이렉트돼 본문을 넘기지 않은 경우에는 사이트에 대한 사실이 아니므로 허용·차단을 판정하지 않습니다.

User-agent 이름은 어떻게 비교하나요? 다음(Daum)은 왜 둘인가요?

크롤러는 자기 제품 토큰(영문·밑줄·하이픈으로 된 이름)과 대소문자를 무시하고 정확히 같은 User-agent 줄을 찾습니다(RFC 9309 §2.2.1). 구글처럼 값의 앞부분 토큰만 비교하므로 googlebot/2.1 이나 googlebot* 는 googlebot 과 같습니다. RFC 의 비교는 앞부분이 같다고 일치로 치지 않지만, 구글의 뉴스·이미지·동영상 크롤러(Googlebot-News·Googlebot-Image·Googlebot-Video)는 자기 이름의 그룹이 없으면 Googlebot 그룹을 따릅니다 — 이 도구의 테스트기는 입력한 이름 하나만 RFC 대로 비교합니다. 다음 검색 로봇의 현재 이름은 Daum 이고 예전 이름은 Daumoa 라서, User-agent: Daumoa 로 적은 규칙은 Daum 에게 적용되지 않습니다 — 두 이름을 모두 확인해 보세요.

한글 경로나 %가 들어간 규칙은 어떻게 판정하나요?

RFC 9309 §2.2.2 대로 규칙과 주소를 같은 모양으로 바꾼 뒤 비교합니다. 한글 같은 비ASCII 글자는 UTF-8 퍼센트 인코딩(%EA%B2%80 …)으로, 영문·숫자처럼 인코딩할 필요가 없는 글자의 %XX 는 원래 글자로 바꿉니다. 그래서 Disallow: /검색 과 /%EA%B2%80%EC%83%89 는 같은 규칙입니다. 글자 그대로의 * 나 $ 를 막으려면 규칙에 %2A·%24 로 적습니다. 구글의 공개 파서는 %62 같은 인코딩을 풀지 않는 등 몇 군데가 RFC 와 다르며, 이 도구는 RFC 를 따릅니다.

이 도구의 한계는 무엇인가요?

robots.txt 는 500KiB 까지만 받습니다(구글도 그 뒤는 무시합니다). Crawl-delay·Host 같은 비표준 지시어는 경고로만 알리고 판정에 쓰지 않습니다. 구글이 받아 주는 오타(dissallow 등)와 콜론 빠진 줄은 구글처럼 해석하되 다른 크롤러는 무시할 수 있다고 표시합니다. 실제 크롤러는 robots.txt 를 캐시하므로(구글은 보통 최대 24시간, 새로 받지 못하는 오류 상황에서는 더 길게) 방금 고친 내용이 바로 반영되지 않을 수 있고, 크롤러마다 규칙을 따르는 정도가 다르므로 결과는 규격에 따른 판정이지 모든 크롤러의 실제 동작을 보장하지 않습니다.