피드로 돌아가기
Reverb Scraper: pull historical sold prices for any musical gear
Dev.toDev.to
Backend

TLS Fingerprinting 우회와 Proxy Rotation을 통한 Reverb 거래 데이터 대규모 추출

Reverb Scraper: pull historical sold prices for any musical gear

Devil Scrapes2026년 6월 2일10intermediate

Context

Reverb Price Guide의 대량 데이터 추출을 위한 공식 API 부재로 인한 제약 발생. 단순 HTTP 요청 시 Cloudflare의 TLS Fingerprinting 및 Rate Limit으로 인한 접근 차단 및 데이터 유실 문제 직면.

Technical Solution

  • Undocumented JSON API(/api/priceguide)를 식별하여 HTML 파싱 오버헤드 제거 및 데이터 정밀도 향상
  • curl-cffi 기반의 Chrome 131 TLS 및 HTTP/2 SETTINGS 프레임 모사를 통한 Browser Impersonation 구현
  • Residential Proxy Rotation과 Exponential Backoff(2s~30s) 전략을 결합하여 408/429/503 에러 대응 및 파이프라인 안정성 확보
  • Pydantic v2 기반의 Schema Validation을 적용하여 비정형 문자열 데이터(연도 표기법 등)의 무결성 유지
  • maxGuides 캡핑 메커니즘을 도입하여 대규모 쿼리에 따른 무분별한 Fan-out 및 비용 발생 방지

Impact

  • 거래당 $0.005의 비용으로 1,000건당 약 $5.05 수준의 경제적 추출 구조 달성
  • 60,000건 이상의 대규모 엔트리 대상 쿼리 제어를 통한 예측 가능한 리소스 소모 구현

1. 단순 User-Agent 변경이 아닌 TLS ClientHello 레벨의 지문 모사 필요성 검토

2. API 응답의 데이터 타입이 가변적(String/Int 혼용)일 경우 강제 형변환 대신 원본 보존 및 Validation Layer 구축

3. 외부 API 의존성 설계 시 Exponential Backoff와 Retry-After 헤더 준수 로직 필수 적용

원문 읽기