Post

데이터 크롤링 시 주의사항

웹 크롤링 수행 시 고려해야 할 법적, 기술적, 윤리적 주의사항에 대한 가이드

데이터 크롤링 시 주의사항

웹 크롤링 시 주의사항

웹 크롤링은 데이터 수집의 강력한 방법이지만, 적절하게 수행하지 않으면 법적, 기술적, 윤리적 문제를 야기할 수 있다. 이 글에서는 웹 크롤링 시 고려해야 할 주요 주의사항을 살펴본다.

1. 법적 고려사항

  • robots.txt 준수
    • 웹사이트의 robots.txt 파일을 항상 확인하고 준수해야 한다.
    • robots.txt는 웹사이트의 루트 디렉토리에 위치한 텍스트 파일로, 웹 크롤러가 웹사이트를 방문할 때 따라야 하는 규칙이 정의되어 있으며, 접근 가능한 부분과 접근이 불가능한 부분을 명시한다.
    • 구성요소: User-agentDisallow 또는 Allow 지시문을 포함하며, 특정 디렉토리나 파일에 대한 접근 권한을 제어한다.
    • 예: User-agent: * (모든 크롤러에게 적용), Disallow: /private/ (private 디렉토리 크롤링 금지)
    • robots.txt 예시: 아래 예시는 네이버 robots.txt 파일(www.naver.com/robots.txt)의 예시이다.
      1
      2
      3
      4
      
      User-agent: *
      Disallow: /
      Allow : /$
      Allow : /.well-known/privacy-sandbox-attestations.json
      

      위 예시는 모든 크롤러(User-agent: *)에게 기본적으로 모든 페이지 접근을 금지(Disallow: /)하고, 루트 페이지만 허용(Allow: /$)하며, privacy-sandbox-attestations.json 파일에 대한 접근은 허용(Allow: /.well-known/privacy-sandbox-attestations.json)하는 설정이다.

  • 이용약관 확인
    • 대상 웹사이트의 이용약관(Terms of Service)을 확인하여 크롤링이 허용되는지 확인한다.
  • 저작권 존중
    • 웹사이트 콘텐츠(텍스트, 이미지, 비디오 등)는 대부분 저작권으로 보호된다. 단순히 공개적으로 접근 가능하다고 해서 자유롭게 사용할 수 있는 것은 아니다.
    • 연구, 교육, 뉴스 보도 등 제한된 목적으로만 적용 가능하다.
    • 수집한 데이터를 사용할 때는 항상 원본 출처를 명확히 표시해야 한다.
    • 전체 콘텐츠 복제 및 재배포, 상업적 이익을 위한 무단 사용, 원작자 동의 없는 파생물 생성은 하면 안된다.
    • 실제 사례: 사람인HR vs. 잡코리아 사건
    • 실제 사례: 여기어때 vs. 야놀자 사건
      • 숙박 예약 플랫폼인 여기어때가 경쟁사인 야놀자의 숙박 정보를 크롤링했으나, 형사상으로는 무죄 판결(정보가 공개되어 있었고, 명시적인 크롤링 금지 조치가 없었음)을 받았지만, 민사상으로는 부정경쟁행위로 판단되어 10억 원의 손해배상 책임을 인정받았으며, 이는 단순히 법적 문제가 아닌 윤리적이고 공정한 경쟁 관행의 중요성을 보여주는 사례가 되었다. 관련 기사: 한국경제 - 여기어때, 야놀자 정보 크롤링 손배소 패소…10억 배상
  • 개인정보 보호
    • 개인정보보호법을 준수하여 개인정보를 수집하고 처리해야 한다.
    • 개인정보란 생존하는 개인에 관한 정보로, 성명, 주민등록번호, 전화번호, 주소, 이메일 등으로 개인을 알아볼 수 있는 정보를 말한다.
    • 개인정보가 포함된 데이터를 크롤링할 때는 반드시 해당 개인들의 동의를 얻어야 한다.
    • 수집된 개인정보는 안전하게 보관하고, 목적 외 사용을 금지하며, 보관 기간을 준수해야 한다.
    • 개인정보가 포함된 데이터를 공개하거나 공유할 때는 반드시 개인정보를 비식별화 처리해야 한다.
    • 개인정보 유출 사고 발생 시 즉시 개인정보보호위원회에 신고하고 피해자에게 알려야 한다.

2. 기술적 고려사항

  • 적절한 요청 간격 유지
    • 서버에 과부하를 주지 않도록 요청 사이에 적절한 시간 간격을 둔다.
    • 동시 요청 수를 제한하여 서버 부하를 분산시킨다.
    • 랜덤한 시간 간격을 사용하여 크롤링 패턴을 자연스럽게 만든다.
      • 고정된 시간 간격 대신 기본 대기 시간에 랜덤한 시간을 추가하여 사용
      • 예를 들어, 기본 5초 대기 시간에 0~10초 사이의 랜덤한 시간을 추가, 이렇게 하면 크롤링 패턴이 기계적이지 않아 차단될 위험을 줄일 수 있음
    • 작업 시간대 분산을 위한 스케줄링
      • 대량의 데이터를 수집할 경우, 작업을 여러 시간대에 나누어 수행
      • 예를 들어, 하루 중 여러 번에 걸쳐 크롤링 작업을 분산
      • 서버의 부하가 적은 시간대(예: 새벽 시간)를 활용
  • 효율적인 크롤링 설계
    • 필요한 데이터만 수집하도록 크롤러를 설계하여 불필요한 서버 부하를 줄인다.
    • 이미 수집한 데이터를 효율적으로 캐싱하여 중복 요청을 방지한다.
    • 실제 사례: 구글의 웹 크롤링 정책
      • 구글은 웹 크롤링 시 robots.txt를 엄격히 준수하며, 크롤링 속도와 빈도를 제한하여 웹사이트에 과도한 부하를 주지 않도록 한다. 또한 캐싱을 통해 동일한 페이지를 반복적으로 요청하지 않도록 하여 효율적인 크롤링을 실현한다.

3. 윤리적 고려사항

  • 투명성 유지: 가능한 경우, 웹사이트 관리자에게 크롤링 의도를 알리는 것이 좋다.
  • 서비스 방해 금지: 대상 웹사이트의 정상적인 운영을 방해하지 않도록 주의한다.
  • 데이터 사용 목적 명확화: 수집한 데이터의 사용 목적을 명확히 하고, 그 범위를 벗어나지 않도록 한다.
  • 실제 사례: LinkedIn vs. hiQ Labs 사건
    • 데이터 분석 기업 hiQ Labs가 LinkedIn의 공개 프로필 데이터를 크롤링하여 직원 이직 위험을 분석하는 서비스를 제공했으나, LinkedIn이 이를 차단
    • 법원은 공개된 데이터에 대한 접근 권한을 인정했으나, 이는 데이터 수집의 목적이 명확하고 투명해야 한다는 점을 시사
    • 이 사례는 데이터 수집의 투명성과 윤리적 고려사항의 중요성을 보여줌

웹 크롤링은 강력한 데이터 수집 도구이지만, 책임감 있게 사용해야 한다.

This post is licensed under CC BY 4.0 by the author.