웹 크롤링을 할 때 반드시 고려해야 할 요소 중 하나가 바로 robots.txt입니다. 이 파일은 사이트 소유자가 검색 엔진 크롤러나 자동화 프로그램에게 어떤 페이지는 접근해도 되고, 어떤 페이지는 접근하면 안 되는지를 알려주는 표준 규칙입니다. 이번 글에서는 robots.txt의 기본 개념, 정책의 구성 방식, 그리고 실제 확인 방법에 대해 차근차근 알아보겠습니다.
1. robots.txt의 개념이란?
robots.txt는 웹사이트의 루트 디렉토리에 위치한 텍스트 파일로, 웹 크롤러에게 접근 권한을 안내하는 역할을 합니다. 예를 들어, 검색 엔진이 사이트를 수집할 때 특정 폴더나 URL을 수집하지 않도록 사전에 설정해 놓은 것이라고 생각하면 되겠습니다. robots.txt라는 이 파일은 'Robots Exclusion Protocol(로봇 배제 표준)'이라는 규칙을 따르고 있으며, 1990년대 초반부터 지금까지도 광범위하게 사용되고 있습니다. 예를 들어, 어떤 사이트가 `/private/` 경로 아래의 페이지들을 검색엔진에 노출시키고 싶지 않다면 robots.txt에 `Disallow: /private/`이라고 작성하면 됩니다. 만약 해당 부분을 확인하였다면, 크롤링에 주의하거나 하지 않는 것이 좋겠습니다. 대부분의 검색엔진 크롤러(Googlebot, Bingbot 등)는 이를 준수하지만, 악성 봇은 무시할 수도 있다는 단점도 가지고 있습니다. 하지만 웹사이트를 크롤링하는 입장에서는 기본적으로는 윤리 및 기술적인 측면을 빼놓고 생각할 수가 없기에 반드시 이 규칙을 먼저 확인하고 준수하는 것이 서로에게 안전한 접근 방법이라고 생각합니다..
2. robots.txt의 정책 구성 방식
robots.txt 파일은 매우 간단한 텍스트 형식으로 되어 있으며, 주로 User-agent
와 Disallow
, Allow
같은 지시어로 구성됩니다. 예를 들어, 모든 크롤러에게 특정 디렉토리를 차단하려면 아래와 같은 형식으로 작성할 수 있습니다:
User-agent: *
Disallow: /admin/
Allow: /public/
위 예제는 모든 크롤러(User-agent: *)에게 `/admin/` 경로는 접근하지 못하게 하고, `/public/` 경로는 접근을 허용하는 설정입니다. 구글봇이나 네이버봇 등 특정 봇에게만 규칙을 적용하고 싶다면 User-agent에 해당 이름을 지정할 수도 있습니다. 또한 Sitemap URL도 robots.txt에 포함시켜 검색엔진이 사이트맵을 빠르게 인식하도록 유도할 수 있습니다. 예를 들면 `Sitemap: https://example.com/sitemap.xml`과 같이 작성합니다. robots.txt는 설정이 간단하지만, 오작동하면 전체 사이트가 검색에서 제외될 수 있으므로 작성할 때 반드시 주의해야 합니다. 설정 후에는 꼭 테스트 도구를 활용하여 정상적으로 동작하는지 확인하는 것이 좋습니다.
3. robots.txt 확인 및 테스트 방법
robots.txt 파일을 확인하는 방법은 매우 간단합니다. 대부분의 웹사이트는 해당 주소의 루트 도메인 뒤에 `/robots.txt`를 붙이면 직접 확인할 수 있습니다. 예를 들어, 네이버의 경우 https://www.naver.com/robots.txt 주소로 접속하면 실제 내용을 볼 수 있습니다. 사이트마다 크롤링 허용 정책이 다르므로, 크롤러를 실행하기 전에 꼭 이 주소를 확인해야 합니다. 또한 Google에서는 robots.txt 테스트 도구를 제공하여 실제로 어떤 URL이 차단되는지 시뮬레이션할 수 있습니다. 구글 서치 콘솔(Google Search Console)에 사이트를 등록하면 'robots.txt 테스트' 기능을 이용할 수 있습니다. Python이나 Playwright, Selenium 등을 활용한 크롤링 코드에서도 크롤링 전에 해당 robots.txt 파일을 먼저 불러와 접근 가능한지 여부를 분석하는 로직을 추가하는 것이 좋습니다. 예를 들어, Python의 `urllib.robotparser` 모듈을 사용하면 간단하게 허용 여부를 판단할 수 있습니다. 한번 코드를 살펴보겠습니다.
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
url = "https://example.com/some-page"
user_agent = "MyCrawler"
if rp.can_fetch(user_agent, url):
print("크롤링 가능합니다.")
else:
print("크롤링이 차단된 페이지라, API를 활용하거나 크롤링 접근을 제한하는 것이 좋겠습니다.")
위 코드는 간단한 방식으로 robots.txt 정책을 읽고, 특정 URL이 주어진 사용자 에이전트에 대해 접근 가능한지를 판단합니다. 실제 크롤링 전에 이런 코드를 활용하여 확인해보거나, 홈페이지 끝에 직접 robots.txt 를 검색하여 들어가 보아 정책을 확인하면, 윤리와 권리적인 부분에 문제 없는 크롤링을 안정성 있게 할 수 있다는 장점이 있겠습니다.