이 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 |
| 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 파일을 준수하려면 다음을 수행해야 합니다:
- 대상 사이트의robots.txt 파일에접근하기 :
- /robots.txt 경로로 HTTP GET 요청을 보내 파일을 다운로드하거나 브라우저에서 열기.
- 내용 확인:
- robots.txt 파일에 포함된 지시문을 읽습니다.
- 특정 URL이나 디렉토리에 대한 접근을 제한하는 Disallow 규칙이 있는지 확인하세요.
- 허용되지 않은 경로 내 특정 영역에 대한 접근을 허용할 수 있는 허용 규칙을 찾으십시오.
- 지정된 경우 Crawl-delay 및 Request-rate 지시어를 검토하십시오.
스크래핑 스크립트 구축: [email protected]
- 스크래핑 스크립트 구축:
- 스크레이퍼를 생성하거나 수정하여 robots.txt에 설정된 규칙을 준수하도록 하십시오.
- 사용자 에이전트에 대해 허용되지 않는 URL에 접근하지 않도록 하십시오.
- 크롤링 지연 시간 또는 요청 속도 제한을 준수하기 위해 스크래퍼에 속도 제한 메커니즘을 구현하십시오.
보시다시피, 스크래퍼를 구축하기 전에 robots.txt에 포함된 지시문을 분석해야 합니다. 이렇게 해야만 앞서 언급한 결과를 피할 수 있습니다.
자, 이제 여러분은 robots.txt 웹 스크래핑 전문가가 되었습니다!
결론
이 글에서는 robots.txt가 무엇인지, 사이트가 이를 사용하는 이유, 그리고 스크레이퍼가 차단되는 것을 피하는 데 어떻게 도움이 되는지 살펴보았습니다. 구체적으로, 온라인 데이터 수집 목표에 영향을 미칠 수 있는 지시어들을 분석했습니다. 또한 이를 중심으로 윤리적인 스크래핑 프로세스를 구성하는 방법도 배웠습니다.
안타깝게도 스크립트가 robots.txt를 완벽히 준수하더라도, 안티 스크래핑 솔루션에 의해 차단될 수 있습니다. 이를 피하는 방법은? 프록시 서버를 활용하는 것입니다. 온라인에는 여러 공급자가 존재하며, 모두 시도하려면 수개월이 소요될 것입니다. 다행히 저희가 이 문제를 해결해 드렸습니다.
Bright Data는 20,000명 이상의 고객과 포춘 500대 기업을 대상으로 최고의 프록시 서버를 운영합니다. 이들의 탁월한 글로벌 프록시 네트워크는 다음과 같습니다:
- 데이터센터 프록시 – 770,000개 이상의 데이터센터 IP.
- 주거용 프록시 – 195개국 이상에 걸쳐 7,200만 개 이상의 주거용 IP.
- ISP 프록시 – 70만 개 이상의 ISP IP 주소.
종합적으로, 이는 시장에서 가장 크고 신뢰할 수 있는 스크래핑 중심 프록시 인프라 중 하나입니다. 영업 담당자와 상담하여 Bright Data 제품 중 귀사의 요구에 가장 적합한 솔루션을 확인해 보십시오.