피드로 돌아가기
The Vinted Arbitrage War: Building a Scraper That Doesn't Get IP-Banned
Dev.toDev.to
Backend

The Vinted Arbitrage War: Building a Scraper That Doesn't Get IP-Banned

웹 스크래핑 엔지니어가 Vinted 플랫폼의 IP 차단, 지역 제한, 커서 만료 문제를 직접 마주하고 자체 구축 대신 Apify 기반 솔루션 도입으로 유지보수 비용 제거

KazKN2026년 3월 25일12intermediate

Context

Vinted 플랫폼은 클라이언트 사이드 렌더링(JSON API 기반), JA3/JA4 TLS 핑거프린팅, IP 레퓨테이션 기반 차단, 19개 국가별 지역 제한 등 다층 봇 탐지 시스템을 운영하고 있다. 데이터센터 IP 기반 스크래퍼는 12개 요청 후 403 에러를 받으며, 비동기 요청 병렬화는 behavioral fingerprinting으로 인해 더 빠르게 차단된다.

Technical Solution

  • 클라이언트 사이드 렌더링 대응: BeautifulSoup 기반 HTML 스크래핑 대신 역공학된 JSON 엔드포인트(/api/v2/catalog/items) 호출로 변경
  • IP 차단 극복: 데이터센터 IP(AWS, GCP, Hetznel, OVH)에서 거주용 프록시(residential proxy)로 전환하되, 국가별 지역 제한 회피를 위해 대상 국가와 동일 지역의 거주용 프록시 사용
  • 지역별 세션 관리: 19개 European 마켓(vinted.fr, vinted.de, vinted.pl 등)에 대해 국가별로 쿠키, 토큰, 헤더를 독립적으로 관리
  • 페이지네이션 상태 관리: 커서 기반 페이지네이션에서 커서 만료(수 분 이내) 및 프록시 로테이션 시 커서 손실을 방지하기 위해 재시도 로직, 세션 리프레시, 커서 상태 저장소, dead-letter queue 구현
  • 비동기 요청 회피: asyncio + aiohttp 병렬화를 제거하고 sequential 요청으로 변경(1.5~3.5초 random sleep)

Impact

  • 설정 시간: 6주말 이상 → 약 4시간으로 단축
  • 월간 유지보수 비용: €80 이상의 프록시 비용 + 지속적인 개발 유지보수 → Apify 월간 수 유로의 컴퓨트 크레딧으로 변경
  • 운영 주기: 매 4시간마다 자동 실행(5개 국가, 각 3개 검색어) 가능

Key Takeaway

웹 스크래핑 인프라 문제(IP 차단, 지역 제한, 토큰 로테이션)는 자체 구축보다 전문 서비스(Apify 등)로 추상화하면, 개발 시간과 지속적인 유지보수 비용을 크게 감소시킬 수 있다. 특히 다국가 크로스보더 모니터링 같이 상태 관리가 복잡한 경우, 비용-편익 분석에서 자체 구축은 초기 비용으로만 보이지만 장기 운영 비용이 숨어있다.


다국가 지역 제한이 있는 플랫폼(Vinted, Airbnb, Indeed 등)의 가격 모니터링 또는 크로스보더 중재 파이프라인을 구축할 때, 단순 HTTP 클라이언트 라이브러리와 데이터센터 IP를 시작점으로 하지 말 것. 대신 (1) 대상 플랫폼의 API 엔드포인트를 역공학하고, (2) 국가별 거주용 프록시 풀을 확보하고, (3) 커서 유효성, 세션 토큰 로테이션, 지역별 rate limit을 상태 머신으로 관리하는 기반을 먼저 구축해야 한다. 단, 운영 비용(프록시 €80+/월, 개발 유지보수)과 구축 시간(6주말+)을 고려하면, 처음부터 Apify 같은 managed 스크래핑 서비스 도입이 더 경제적일 수 있다.

원문 읽기