웹 스크래핑 가이드용 robots.txt

이 가이드에서는 robots.txt에 대해 배우고, 웹 스크래핑에 중요한 이유와 스크래핑 과정에서 이를 활용하는 방법을 알아보게 됩니다.
2 분 읽기
Robots.txt for web scraping

이 robots.txt 웹 스크래핑 가이드는 다음을 다룹니다:

  • robots.txt란 무엇인가요?
  • 웹 스크래핑에 중요한 이유는?
  • 사이트 스크래핑 시 이를 무시할 경우의 결과
  • 웹 스크래핑에 필요한 일반적인 지시어
  • 웹 스크래핑 과정에서 사용 방법

robots.txt란 무엇인가요?

robots.txt는 웹 로봇이 사이트와 상호작용하는 방식을 지시하는 표준인 로봇 배제 프로토콜 (REP)을 구현하는 데 사용되는 텍스트 파일입니다. 구체적으로, robots.txt는 어떤 봇이 사이트를 방문할 수 있는지, 어떤 페이지와 리소스에 접근할 수 있는지, 어떤 속도로 접근할 수 있는지 등을 지정합니다. 이러한 봇은 일반적으로 Google, Bing, DuckDuckGo와 같은 검색 엔진이 웹을 색인화하기 위해 사용하는 웹 크롤러입니다.

Google 사양에 따르면, 각 도메인(또는 하위 도메인)은 robots.txt 파일을 가질 수 있습니다. 이는 선택 사항이며 반드시 도메인의 루트 디렉터리에 배치되어야 합니다. 즉, 사이트의 기본 URL이 https://example.com인 경우, robots.txt 파일은 https://example.com/robots.txt에서 접근 가능합니다.

예를 들어, Bright Data의 robots.txt는 다음과 같습니다:

User-agent: *

Disallow: /lum/

