블로그로 돌아가기

상품 특성 파싱을 위한 프록시: 마켓플레이스에서 차단 없이 데이터 수집하는 방법

마켓플레이스에서 상품 특성을 크롤링하기 위한 프록시 선택 및 설정에 대한 자세한 가이드: 프록시 유형, IP 회전, Wildberries 및 Ozon의 안티봇 시스템 우회.

📅2026년 1월 26일
```html

마켓플레이스에서 상품 특성을 파싱하는 것은 판매자, 분석가 및 가격 집계자에게 매우 중요한 작업입니다. Wildberries, Ozon, Yandex.Market 및 기타 플랫폼은 고급 안티봇 시스템을 사용하여 자동 데이터 수집을 적극적으로 차단합니다. 제대로 설정된 프록시 없이는 파서가 50-100개의 요청 후에 차단될 수 있습니다. 이 기사에서는 파싱에 적합한 프록시 유형, IP 회전 설정 방법 및 주요 마켓플레이스의 보호를 우회하는 방법을 살펴보겠습니다.

마켓플레이스가 파싱을 차단하는 이유와 작동 방식

현대 마켓플레이스는 파싱으로 인해 수백만 루블을 잃고 있습니다: 경쟁자가 상품 설명을 복사하고, 집계자가 트래픽을 가로채며, 서버에 대한 부하가 증가합니다. 따라서 Wildberries, Ozon, Yandex.Market 및 기타 플랫폼은 자동 데이터 수집에 대한 다단계 보호를 도입했습니다.

마켓플레이스가 파싱을 어떻게 인식하는가:

  • 하나의 IP에서의 요청 빈도 — 하나의 주소에서 분당 100개 이상의 요청이 들어오면 이는 봇의 명백한 징후입니다. 일반 사용자는 이 시간 동안 5-10개의 상품 카드만 조회합니다.
  • JavaScript 부재 — requests 또는 curl을 사용하는 간단한 파서는 가격 및 특성을 로드하는 JS 코드를 실행하지 않습니다. 사이트는 콘텐츠가 렌더링 없이 요청되고 있음을 인식합니다.
  • User-Agent 및 헤더 — 라이브러리의 기본 헤더(예: "python-requests/2.28.0")는 즉시 봇을 드러냅니다. Accept-Language, Referer 헤더의 부재도 의심스럽습니다.
  • 브라우저 지문 — 고급 시스템(Cloudflare, Kasada, DataDome)은 Canvas, WebGL, 글꼴, 브라우저 확장을 분석합니다. Puppeteer와 같은 헤드리스 브라우저는 일부 매개변수가 없기 때문에 쉽게 식별됩니다.
  • 행동 패턴 — 봇은 동일한 간격으로 상품 카드를 열고(예: 정확히 2초마다), 페이지를 스크롤하지 않으며, 마우스를 움직이지 않습니다. 이는 그를 살아있는 사람과 구별합니다.

차단의 결과: 1-24시간 동안의 IP 임시 차단, 각 요청에 대한 CAPTCHA, 데이터 센터의 IP 범위 완전 차단. 이는 비즈니스에 데이터 수집 중단 및 경쟁 우위 상실을 의미합니다.

실제 사례: 가격 집계자는 10개의 데이터 센터 IP로 Wildberries를 파싱하며, 각 IP에서 시간당 500개의 요청을 수행했습니다. 3일 후, 전체 /24 범위가 영구 차단되었고 — 프록시 공급자를 변경하고 회전하는 주거용 IP로 전환해야 했습니다.

상품 파싱을 위한 프록시 유형 비교

상품 특성을 파싱하기 위해서는 세 가지 주요 유형의 프록시가 사용됩니다. 각 유형은 데이터 양, 예산 및 속도 요구 사항에 따라 장점과 제한이 있습니다.

프록시 유형 속도 차단 위험 비용 언제 사용해야 하는가
데이터 센터 프록시 높음 (50-200 ms) 높음 낮음 소량 파싱(하루 10,000개 이하), 파서 테스트
주거용 프록시 중간 (200-800 ms) 낮음 높음 (트래픽 기준) 봇 보호가 있는 Wildberries, Ozon 파싱, 대량 데이터
모바일 프록시 중간 (300-1000 ms) 매우 낮음 매우 높음 최대 보호가 필요한 파싱, 강력한 차단 우회, 중요한 프로젝트

데이터 센터 프록시는 데이터 센터(AWS, Hetzner, OVH)의 서버 IP 주소입니다. 빠르고 저렴하지만 마켓플레이스는 ASN 데이터베이스를 통해 쉽게 식별합니다. 소규모 카탈로그(하루 10,000개 이하) 또는 심각한 보호가 없는 플랫폼에 적합합니다. 비용: IP당 월 1-3달러.

주거용 프록시는 SDK를 통해 애플리케이션에서 합법적으로 얻은 가정 사용자 IP입니다. 마켓플레이스는 이를 일반 구매자로 인식합니다. Wildberries, Ozon, Yandex.Market의 대량 파싱에 이상적입니다. 비용: 트래픽 1GB당 5-15달러(약 10,000-30,000 요청).

모바일 프록시는 모바일 운영자(MTS, Beeline, MegaFon)의 IP입니다. 보호 우회를 위한 가장 신뢰할 수 있는 유형이지만 비싸고 느립니다. 차단이 허용되지 않는 중요한 작업에만 사용하십시오. 비용: IP당 월 50-150달러, 회전 포함.

주거용 또는 데이터 센터: 귀하의 작업에 적합한 선택

프록시 유형 선택은 세 가지 요소에 따라 다릅니다: 파싱 양, 플랫폼의 보호 수준 및 예산. 구체적인 사용 시나리오를 살펴보겠습니다.

데이터 센터 프록시가 적합한 경우

시나리오 1: 파서 테스트
새로운 파서를 개발하고 데이터 추출 논리를 확인합니다. 디버깅을 위해 100-500개 상품을 파싱해야 합니다. 이 경우 주거용 프록시는 과도한 비용입니다. 5-10개의 데이터 센터 IP를 사용하고 각 IP에서 시간당 50-100개의 요청을 수행하십시오. 차단 없이 테스트하기에 충분합니다.

시나리오 2: 보호가 없는 플랫폼 파싱
소규모 지역 마켓플레이스, Avito와 같은 광고 게시판(일부 카테고리), OpenCart의 인터넷 상점은 종종 심각한 안티봇 시스템이 없습니다. 이 경우 데이터 센터는 적당한 부하(시간당 IP당 200개 요청)에서 안정적으로 작동합니다.

시나리오 3: 제한된 예산과 소량
하루 5,000-10,000개의 상품을 파싱해야 하고 예산이 제한된 경우, 공격적인 회전(50-100 요청마다 IP 변경)을 사용하는 데이터 센터를 시도하십시오. 차단이 더 많아지겠지만, 올바른 재시도 로직(새로운 IP로 요청 재전송)을 설정하면 작동합니다.

주거용 프록시가 필요한 경우

시나리오 1: Wildberries 및 Ozon 파싱
이 플랫폼은 Cloudflare, DataDome 및 자체 안티봇 시스템을 사용합니다. 데이터 센터에서 20-50개의 요청 후 CAPTCHA 또는 차단을 받을 수 있습니다. 5-10분마다 회전하는 주거용 프록시는 수십만 개의 상품을 문제없이 파싱할 수 있게 해줍니다. 한 고객은 1,000개의 주거용 IP 풀을 사용하여 Wildberries의 전체 카탈로그(2천만 개 이상의 상품)를 일주일 만에 파싱했습니다.

시나리오 2: 인증이 필요한 파싱
일부 상품 특성(도매 가격, 재고)은 인증된 사용자만 접근할 수 있습니다. 계정을 통해 파싱하는 경우 데이터 센터를 사용하면 계정이 차단됩니다. 주거용 프록시는 실제 사용자의 행동을 모방하여 차단 위험을 줄입니다.

시나리오 3: 지리적 타겟팅
Wildberries, Ozon, Yandex.Market의 상품 가격 및 재고는 사용자 지역에 따라 다릅니다. 동시에 모스크바, 상트페테르부르크, 예카테린부르크에 대한 데이터를 수집하려면 도시 선택이 가능한 주거용 프록시가 필요합니다. 데이터 센터는 지리적 위치를 정확하게 제어할 수 없습니다.

프록시 유형 선택 공식:

  • 양 < 10,000 상품/일 + 강력한 보호 없음 = 데이터 센터
  • 양 > 10,000 상품/일 + Wildberries/Ozon = 주거용
  • 인증이 필요한 파싱 + 계정 차단 위험 = 주거용
  • 러시아 도시별 지리적 타겟팅 필요 = 주거용
  • 중요한 프로젝트 + 차단에 대한 제로 내성 = 모바일

IP 회전 설정: 간격 및 전략

IP 회전은 특정 요청 수 또는 시간 후에 프록시 서버를 자동으로 변경하는 것입니다. 올바른 회전 설정은 차단 없이 안정적인 파싱의 핵심입니다.

프록시 회전 유형

1. 시간 기반 회전 (Time-based rotation)
IP는 고정 간격(5분, 10분, 30분)마다 변경됩니다. 가장 간단한 방법이지만 가장 효과적이지는 않습니다. 5분 동안 200개의 요청을 수행하는 경우, 플랫폼의 한계가 IP당 100개의 요청이라면 여전히 차단될 것입니다.

사용 시기: 낮은 부하의 주거용 프록시에 대해(각 IP당 50개 요청 이하). 예를 들어, Wildberries를 요청 간격 3-5초로 파싱하는 경우, 10분마다 회전하는 것이 최적입니다.

2. 요청 수 기반 회전 (Request-based rotation)
IP는 N개의 요청 후에 변경됩니다: 50, 100, 200. 시간 기반 회전보다 정확하지만 파서 코드에서 요청 수 카운터를 추적해야 합니다.

사용 시기: 데이터 센터 및 공격적인 파싱을 위해. 예를 들어, Ozon이 IP당 80개의 요청 후에 차단된다는 것을 알고 있다면 — 여유를 두고 70개의 요청마다 회전을 설정하십시오.

3. 요청마다 회전 (Per-request rotation)
각 요청은 새로운 IP를 통해 진행됩니다. 차단에 대한 최대 보호를 제공하지만 주거용 프록시의 경우 가장 비싼 전략입니다(새로운 연결을 설정하기 때문에 트래픽 소비가 증가합니다).

사용 시기: 가장 강력한 보호를 우회하기 위해(Cloudflare의 "Under Attack" 모드), 계정 차단 위험이 높은 파싱, 파싱을 추적하는 경쟁자의 데이터 수집을 위해.

인기 플랫폼에 대한 추천 회전 간격

플랫폼 프록시 유형 회전 간격 요청 간의 지연
Wildberries 주거용 5-10분마다 또는 50개의 요청마다 2-4초
Ozon 주거용 7-12분마다 또는 60개의 요청마다 3-5초
Yandex.Market 주거용 10-15분마다 또는 80개의 요청마다 2-3초
Avito (상품 카테고리) 데이터 센터 15-20분마다 또는 100개의 요청마다 1-2초
AliExpress 주거용 3-5분마다 또는 30개의 요청마다 4-6초

중요한 점: 이 숫자는 2024년 테스트 결과입니다. 마켓플레이스는 지속적으로 보호를 업데이트하므로 보수적인 설정(요청 수 감소, 지연 증가)으로 시작하고 차단 비율을 모니터링하며 점차 부하를 증가시키는 것이 좋습니다.

스마트 회전 전략

고정 간격 대신 서버 응답에 기반한 적응형 회전을 사용하십시오:

  • HTTP 429 (요청이 너무 많음) — 즉시 IP 변경 및 해당 IP를 30-60분 동안 블랙리스트에 추가합니다.
  • HTTP 403 (금지됨) 또는 CAPTCHA — IP 변경 및 요청 간의 지연을 50% 증가시킵니다.
  • HTTP 503 (서비스 사용 불가) — 문제는 프록시에 있지 않고 사이트 과부하일 수 있습니다. IP 변경 없이 30-60초 동안 일시 중지합니다.
  • 연속 성공 요청 > 100 — 지연을 약간 줄이거나 회전 전 요청 수를 늘릴 수 있습니다.

이 논리는 파서 코드에 구현되어 불필요한 회전을 피하면서 프록시 트래픽을 30-40%까지 절약할 수 있습니다.

Wildberries, Ozon 및 Yandex.Market의 안티봇 시스템 우회

현대 마켓플레이스는 간단한 User-Agent 검사부터 고급 브라우저 지문 인식까지 다단계 보호를 사용합니다. 단순한 프록시만으로는 부족하며, 포괄적인 우회 전략이 필요합니다.

1단계: 올바른 HTTP 헤더

파서가 전송해야 하는 최소한의 헤더 세트:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0

중요한 점:

  • User-Agent는 실제 브라우저와 일치해야 합니다. 최신 Chrome 120+, Firefox 121+ 버전을 사용하십시오. 오래된 버전(Chrome 90)은 빨간 깃발입니다.
  • Accept-Language는 러시아 플랫폼의 경우 "ru-RU"여야 합니다. "en-US" 헤더로 파싱하면 사이트는 불일치를 인식합니다(IP는 러시아에서 오지만 언어는 영어입니다).
  • Sec-Fetch-* 헤더는 Chrome 76+에서 등장했으며 현대 사이트에 필수적입니다. 이들의 부재는 오래된 파서를 드러냅니다.

2단계: JavaScript 실행

Wildberries와 Ozon은 페이지 로드 후 JavaScript를 통해 가격, 특성 및 재고를 로드합니다. requests/curl을 사용하는 파서가 HTML을 단순히 다운로드하면 빈 페이지 또는 더미 페이지를 받게 됩니다.

해결책: 헤드리스 브라우저를 사용하십시오 — Puppeteer (Node.js), Playwright (Python/Node.js), Selenium. 이들은 페이지를 완전히 렌더링하고 JS를 실행하여 최종 HTML을 가져옵니다.

헤드리스 브라우저의 문제: 사이트는 navigator.webdriver === true와 같은 매개변수, 플러그인 부재, Canvas의 특정 크기를 통해 쉽게 식별합니다. 헤드리스 Chrome의 식별 비율은 약 80-90%입니다.

문제 해결: 스텔스 모드를 위한 라이브러리를 사용하십시오:

  • puppeteer-extra-plugin-stealth (Node.js) — Puppeteer를 일반 Chrome처럼 위장하고 30개 이상의 지문 매개변수를 패치합니다.
  • undetected-chromedriver (Python) — 대부분의 안티봇 시스템이 식별하지 않는 패치된 Selenium ChromeDriver 버전입니다.
  • playwright-stealth (Python) — Firefox 및 WebKit을 지원하는 Playwright의 유사 버전입니다.

3단계: Cloudflare 및 DataDome 우회

Wildberries는 Cloudflare Bot Management를 사용하고 Ozon은 DataDome을 사용합니다. 이러한 시스템은 IP 및 헤더뿐만 아니라 행동도 분석합니다: 스크롤 속도, 마우스 움직임, 페이지 로드 시간.

Cloudflare Challenge의 징후: 콘텐츠 대신 "브라우저 확인 중..." 페이지가 5초 지연으로 나타납니다. 코드에서 이는 브라우저를 확인하는 JavaScript 챌린지입니다.

우회 방법:

  • FlareSolverr — Cloudflare Challenge를 자동으로 해결하는 프록시 서비스입니다. URL을 보내면 우회를 위한 쿠키를 반환합니다. 70-80%의 경우에 작동합니다.
  • Playwright 대기 — 헤드리스 브라우저에서 페이지를 로드하고 10-15초 동안 대기한 후(JS가 실행될 때까지) 쿠키를 추출하여 일반 HTTP 요청에서 사용합니다. 리소스를 절약합니다: 브라우저는 쿠키를 얻기 위해서만 필요하며, 이후에는 requests를 통해 파싱합니다.
  • 주거용 프록시 + 스텔스 브라우저 — 이 조합은 95% 이상의 성공적인 우회를 제공합니다. Cloudflare는 실제 사용자 IP와 올바른 브라우저 지문을 확인합니다.

중요: Cloudflare는 지속적으로 보호를 업데이트합니다. 2024년 12월에 작동했던 것이 2025년 3월에는 작동하지 않을 수 있습니다. 항상 백업 계획을 마련하십시오: 2Captcha/AntiCaptcha 서비스를 통한 수동 CAPTCHA 해결 또는 마켓플레이스 API 전환(가능한 경우).

4단계: 사용자 행동 모방

고급 안티봇 시스템은 행동 패턴을 추적합니다. 실제 사용자는 페이지를 스크롤하고 마우스를 움직이며 때때로 뒤로 돌아갑니다. 봇은 완벽한 2.000초 간격으로 상품 카드를 엽니다.

모방 방법:

  • 지연 랜덤화 — 고정된 3초 대신 random.uniform(2.5, 5.0)를 사용하십시오. 사용자의 주의를 분산시키는 드문 긴 대기(15-30초)를 추가하십시오.
  • 페이지 스크롤 — Puppeteer/Playwright에서 데이터 추출 전에 스크롤을 추가하십시오: await page.evaluate(() => window.scrollBy(0, 500)).
  • 마우스 움직임 — Puppeteer의 ghost-cursor 라이브러리는 커서의 현실적인 이동 경로를 생성합니다.
  • 검색을 통한 전환 — 상품 카드를 URL로 직접 열지 마십시오. 먼저 홈 페이지에 들어가 검색을 수행한 후 결과에서 상품을 클릭하십시오. 이는 자연스럽게 보입니다.

프록시 지원을 위한 인기 파싱 도구

상품 특성을 파싱하기 위해 처음부터 코드를 작성할 필요는 없습니다. 프록시 지원 및 자동 보호 우회를 갖춘 시각적 인터페이스의 준비된 도구가 있습니다.

Octoparse — 코드 없는 파서

설명: Windows/Mac용 데스크탑 애플리케이션으로 시각적 파서 생성기를 제공합니다. 페이지의 요소(상품 이름, 가격, 특성)를 클릭하면 프로그램이 자동으로 추출 규칙을 생성합니다.

프록시 지원: 내장되어 있습니다. 설정에서 프록시 목록을 지정하면 프로그램이 자동으로 회전합니다. HTTP, HTTPS, SOCKS5를 지원합니다. Bright Data, Smartproxy 공급자와의 통합이 있습니다.

장점: 코드를 필요로 하지 않으며, JavaScript 사이트에서 작동하고, 내장된 작업 스케줄러, Excel/CSV/JSON으로 내보내기.
단점: 월 75달러부터 시작하는 유료 구독, Python 코드보다 느림, 무료 버전에서 페이지 수에 대한 제한.

사용 시기: 소규모 프로젝트(50,000개 이하 상품)에 적합하며, 프로그래머가 아닌 경우 또는 빠른 프로토타입이 필요한 경우.

ParseHub — 클라우드 파서

설명: Octoparse와 유사하지만 클라우드에서 작동합니다. 데스크탑 애플리케이션에서 파서를 설정하고 ParseHub 서버에서 실행됩니다. 긴 작업(100,000개 이상의 상품 파싱)에 편리합니다.

프록시 지원: 유료 요금제에서만 제공됩니다(149달러/월부터). 자신의 프록시 목록을 업로드하거나 ParseHub의 내장 주거용 IP를 사용할 수 있습니다.

장점: 컴퓨터에 부담을 주지 않으며, 페이지 매핑 자동 처리, 통합을 위한 API.
단점: 비쌈, 느린 지원, 복잡한 사이트 설정의 어려움.

Scrapy (Python) — 프로그래머용

설명: Python으로 파서를 생성하기 위한 프레임워크입니다. 가장 유연하고 빠른 옵션으로 하루에 수백만 개의 상품을 파싱할 수 있습니다. 중간 수준의 Python 지식이 필요합니다.

프록시 지원: 미들웨어를 통해. 인기 있는 솔루션: scrapy-rotating-proxies(목록에서 회전), scrapy-proxy-pool(공급자 API와 통합). 설정하는 데 10-15분이 소요됩니다.

장점: 무료이며, 매우 빠르며(비동기 요청), 로직에 대한 완전한 제어, 방대한 커뮤니티.
단점: 코드를 작성해야 하며, JavaScript 사이트에서의 어려움(통합 필요).

사용 시기: 하루에 100,000개 이상의 상품을 처리하는 심각한 프로젝트에 적합하며, 팀에 프로그래머가 있는 경우.

Apify — 준비된 파서 마켓플레이스

설명: 인기 사이트를 위한 수천 개의 준비된 파서("액터"라고 함)를 제공하는 플랫폼입니다. Amazon, eBay, AliExpress를 위한 준비된 솔루션이 있습니다. 러시아 마켓플레이스에 대한 선택은 적지만 개발을 주문할 수 있습니다.

프록시 지원: 모든 액터에 내장되어 있습니다. Apify는 자체 주거용 프록시를 제공하며(트래픽 기준 결제) 자신의 프록시를 연결할 수 있습니다.

장점: 준비된 솔루션, 클라우드 실행, 자동화를 위한 API, 내장된 프록시.
단점: 비쌈(49달러/월부터 + 프록시 비용), 플랫폼 의존성, 사용자 정의 제한.

도구 비교

도구 코드 필요? 가격 속도 대상
Octoparse 아니요 75달러/월부터 중간 마케팅 담당자, 프로그래밍 없이 분석가
ParseHub 아니요 149달러/월부터 중간 클라우드 실행을 원하는 동일한 사용자
Scrapy 예 (Python) 무료 매우 빠름 프로그래머, 대량 데이터
Apify 아니요 (준비된 액터) 49달러/월부터 + 트래픽 높음 비즈니스, 준비된 솔루션이 필요한 경우
Puppeteer/Playwright 예 (JS/Python) 무료 중간 (무거운 브라우저) 프로그래머, 복잡한 JS 사이트

파서에서 프록시 단계별 설정

인기 도구를 예로 들어 프록시의 실제 설정을 살펴보겠습니다. 이 지침은 러시아 마켓플레이스뿐만 아니라 모든 마켓플레이스의 파싱에 적합합니다.

Octoparse에서 설정하기

1단계: Octoparse를 열고 새 파싱 작업을 만듭니다. 시작 페이지의 URL을 입력합니다(예: Wildberries의 상품 카테고리).

2단계: "Settings" → "Advanced Settings" → "Proxy" 메뉴로 이동합니다. "사용자 정의 프록시 사용"을 선택합니다.

3단계: 다음 형식으로 프록시를 추가합니다:

http://username:password@proxy-server.com:8080
socks5://username:password@proxy-server.com:1080

4단계: "Rotate proxy" 옵션을 활성화하고 회전 간격을 설정합니다. Wildberries의 경우 "50개의 요청마다 회전" 또는 "10분마다 회전"을 권장합니다.

5단계: "Test Proxy"를 클릭하십시오 — Octoparse가 각 프록시의 가용성을 확인합니다. 작동하지 않는 것을 목록에서 제거하십시오.

6단계: "Speed" 섹션에서 요청 간의 지연을 설정합니다: 주거용 프록시의 경우 2-4초, 데이터 센터의 경우 3-5초.

Scrapy (Python)에서 설정하기

1단계: 프록시 회전을 위한 라이브러리를 설치합니다:

pip install scrapy-rotating-proxies

2단계: 프록시 목록이 포함된 proxies.txt 파일을 생성합니다(각 줄에 하나씩):

http://user:pass@1.2.3.4:8080
http://user:pass@5.6.7.8:8080
socks5://user:pass@9.10.11.12:1080

3단계: Scrapy 프로젝트의 settings.py 파일에 다음을 추가합니다:

ROTATING_PROXY_LIST_PATH = 'proxies.txt'

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# 요청 간의 지연(초 단위)
DOWNLOAD_DELAY = 3

# 지연 랜덤화 (±50%)
RANDOMIZE_DOWNLOAD_DELAY = True

# 동시 요청 (주거용 프록시의 경우 16개 이하)
CONCURRENT_REQUESTS = 8

4단계: Scrapy는 각 요청 시 자동으로 프록시를 회전합니다. 프록시가 오류(HTTP 403, 429, 타임아웃)를 반환하면 "나쁜" 것으로 표시되고 회전에서 일시적으로 제외됩니다.

Puppeteer (Node.js)에서 설정하기

1단계: Puppeteer 및 스텔스 모드 플러그인을 설치합니다:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

2단계: 프록시 지원 스크립트를 생성합니다:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const proxyList = [
  'http://user:pass@proxy1.com:8080',
  'http://user:pass@proxy2.com:8080'
];

let currentProxyIndex = 0;

async function scrapeWithProxy(url) {
  const proxy = proxyList[currentProxyIndex];
  currentProxyIndex = (currentProxyIndex + 1) % proxyList.length;

  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${proxy}`]
  });

  const page = await browser.newPage();
  
  // 프록시 인증 (필요한 경우)
  await page.authenticate({
    username: 'user',
    password: 'pass'
  });

  await page.goto(url, { waitUntil: 'networkidle2' });
  
  // 데이터 추출
  const data = await page.evaluate(() => {
    return {
      title: document.querySelector('.product-title')?.innerText,
      price: document.querySelector('.product-price')?.innerText,
    };
  });

  await browser.close();
  return data;
}

이 스크립트는 주어진 URL을 파싱하기 위해 프록시를 사용하여 Puppeteer를 설정하는 방법을 보여줍니다.

```