← 전체 글

FourA를 활용한 실시간 가격 추적기 구축

경쟁사의 가격은 매시간 변동합니다. 단 한 번의 API 호출과 기본적인 Python을 사용하여 수백 개의 상품 페이지에서 작동하는 자동화된 가격 추적기를 구축하는 방법을 소개합니다.

이커머스 가격 결정은 빠르게 진행됩니다. 경쟁사가 가격을 5% 내리면 몇 시간 만에 고객들이 이를 알아챕니다. 가장 먼저 알아채는 기업이 승리합니다.

이전에는 가격 모니터링 시스템을 구축하려면 proxy 인프라를 유지관리하고, 봇 탐지를 처리하며, 대상 사이트별로 맞춤형 스크래퍼를 작성해야 했습니다. FourA는 이러한 복잡성을 단일 API 호출로 축소합니다.

문제점

수동 가격 확인은 확장성이 없습니다. 경쟁사가 50곳뿐인 소규모 이커머스 비즈니스라도 수백 개의 상품 페이지를 추적해야 합니다. 하루에 3번씩만 확인해도 매일 1,000건 이상의 request가 발생하며, 각 요청은 차단되거나 rate limit에 걸리거나 사이트 리디자인으로 인해 실패할 수 있습니다.

접근 방식

FourA를 활용한 프로덕션 레디 가격 모니터링 파이프라인의 구성은 다음과 같습니다.

1. 제품 카탈로그 정의

경쟁사 URL과 가격이 표시되는 CSS 선택자로 구성된 정형화된 목록부터 시작합니다.

products = [
    {"sku": "WDG-001", "competitor": "Store A", "url": "https://store-a.com/widget", "selector": ".price-current"},
    {"sku": "WDG-001", "competitor": "Store B", "url": "https://store-b.com/products/widget", "selector": "[data-price]"},
]

2. 가져오기 및 파싱

FourA가 TLS 핑거프린팅, proxy 순환, JavaScript 렌더링과 같은 까다로운 작업을 처리합니다. 개발자는 URL을 전송하고 HTML을 반환받기만 하면 됩니다:

import requests
from bs4 import BeautifulSoup

def get_price(product):
    resp = requests.post("https://eu.api.foura.ai/api/v1/tasks", headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    }, json={"url": product["url"], "type": "proxy"})
    
    html = resp.json()["content"]
    soup = BeautifulSoup(html, "html.parser")
    el = soup.select_one(product["selector"])
    return float(el.text.strip().replace("$", "").replace(",", "")) if el else None

3. 시간에 따른 변경 사항 추적

결과를 데이터베이스나 CSV에 저장합니다. 알림을 위해 중요한 변경 사항에 플래그를 지정합니다:

if abs(new_price - last_price) / last_price > 0.03:  # 3% threshold
    send_alert(f"{product['competitor']} changed {product['sku']} from ${last_price} to ${new_price}")

4. Cron으로 예약 실행

시장의 가격 변동성에 따라 트래커를 매시간 또는 몇 시간 간격으로 실행합니다.

이 방식이 효과적인 이유

  • 유지 관리할 인프라가 없습니다. proxy 서버, 브라우저 팜, IP 로테이션 로직이 필요하지 않습니다.
  • 보안 변경 사항에 자동 대응합니다. FourA의 proxy 유형은 한 경로가 차단되면 다른 경로를 통해 자동으로 재시도합니다.
  • 선형적으로 확장됩니다. 100개의 제품을 추가해도 아키텍처 변경 없이 API 호출을 100회 더 늘리기만 하면 됩니다.

시작하기

위의 전체 파이프라인(알림 로직 제외)은 50줄 미만의 Python 코드로 실행됩니다. 50개 제품에서 정상 작동한다면 500개로 확장하는 것은 목록을 늘리는 것에 불과합니다. API 호출, 파싱, 스케줄링 모두 그대로 유지됩니다. 이것이 핵심입니다.

전체 예제 코드는 사용 가이드에서 확인할 수 있으며, API 문서에는 맞춤 설정에 필요한 모든 파라미터가 설명되어 있습니다.