Disallow: /www/*.html

Disallow: /use-cases/fintech

Disallow: /products/datasets2/

Disallow: /events/*

Disallow: /wp-stage/*

Disallow: /www/*

Disallow: /svc/*

Host: brightdata.com

사이트맵: https://brightdata.com/sitemap_index.xml

보시다시피, 이 파일은 웹봇을 위한 일련의 규칙과 지시사항을 포함하는 단순한 텍스트 파일입니다.

User-agent 및 Disallow와 같은 지시어는 대소문자를 구분하지 않는다는 점을 유의하십시오. 반면 값은 대소문자를 구분합니다. 따라서 /lum/은 /Lum/과 동일하지 않습니다.

웹 스크래핑에 중요한 이유는 무엇인가요?

robots.txt 파일이 지시하는 대상은 검색 엔진 크롤링 로봇뿐만이 아닙니다. 웹 스크레이퍼를 포함한 사이트와 상호작용하는 모든 자동화 소프트웨어도 포함됩니다. 결국 스크레이핑 프로그램은 자동화된 봇에 불과합니다. 게다가 이들은 일반적으로 검색 엔진 봇처럼 웹 크롤링을 수행합니다. 웹 크롤링과 웹 스크레이핑 비교 가이드에서 자세히 알아보세요.

사이트를 스크래핑할 때는 대상 사이트의 robots.txt 파일을 존중하는 것이 매우 중요합니다. 이를 준수한다는 것은 다음을 의미합니다:

  • 법적 준수: 웹 스크레이퍼는 윤리적인 접근을 위해 사이트 소유자가 정한 규칙을 따라야 합니다.
  • 서버 부하 감소: 크롤러와 스크레이퍼는 자원을 많이 소모하므로 지침을 준수하면 사이트 과부하를 방지할 수 있습니다.
  • 봇 방지 조치 발동 방지: 많은 사이트는 유입되는 웹 트래픽을 모니터링하여 선언된 규칙을 준수하지 않는 무단 봇을 차단합니다.

그렇다면 스크래핑 스크립트가 robots.txt를 준수하지 않을 경우 어떤 일이 발생할까요? 아래 섹션에서 알아봅시다!

사이트 스크래핑 시 robots.txt 무시 시 발생 가능한 결과

사이트마다 robots.txt 파일 위반에 대한 대응 방식이 매우 다릅니다. 때로는 아무 일도 일어나지 않지만, 다른 경우에는 심각한 결과를 초래할 수 있습니다. 일반적으로 웹 스크래핑 시 robots.txt를 무시할 경우 고려해야 할 시나리오는 다음과 같습니다:

  • 차단 및 운영 중단: 스크래핑 방지 및 봇 차단 기술로 인해 IP가 일시적 또는 영구적으로 차단될 수 있습니다. 이는 스크래핑 프로세스의 효율성을 저해합니다.
  • 법적 조치: 규정을 준수하지 않을 경우 법적 조치가 뒤따를 수 있습니다. 스크래핑 스크립트가 남긴 지문으로 신원이 노출될 가능성이 있는 경우 발생합니다. 웹 스크래핑 프록시로 개인정보를 보호하세요! 
  • 감시 강화: 웹 보안 전문가, ISP, 사이버 보안 기관이 귀하의 스크래핑 활동을 조사하기 시작할 수 있습니다.

이는 일부 사례에 불과하지만, 문제의 중요성을 이해하기에 충분합니다. robots.txt를 준수하려면 먼저 그 지시사항의 의미를 이해해야 합니다. 이제 자세히 알아볼 시간입니다!

웹 스크래핑 시 알아야 할 일반적인 robots.txt 지시문

REP 사양은 robots.txt 파일이 지정할 수 있는 지시어를 몇 가지만 포함합니다. 시간이 지남에 따라 검색 엔진 사양은 다른 가능한 규칙들을 도입했습니다. 이들은 사실상 표준을 대표하며 반드시 고려해야 합니다.

이제 웹 스크래핑에 가장 관련성이 높은 robots.txt 지시어를 살펴보겠습니다.

User-agent

User-Agent는 사이트 크롤링이 허용되는 사용자 에이전트를 지정합니다. 사용자 에이전트는 웹 크롤러, 스파이더, 스크레이퍼 또는 모든 종류의 봇일 수 있습니다. 일반적으로 웹사이트 관리자는 이 지시어를 사용하여 특정 검색 엔진의 크롤러를 제한하거나 지시합니다.

지시어의 구문은 다음과 같습니다:

User-agent: <사용자 에이전트 이름>

Disallow: [값]

<user_agent_name>이 *인 경우, 모든 봇이 사이트와 상호작용할 수 있음을 의미합니다. Disallow 지시문은 상대 경로를 포함해야 하며 사이트의 특정 부분에 대한 접근을 제한해야 합니다.

일반적인 사용자 에이전트 문자열은 다음과 같습니다:

검색 엔진 사용자 에이전트 이름
Baidu baiduspider
Bing bingbot
Google Googlebot
Yahoo! 슬러프
Yandex yandex

아래의 예를 고려하십시오:

User-agent: *

Disallow: /private/

위의 robots.txt 파일은 모든 사용자 에이전트가 /private/ 경로 아래의 페이지를 방문하는 것을 금지합니다. 따라서 /private/admin-login.php는 물론 /private/platform/dashboard.php도 접근이 금지됩니다. 이는 하위 폴더 내의 파일들도 Disallow 규칙의 영향을 받는다는 것을 의미합니다.

동일한 User-agent에 여러 Disallow 규칙이 적용될 수 있음을 유의하십시오:

User-agent: *

Disallow: /private/

Disallow: /admin/

이번에는 /private/ 경로와 /admin/ 경로 모두 접근이 허용되지 않습니다.

Disallow에 값이 지정되지 않으면 모든 페이지에 대한 접근이 허용됩니다:

User-agent: *

Disallow:

반대로 / 값이 포함된 경우 모든 페이지가 접근 금지됨을 의미합니다:

User-agent: *

Disallow: /

robots.txt 표준의 공식 규격에는 Disallow에 대한 정규 표현식이나 와일드카드 사용이 명시되어 있지 않지만, 주요 검색엔진들은 이를 지원합니다. 따라서 다음과 같은 구문을 흔히 볼 수 있습니다:

Disallow: /*.php

Disallow: /resources/*.pdf

이는 /resources/ 하위의 PDF 파일과 PHP 파일에 대한 봇 접근을 차단합니다.

Disallow의 반대 개념으로 비표준 지시어인 Allow는 허용되는 경로만을 명시합니다. 다음 예시를 살펴보세요:

User-agent: *

허용: /

이는 다음과 동일합니다:

User-agent: *

Disallow:

허용(Allow)은 금지(Disallow)로 차단된 특정 경로를 재정의할 수 있습니다:

User-agent: *

Disallow: /private/

허용: /private/terms-and-conditions.php

이 robots.txt 예시에서는 /private/ 하위 모든 페이지가 차단되지만 /private/terms-and-conditions.php는 예외입니다.

동일한 robots.txt 파일에 서로 다른 웹 로봇을 대상으로 하는 여러 User-agent 지시문을 포함할 수 있다는 점을 유의하십시오:

User-agent: Googlebot

Disallow:

User-agent: bingbot

Disallow: /blog/

사이트맵

사이트맵은 웹사이트의 XML 사이트맵 위치를 포함하는 비표준 지시어입니다:

Sitemap: https://www.example.com/sitemap.xml

이 규칙은 사이트 구조에 대한 유용한 정보를 제공하는 XML 사이트맵의 위치를 봇에게 알려줍니다. 사이트맵에 포함된 URL을 따라가면 전체 사이트를 더 쉽게 크롤링할 수 있습니다. 저희 사이트맵 크롤러를 살펴보세요!

사이트맵 파일을 가리키는 URL은 반드시 절대 경로여야 합니다.

사이트에 여러 사이트맵이 존재할 수 있으므로, robots.txt에는 여러 Sitemap 지시어를 포함할 수 있습니다:

Sitemap: https://www.example.com/sitemaps/page-sitemap.xml

Sitemap: https://www.example.com/sitemaps/post-sitemap.xml

Sitemap: https://www.example.com/sitemaps/author-sitemap.xml

크롤링 지연(Crawl-delay)

비공식적이고 널리 사용되지 않는 Crawl-Delay 지시어는 웹 크롤러가 사이트에 대한 연속적인 요청 사이에 몇 초 동안 대기해야 하는지 정의합니다:

User-agent: *

크롤링 지연: 5

이 지시어는 서버 과부하를 방지하기 위한 사용자 에이전트별 지시어입니다. 이 예시에서는 모든 사용자 에이전트가 페이지 방문 사이에 5초간 대기하도록 지시합니다.

Request-rate

드물게 사용되며 사용자 에이전트별, 비표준 지시어인 요청 속도(Request-Rate)는 지정된 시간 내에 사용자 에이전트가 사이트에 보낼 수 있는 최대 요청 횟수를 지정합니다:

User-agent: *

Request-rate: 1/10

예를 들어, 이 규칙은 모든 사용자 에이전트가 10초마다 한 번씩만 요청하도록 제한합니다.

요청 속도 값의 형식은 다음과 같습니다:

<요청 횟수>/<초>

이 지시문은 서버 과부하 방지에 도움을 준다는 점에서 Crawl-Delay와 유사합니다. 주요 차이점은 Crawl-Delay가 지연 시간을 부과하는 반면 Request-rate는 속도 제한을 강제한다는 점입니다.

웹 스크래핑 과정에서 robots.txt 사용 방법

이제 robots.txt가 무엇이며 어떻게 작동하는지 알았습니다. 남은 것은 웹 스크래핑 프로세스에 이를 통합하는 방법입니다. 웹 스크래핑 시 robots.txt 파일을 준수하려면 다음을 수행해야 합니다:

  1. 대상 사이트의robots.txt 파일에접근하기 :
    • /robots.txt 경로로 HTTP GET 요청을 보내 파일을 다운로드하거나 브라우저에서 열기.
  2. 내용 확인:
    • robots.txt 파일에 포함된 지시문을 읽습니다.
    • 특정 URL이나 디렉토리에 대한 접근을 제한하는 Disallow 규칙이 있는지 확인하세요.
    • 허용되지 않은 경로 내 특정 영역에 대한 접근을 허용할 수 있는 허용 규칙을 찾으십시오.
    • 지정된 경우 Crawl-delay 및 Request-rate 지시어를 검토하십시오.

    스크래핑 스크립트 구축: [email protected]

  3. 스크래핑 스크립트 구축:
    • 스크레이퍼를 생성하거나 수정하여 robots.txt에 설정된 규칙을 준수하도록 하십시오.
    • 사용자 에이전트에 대해 허용되지 않는 URL에 접근하지 않도록 하십시오.
    • 크롤링 지연 시간 또는 요청 속도 제한을 준수하기 위해 스크래퍼에 속도 제한 메커니즘을 구현하십시오.

보시다시피, 스크래퍼를 구축하기 전에 robots.txt에 포함된 지시문을 분석해야 합니다. 이렇게 해야만 앞서 언급한 결과를 피할 수 있습니다.

자, 이제 여러분은 robots.txt 웹 스크래핑 전문가가 되었습니다!

결론

이 글에서는 robots.txt가 무엇인지, 사이트가 이를 사용하는 이유, 그리고 스크레이퍼가 차단되는 것을 피하는 데 어떻게 도움이 되는지 살펴보았습니다. 구체적으로, 온라인 데이터 수집 목표에 영향을 미칠 수 있는 지시어들을 분석했습니다. 또한 이를 중심으로 윤리적인 스크래핑 프로세스를 구성하는 방법도 배웠습니다.

안타깝게도 스크립트가 robots.txt를 완벽히 준수하더라도, 안티 스크래핑 솔루션에 의해 차단될 수 있습니다. 이를 피하는 방법은? 프록시 서버를 활용하는 것입니다. 온라인에는 여러 공급자가 존재하며, 모두 시도하려면 수개월이 소요될 것입니다. 다행히 저희가 이 문제를 해결해 드렸습니다.

Bright Data는 20,000명 이상의 고객과 포춘 500대 기업을 대상으로 최고의 프록시 서버를 운영합니다. 이들의 탁월한 글로벌 프록시 네트워크는 다음과 같습니다:

종합적으로, 이는 시장에서 가장 크고 신뢰할 수 있는 스크래핑 중심 프록시 인프라 중 하나입니다. 영업 담당자와 상담하여 Bright Data 제품 중 귀사의 요구에 가장 적합한 솔루션을 확인해 보십시오.