

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 윤리적 웹 크롤러 모범 사례
<a name="best-practices"></a>

이 섹션에서는 환경, 사회 및 거버넌스(ESG) 데이터를 수집하는 웹 크롤링 애플리케이션을 구축하기 위한 모범 사례와 주요 윤리적 고려 사항에 대해 설명합니다. 이러한 모범 사례를 준수하면 프로젝트와 조직을 보호하고 보다 책임감 있고 지속 가능한 웹 에코시스템에 기여할 수 있습니다. 이 접근 방식은 모든 이해관계자를 존중하는 방식으로 중요한 데이터에 액세스하고 이를 연구, 비즈니스 및 혁신에 사용하는 데 도움이 됩니다.

## Robots.txt 규정 준수
<a name="best-practices-robots"></a>

robots.txt 파일은 웹 사이트에서 웹 크롤러 및 봇과 통신하는 데 사용되며 웹 사이트의 어떤 부분에 액세스하거나 크롤링해서는 안 되는지에 대해 설명합니다. 웹 크롤러가 웹 사이트에서 robots.txt 파일을 발견하면 지침을 구문 분석하고 그에 따라 크롤링 동작을 조정합니다. 이렇게 하면 크롤러가 웹 사이트 소유자의 지침을 위반하지 않고 웹 사이트와 크롤러 간의 협력 관계를 유지할 수 있습니다. 따라서 robots.txt 파일은 액세스 제어, 민감한 콘텐츠 보호, 로드 관리 및 법률 준수에 도움이 됩니다.

다음 모범 사례를 따르는 것이 좋습니다.
+ 항상 robots.txt 파일의 규칙을 확인하고 준수합니다.
+ URL을 크롤링하기 전에 데스크톱 및 모바일 사용자 에이전트 모두에 대한 규칙을 확인하세요.
+ 웹 사이트에서 모바일 사용자 에이전트만 허용하는 경우 요청에 모바일 에이전트 헤더와 같은 다른 에이전트 헤더를 사용합니다.

robots.txt 파일이 없다고 해서 반드시 웹 사이트를 크롤링할 수 없거나 크롤링해서는 안 된다는 의미는 아닙니다. 크롤링은 항상 웹 사이트의 리소스와 소유자의 암시적 권리를 존중하여 책임감 있게 수행해야 합니다. 다음은 robots.txt가 없는 경우 권장되는 모범 사례입니다.
+ 크롤링이 허용되지만 주의해서 진행합니다.
+ 정중한 크롤링 관행을 구현합니다.
+ 광범위한 크롤링을 수행할 계획이라면 웹 사이트 소유자에게 문의하여 권한을 얻는 것이 좋습니다.

## 크롤링 속도 제한
<a name="best-practices-crawl-rate"></a>

서버에 부담을 주지 않도록 적절한 크롤링 속도를 사용합니다. robots.txt 파일에 지정된 대로 또는 무작위 지연을 사용하여 요청 간 지연을 구현합니다. 중소 규모의 웹 사이트의 경우 10\~15초마다 1개의 요청이 적합할 수 있습니다. 대규모 웹 사이트 또는 명시적 크롤링 권한이 있는 웹 사이트의 경우 초당 1\~2개의 요청이 적합할 수 있습니다.

## 사용자-에이전트 투명성
<a name="best-practices-user-agent"></a>

사용자 에이전트 헤더에서 크롤러를 식별합니다. 이 HTTP 헤더 정보는 콘텐츠를 요청하는 디바이스를 식별하기 위한 것입니다. 일반적으로 *봇*이라는 단어는 에이전트의 이름에 포함됩니다. 크롤러 및 기타 봇은 때때로 헤더에 중요한 필드를 사용하여 연락처 정보를 포함합니다.

## 효율적인 크롤링
<a name="best-practices-site-map"></a>

웹 사이트 소유자가 개발한 사이트맵을 사용하여 중요한 페이지에 집중합니다.

## 적응형 접근 방식
<a name="best-practices-adaptive"></a>

데스크톱 버전이 실패할 경우 모바일 사용자 에이전트로 전환하도록 크롤러를 프로그래밍합니다. 이렇게 하면 크롤러 액세스 권한을 제공하고 웹 사이트 서버의 부담을 줄일 수 있습니다.

## 오류 처리
<a name="best-practices-error-handling"></a>

크롤러가 다양한 HTTP 상태 코드를 적절하게 처리하는지 확인합니다. 예를 들어 429 상태 코드("요청이 너무 많음")가 발생하면 크롤러를 일시 중지해야 합니다. 크롤러가 지속적으로 403개의 상태 코드("금지")를 수신하면 크롤링 중지를 고려합니다.

## 배치로 크롤링
<a name="best-practices-batches"></a>

다음을 수행하는 것이 좋습니다.
+ 모든 URLs 번에 크롤링하는 대신 작업을 더 작은 배치로 나눕니다. 이렇게 하면 부하를 분산하고 제한 시간 또는 리소스 제약과 같은 문제가 발생할 위험을 줄일 수 있습니다.
+ 전체 크롤링 작업이 오래 실행될 것으로 예상되는 경우 더 작고 관리 가능한 여러 작업으로 나누는 것이 좋습니다. 이렇게 하면 프로세스의 확장성과 복원력이 향상될 수 있습니다.
+ 크롤링할 URLs 수가 비교적 적은 경우와 같은 서버리스 솔루션을 사용하는 것이 좋습니다 AWS Lambda. Lambda 함수는 리소스 관리를 자동으로 확장하고 처리하기 때문에 수명이 짧은 이벤트 기반 작업에 적합할 수 있습니다.

## 보안
<a name="best-practices-security"></a>

웹 크롤링 컴퓨팅 작업의 경우 아웃바운드 트래픽만 허용하도록 환경을 구성하는 것이 좋습니다. 이를 통해 공격 표면을 최소화하고 무단 인바운드 액세스 위험을 줄여 보안을 강화할 수 있습니다. 아웃바운드 연결만 허용하면 크롤링 프로세스가 대상 웹 사이트와 통신하고 필요한 데이터를 검색할 수 있으며 잠재적으로 시스템을 손상시킬 수 있는 인바운드 트래픽을 제한할 수 있습니다.

## 기타 고려 사항
<a name="best-practices-other-considerations"></a>

다음과 같은 추가 고려 사항 및 모범 사례를 검토합니다.
+ 웹 사이트의 서비스 약관 또는 개인 정보 보호 정책에서 크롤링 지침을 확인하세요.
+ HTML에서 크롤링 명령을 제공할 수 있는 `meta` 태그를 찾습니다.
+ 데이터 수집 및 사용과 관련된 관할 구역의 법적 제한에 유의하세요.
+ 웹 사이트 소유자가 요청할 경우 크롤링을 중지할 준비를 합니다.