A Amazon é uma mina de ouro para monitoramento de preços e pesquisa de produtos, além de ser um dos sites mais agressivamente defendidos da web. Faça scraping a partir de um IP de datacenter e você verá CAPTCHAs, o muro "Robot Check", preços rotativos ou um 503 em poucas requisições. Este guia cobre o que a Amazon verifica, a estratégia de proxy que sobrevive a isso e a disciplina de sessão que mantém os preços e os dados do Buy Box precisos.
Proxies de datacenter são um beco sem saída na Amazon em qualquer volume real — exits residenciais com ASNs limpos são o que sustenta a operação. Igualmente importante: iguale o país de saída ao marketplace que você está raspando. Puxar preços de amazon.de através de um exit dos EUA lhe dá preços, moeda e Buy Box dos EUA, o que silenciosamente corrompe seu conjunto de dados. Uma geografia de saída por marketplace.
A Amazon personaliza por sessão — adicionar ao carrinho, local de entrega e testes de preço vivem todos em cookies. Se você rotaciona o IP a cada requisição, você reseta esse contexto constantemente e obtém preços e vencedores do Buy Box inconsistentes. Mantenha uma sessão sticky para o scraping completo de um produto e, em seguida, rotacione no limite do produto ou da tarefa:
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))
Como no scraping de SERP do Google, a disciplina que o mantém vivo é a taxa por exit, não o tamanho do pool. Randomize os intervalos, limite a concorrência por IP e, quando você vir "Robot Check" ou um 503, pare de acessar esse exit e recue — tentar novamente em um IP sinalizado só prolonga o bloqueio.
Uma chamada simples de requests envia um JA3 que o marca como automação antes mesmo de a pontuação do IP entrar em jogo. Envie uma fingerprint de navegador com curl_cffi (acima) ou um navegador real — veja Como Burlar o TLS Fingerprinting com curl_cffi. Se a Amazon lançar um muro de CAPTCHA em JS, escale para um mecanismo de navegador real.
Novos usuários recebem 500MB ao se cadastrar, mais um bônus na primeira recarga. Oferta por tempo limitado.