Amazon은 가격 모니터링과 제품 리서치의 보물창고이자 웹에서 가장 공격적으로 방어되는 사이트 중 하나입니다. 데이터센터 IP로 스크래핑하면 몇 번의 요청 안에 CAPTCHA, "Robot Check" 벽, 변동하는 가격, 또는 503을 보게 됩니다. 이 가이드는 Amazon이 무엇을 검사하는지, 그것을 견뎌내는 프록시 전략, 그리고 가격과 Buy Box 데이터를 정확하게 유지하는 세션 규율을 다룹니다.
데이터센터 프록시는 실제 볼륨에서는 Amazon에서 막다른 길입니다 — 깨끗한 ASN을 가진 주거용 출구가 이를 지탱하는 것입니다. 그만큼 중요한 것: 출구 국가를 스크래핑하는 마켓플레이스와 일치시키세요. 미국 출구로 amazon.de 가격을 가져오면 미국 가격, 통화, Buy Box를 받게 되어 데이터셋을 조용히 오염시킵니다. 마켓플레이스당 하나의 출구 지리.
Amazon은 세션별로 개인화합니다 — 장바구니 담기, 배송 위치, 가격 테스트는 모두 쿠키에 있습니다. 매 요청마다 IP를 로테이션하면 그 컨텍스트를 끊임없이 리셋하게 되어 일관성 없는 가격과 Buy Box 승자를 얻습니다. 제품의 전체 스크래핑 동안 스티키 세션을 유지한 다음, 제품 또는 작업 경계에서 로테이션하세요:
import itertools, time, random
from curl_cffi import requests
PROXIES = ["socks5h://USERNAME:[email protected]:913", "..."]
pool = itertools.cycle(PROXIES)
def scrape_product(asin, proxy):
# Same sticky exit for every page of this product
s = requests.Session(impersonate="chrome",
proxies={"http": proxy, "https": proxy})
detail = s.get(f"https://www.amazon.com/dp/{asin}")
offers = s.get(f"https://www.amazon.com/gp/offer-listing/{asin}")
return detail.text, offers.text
for asin in asins:
proxy = next(pool) # new sticky exit per product
if "Robot Check" in scrape_product(asin, proxy)[0]:
# flagged - back off, rotate, retry on a fresh exit
...
time.sleep(random.uniform(2.0, 5.0))
Google SERP 스크래핑과 마찬가지로, 당신을 살아있게 유지하는 규율은 풀 크기가 아니라 출구별 속도입니다. 간격을 무작위화하고, IP당 동시성을 제한하며, "Robot Check"나 503을 보면 그 출구를 더 이상 두드리지 말고 백오프하세요 — 플래그된 IP에 재시도하는 것은 차단을 길게 만들 뿐입니다.
평범한 requests 호출은 IP 점수가 적용되기도 전에 당신을 자동화로 표시하는 JA3를 보냅니다. curl_cffi(위 참조)나 실제 브라우저로 브라우저 지문을 보내세요 — curl_cffi로 TLS 지문 우회하기를 참고하세요. Amazon이 JS CAPTCHA 벽을 던지면 실제 브라우저 엔진으로 격상하세요.
신규 사용자는 가입 시 500MB를 받고, 첫 충전 시 추가 보너스를 받습니다. 기간 한정 혜택입니다.