블로그로 돌아가기

머신러닝 데이터셋을 위한 데이터 수집: 차단 및 CAPTCHA 없이 수천 페이지 크롤링하는 방법

ML 데이터셋을 위한 대량 데이터 수집 방법을 다룹니다. 차단 및 CAPTCHA 없이 어떤 프록시를 선택하고 프로세스를 구축하는지 설명합니다.

📅2026년 3월 14일
```html

ML 모델의 품질은 교육 데이터의 품질과 양에 직접적으로 의존합니다. 그러나 수천 페이지를 수집하기 시작하면 사이트가 요청을 차단하고 CAPTCHA를 표시하며 IP를 차단하기 시작합니다. 이 기사에서는 데이터 세트를 위한 신뢰할 수 있는 데이터 수집 파이프라인을 구축하는 방법을 살펴보겠습니다: 어떤 도구를 사용하고, 보호를 우회하며, 각 작업에 적합한 프록시 유형은 무엇인지.

사이트가 데이터 수집을 차단하는 이유와 대처 방법

자동 데이터 수집을 시작하면 사이트는 일반 사용자가 아니라 하나의 IP 주소에서 오는 요청의 흐름을 감지합니다. 이는 즉시 Cloudflare, DataDome, PerimeterX 및 기타 안티봇 솔루션의 보안 시스템에서 빨간 깃발을 올립니다. 결과는 CAPTCHA, 일시적인 차단 또는 IP의 완전한 차단입니다.

이 문제는 ML 프로젝트에 특히 심각합니다. 데이터 세트는 100페이지가 아니라 수만 페이지를 요구하기 때문입니다. 텍스트 분류의 간단한 모델을 학습하기 위해서는 최소 5,000–10,000개의 예제가 필요합니다. 컴퓨터 비전의 경우에는 수십만 개의 이미지가 필요합니다. 하나의 IP에서 이러한 양을 수집하는 것은 물리적으로 불가능합니다.

보안 시스템은 다음과 같은 매개변수를 분석합니다:

  • 요청 빈도 — 하나의 IP에서 분당 10–20개 이상의 요청은 의심스럽습니다.
  • User-Agent 및 헤더 — 파서의 표준 헤더는 쉽게 인식됩니다.
  • 쿠키 및 세션 데이터의 부재 — 실제 브라우저는 항상 기록을 가지고 있습니다.
  • IP의 지리적 위치 — 네덜란드의 데이터 센터 IP가 러시아어 사이트에서 의심스럽게 보입니다.
  • 행동 패턴 — 사람은 페이지를 30–60초 동안 읽지만, 봇은 0.3초 만에 읽습니다.

해결책은 올바른 프록시, IP 회전 및 실제 사용자 행동을 모방하는 조합입니다. 각 요소를 더 자세히 살펴보겠습니다.

ML 데이터 세트를 위한 데이터 출처: 주요 출처

도구에 대해 이야기하기 전에, 모델 학습을 위한 데이터가 어디에서 오는지 이해하는 것이 중요합니다. 출처는 여러 카테고리로 나뉘며, 각 카테고리마다 접근 방식이 다릅니다.

공개 데이터 세트 (파싱 없이)

가장 먼저 확인해야 할 것은 이미 존재하는 공개 데이터 세트입니다. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository에는 수천 개의 준비된 데이터 세트가 포함되어 있습니다. 만약 귀하의 작업이 표준적이라면 (텍스트 분류, 객체 인식, 감정 분석), 데이터 세트가 이미 존재할 가능성이 있습니다. 이는 몇 주의 작업을 절약할 수 있습니다.

웹 파싱 (프록시 필요)

준비된 데이터가 없거나 귀하의 사양에 맞지 않는 경우 — 파싱이 필요합니다. 일반적인 작업은 다음과 같습니다:

  • Wildberries, Ozon, Yandex.Market에서 감정 분석을 위한 리뷰 수집
  • 언어 모델 학습을 위한 뉴스 사이트 파싱
  • 컴퓨터 비전 모델을 위한 상품 이미지 수집
  • HR 모델을 위한 hh.ru, SuperJob에서의 구인 공고 파싱
  • 예측 모델을 위한 마켓플레이스에서 가격 데이터 수집
  • NLP 작업을 위한 소셜 미디어 (VK, Twitter/X) 파싱

API 플랫폼 (부분적으로 폐쇄)

일부 플랫폼은 공식 API를 제공합니다 — Twitter/X API, Reddit API, Google Places API. 문제는: 이들은 비싸고, 제한이 있으며, 종종 필요한 양의 데이터를 무료로 제공하지 않습니다. 따라서 많은 ML 팀은 API와 파싱을 결합합니다.

합성 데이터

별도의 접근 방식은 GPT-4 또는 기타 LLM을 사용하여 합성 데이터를 생성하는 것입니다. 그러나 이를 위해서는 여전히 실제 데이터가 필요합니다 (few-shot 예제). 따라서 파싱은 대부분의 ML 프로젝트에서 기본 데이터 수집 도구로 남아 있습니다.

코드 작성 없이 데이터 수집을 위한 도구

좋은 소식은 ML 데이터 세트를 위한 데이터 수집에 개발자가 될 필요가 없다는 것입니다. 프록시와 기본 보호를 우회할 수 있는 준비된 no-code 및 low-code 도구가 있습니다.

No-code 파서

도구 적합한 용도 프록시 지원 난이도
Octoparse 웹사이트, 테이블, 페이지네이션 ✅ 예 낮음
ParseHub 동적 웹사이트 (JS) ✅ 예 낮음
Apify 100개 이상의 웹사이트를 위한 준비된 액터 ✅ 내장형 중간
Bright Data IDE 복잡한 보호 웹사이트 ✅ 내장형 중간
Scrapy Cloud 대규모 파싱 ✅ 미들웨어를 통해 높음

대부분의 ML 데이터 수집 작업에는 Octoparse 또는 Apify로 충분합니다. Octoparse는 20–30분 안에 파서를 시각적으로 설정할 수 있습니다: 페이지의 요소를 지정하고, 페이지네이션을 설정하고, 프록시를 삽입한 후 수집을 시작합니다. 결과는 CSV 또는 JSON 형식으로 내보낼 수 있으며, 바로 학습에 사용할 수 있습니다.

Apify는 특히 인기 있는 플랫폼을 파싱해야 할 때 유용합니다: Instagram, Twitter/X, Amazon, Google Maps, LinkedIn 및 수십 개의 다른 웹사이트에 대한 준비된 "액터"가 있습니다. 단순히 매개변수를 설정하면 구조화된 데이터를 얻을 수 있습니다.

ML 데이터 세트에 적합한 프록시 유형 선택하기

프록시 유형 선택은 데이터 수집의 성공에 있어 핵심 요소 중 하나입니다. 여기서의 실수는 비용이 많이 듭니다: 중간에 차단되거나 불필요한 성능에 대해 과도한 비용을 지불할 수 있습니다. 세 가지 주요 유형을 살펴보겠습니다.

주거용 프록시 — 보호된 웹사이트용

주거용 프록시는 실제 가정 사용자의 IP 주소입니다. 안티봇 시스템에서는 일반 방문자와 구별할 수 없습니다. 이는 심각한 보호를 가진 웹사이트(마켓플레이스, 소셜 미디어, 뉴스 집계기)에서 파싱하는 데 이상적입니다.

ML 작업에 대한 주요 이점: 지리적 위치에 따라 데이터를 수집할 수 있습니다. 지역 콘텐츠로 모델을 학습하는 경우 — 러시아 또는 다른 국가의 필요한 지역에서 프록시를 선택합니다. 이는 지리적 분류 또는 지역 방언 분석 작업에 특히 중요합니다.

모바일 프록시 — 소셜 미디어 및 모바일 플랫폼용

모바일 프록시는 모바일 운영자(4G/5G)의 IP를 사용합니다. 이들은 플랫폼에서 가장 높은 신뢰 수준을 가지고 있습니다 — 왜냐하면 하나의 모바일 IP는 실제로 수백 명이 동시에 사용하기 때문입니다 (모든 가입자가 동일한 기지국을 통해 하나의 IP로 접속합니다). 이는 모바일 IP에서의 데이터 수집이 정상적으로 보이게 만듭니다.

모바일 프록시는 VK, TikTok 또는 Instagram과 같은 플랫폼에서 데이터를 수집할 때 특히 필요합니다 — 이들은 데이터 센터 IP를 공격적으로 차단합니다.

데이터 센터 프록시 — 공개 출처 및 속도용

데이터 센터 프록시는 빠르고 저렴합니다. 이들은 실제 사용자와의 연결이 없기 때문에 보호 시스템에서 더 쉽게 인식됩니다. 그러나 많은 ML 작업에는 이것으로 충분합니다: 위키피디아, 공개 아카이브, GitHub, 공개 API 또는 심각한 보호가 없는 웹사이트를 파싱하는 경우 — 데이터 센터 프록시는 훌륭하게 작동하며 훨씬 저렴합니다.

귀하의 ML 작업에 적합한 프록시 유형 선택하기:

  • 마켓플레이스 (Wildberries, Ozon, Avito): 회전하는 주거용 프록시
  • 소셜 미디어 (VK, Instagram, TikTok): 모바일 프록시
  • 뉴스 사이트, 포럼, 위키피디아: 데이터 센터 프록시
  • Google 검색, Yandex: 주거용 또는 모바일 프록시
  • 공개 아카이브, Common Crawl: 데이터 센터 프록시

실용적인 시나리오: 텍스트, 이미지, 가격, 리뷰

인기 있는 ML 작업 유형을 위한 데이터 수집의 구체적인 시나리오를 살펴보겠습니다 — 출처, 도구 및 필요한 프록시 유형을 명시합니다.

시나리오 1: 감정 분석을 위한 리뷰 데이터 세트 (NLP)

작업: Wildberries에서 50,000개의 리뷰와 평가를 수집하여 감정 분류 모델을 학습합니다.

출처: Wildberries — 1–5점 평가가 있는 상품 리뷰 (완벽한 레이블이 이미 존재합니다).
도구: Octoparse 또는 requests 라이브러리를 사용한 Python 스크립트.
프록시: 회전하는 주거용 프록시 — Wildberries는 데이터 센터 IP를 적극적으로 차단합니다.
수집 속도: 3–5초마다 1개의 요청 — 50,000개의 리뷰를 2–3일 안에 수집합니다.

결과: 리뷰 텍스트, 평가 (1–5), 상품 카테고리, 날짜가 포함된 CSV 파일. 이는 학습을 위한 준비된 데이터 세트입니다 — 레이블이 데이터에 내장되어 있습니다.

시나리오 2: 컴퓨터 비전을 위한 이미지 데이터 세트

작업: 여러 카테고리의 상품 이미지 100,000개를 수집하여 분류 모델을 학습합니다.

출처: Ozon, Yandex.Market — 카테고리가 있는 상품 사진.
도구: Apify (e-commerce를 위한 준비된 액터가 있음) 또는 ParseHub.
프록시: 러시아 내에서 지리적으로 회전하는 주거용 프록시.
중요: 이미지를 프록시를 통해 다운로드하고 직접 다운로드하지 마십시오 — CDN 서버도 대량 다운로드를 차단할 수 있습니다.

결과: 카테고리별로 분류된 이미지 폴더 — Keras의 ImageDataGenerator 또는 PyTorch의 DataLoader가 직접 수용하는 구조입니다.

시나리오 3: 언어 모델을 위한 텍스트 코퍼스

작업: 특정 주제(예: 법률 문서 또는 의료 기사)에 맞춰 언어 모델을 추가 학습하기 위해 대규모 러시아어 텍스트 코퍼스를 수집합니다.

출처: 주제별 포럼, 뉴스 사이트, Habr, 전문 포털.
도구: 구조적 수집을 위한 Scrapy Cloud 또는 Octoparse.
프록시: 회전하는 데이터 센터 프록시 — 대부분의 텍스트 사이트는 강력한 보호가 없으며 속도가 익명성보다 중요합니다.
속도: 데이터 센터 프록시를 사용하면 분당 50–100개의 요청을 수행하고 며칠 안에 백만 개의 문서를 수집할 수 있습니다.

시나리오 4: HR 모델을 위한 구인 공고 데이터 세트

작업: hh.ru에서 200,000개의 구인 공고를 수집하여 추천 또는 직업 분류 모델을 학습합니다.

출처: hh.ru — 공식 API가 있지만 제한이 있습니다. 대량의 데이터가 필요하므로 파싱이 필요합니다.
도구: Apify (hh.ru용 액터가 있음) 또는 Octoparse.
프록시: 주거용 프록시 — hh.ru는 잘 보호되어 있으며 데이터 센터 IP를 차단합니다.
결과: 구조화된 데이터: 구인 공고 제목, 설명, 급여, 요구 사항, 지역, 산업 — NLP 및 추천 시스템을 위한 훌륭한 데이터 세트입니다.

대량 데이터 수집 시 차단을 피하는 방법

좋은 프록시를 사용하더라도 기본 규칙을 준수하지 않으면 차단될 수 있습니다. 다음은 안정적으로 데이터를 수집하고 손실 없이 수집하는 데 도움이 되는 검증된 방법입니다.

IP 및 세션 회전

가장 중요한 규칙: 하나의 IP를 수천 개의 요청에 사용하지 마십시오. 10–50개의 요청마다 IP가 변경되도록 회전을 설정하십시오. 대부분의 도구(Octoparse, Apify, Scrapy)는 프록시 풀을 연결할 때 이를 기본적으로 지원합니다.

추가로 IP와 함께 세션 쿠키를 변경하여 새로운 사용자를 모방하십시오, 단순히 주소를 변경하는 것이 아닙니다.

요청 간 적절한 지연

요청 간에 임의의 지연을 추가하십시오 — 고정된 2초가 아니라 1초에서 5초 사이의 임의의 지연을 설정하십시오. 고정된 간격은 봇 패턴으로 쉽게 감지됩니다. 임의의 지연은 인간의 행동을 모방합니다.

특히 보호된 웹사이트의 경우, 100개의 요청마다 30–60초의 긴 휴식을 추가하십시오. 이는 속도를 줄이지만 차단 위험을 급격히 줄입니다.

올바른 요청 헤더

User-Agent를 최신 브라우저(최신 Chrome, Firefox)로 설정하십시오. 표준 HTTP 헤더를 추가하십시오: Accept-Language, Accept-Encoding, Referer. 이러한 헤더가 없으면 대부분의 보호 시스템에서 명백한 봇의 징후로 간주됩니다.

비업무 시간에 수집

대량 수집을 밤에 시작하십시오 (모스크바 시간 2:00–6:00). 이 시간 동안 사이트의 트래픽은 최소화되며, 안티봇 시스템은 덜 공격적이며, 귀하의 요청이 더 많은 부하를 차지합니다 — 이는 역설적으로 의심을 줄입니다, 경쟁 트래픽이 적기 때문입니다.

오류 처리 및 재시도

응답 코드에 대한 자동 처리를 설정하십시오:

  • 429 (요청이 너무 많음) — 지연을 늘리고, IP를 변경하고, 5–10분 기다리십시오.
  • 403 (금지됨) — IP가 차단되었습니다, 반드시 프록시를 변경하십시오.
  • 503 (서비스 이용 불가) — 서버의 일시적인 과부하, 1–2분 후에 다시 시도하십시오.
  • 200과 CAPTCHA — 더 높은 품질의 프록시가 필요합니다 (데이터 센터 프록시 대신 주거용 프록시).

프록시와 사이트의 지리적 일치

목표 사이트와 동일한 국가의 프록시를 사용하십시오. Wildberries를 파싱하는 경우 — 러시아 IP를 선택하십시오. 독일 사이트에서 데이터를 수집하는 경우 — 독일 프록시가 필요합니다. 지리적 불일치는 가장 일반적인 차단 트리거 중 하나입니다.

체크리스트: ML을 위한 데이터 수집 파이프라인 설정

데이터 세트를 위한 대규모 데이터 수집을 시작하기 전에 이 체크리스트를 사용하십시오:

📋 준비

  • ☐ Kaggle / Hugging Face에 준비된 데이터 세트가 있는지 확인
  • ☐ 목표 사이트의 robots.txt를 검토
  • ☐ 데이터 양 및 데이터 세트 구조 정의
  • ☐ 파싱 도구 선택 (Octoparse, Apify, Scrapy)
  • ☐ 작업에 적합한 프록시 유형 선택 (주거용 / 모바일 / 데이터 센터)

⚙️ 설정

  • ☐ IP 회전이 있는 프록시 풀 연결
  • ☐ User-Agent 설정 (최신 Chrome/Firefox)
  • ☐ 표준 HTTP 헤더 추가
  • ☐ 임의의 지연 설정 (1–5초)
  • ☐ 오류 처리 설정 (429, 403, 503)
  • ☐ 데이터 내보내기 형식 지정 (CSV, JSON, JSONL)

🧪 테스트

  • ☐ 100–500개의 레코드로 테스트 실행
  • ☐ 데이터의 품질 및 완전성 확인
  • ☐ 테스트 양에서 차단이 없는지 확인
  • ☐ 수집 속도 확인 및 전체 데이터 세트에 대한 시간 계산

🚀 실행 및 모니터링

  • ☐ 야간에 실행 (02:00–06:00 MSK)
  • ☐ 오류 알림 설정
  • ☐ 수집되는 데이터의 품질 주기적으로 확인
  • ☐ 중간 결과 저장 (10,000개 레코드마다 체크포인트)

🧹 후처리

  • ☐ 중복 제거
  • ☐ 텍스트에서 HTML 태그 및 특수 문자 제거
  • ☐ 클래스 균형 확인 (분류 작업의 경우)
  • ☐ train/validation/test 샘플로 분할
  • ☐ ML 프레임워크와 호환되는 형식으로 저장

결론

ML 데이터 세트를 위한 데이터 수집은 일회성이 아니라 시스템적인 프로세스입니다. 이 기사에서의 주요 결론은: 올바른 프록시 선택이 차단 없이 끝까지 도달할 수 있는지 여부를 결정합니다. 주거용 프록시는 보호된 마켓플레이스 및 집계기에 필요하고, 모바일 프록시는 소셜 미디어에, 데이터 센터 프록시는 공개 텍스트 출처에 필요합니다. Octoparse 및 Apify와 같은 도구는 코드 작성 없이 파이프라인을 구축할 수 있게 해줍니다. 기본 규칙(IP 회전, 임의 지연, 올바른 헤더)을 준수하면 수십만 개의 레코드를 손실 없이 수집할 수 있습니다.

마켓플레이스, 뉴스 사이트 또는 주제별 포털에서 ML 모델 학습을 위한 데이터를 수집할 계획이라면 주거용 프록시로 시작하는 것을 권장합니다 — 이는 보호 시스템으로부터 최대한의 신뢰를 제공하고 대규모 데이터 수집 시 차단 위험을 최소화합니다.

```