Amazon es una mina de oro para el monitoreo de precios y la investigación de productos, y uno de los sitios más agresivamente defendidos de la web. Hazle scraping desde una IP de centro de datos y verás CAPTCHAs, el muro de "Robot Check", precios cambiantes o un 503 en apenas un puñado de solicitudes. Esta guía cubre qué verifica Amazon, la estrategia de proxy que la sobrevive y la disciplina de sesión que mantiene precisos los precios y los datos del Buy Box.
Los proxies de centro de datos son un callejón sin salida en Amazon a cualquier volumen real: los exits residenciales con ASNs limpios son los que lo sostienen. Igual de importante: haz coincidir el país del exit con el marketplace al que haces scraping. Sacar precios de amazon.de a través de un exit de EE. UU. te da precios, moneda y Buy Box de EE. UU., lo que corrompe silenciosamente tu conjunto de datos. Una geografía de exit por marketplace.
Amazon personaliza por sesión: añadir al carrito, ubicación de entrega y pruebas de precio viven todos en cookies. Si rotas la IP en cada solicitud, restableces ese contexto constantemente y obtienes precios y ganadores del Buy Box inconsistentes. Mantén una sesión sticky (persistente) durante todo el scrape de un producto, y luego rota en el límite del producto o la tarea:
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))
Igual que con el scraping de SERP de Google, la disciplina que te mantiene con vida es la tasa por exit, no el tamaño del pool. Aleatoriza los intervalos, limita la concurrencia por IP, y cuando veas "Robot Check" o un 503, deja de golpear ese exit y haz backoff — reintentar sobre una IP marcada solo alarga el bloqueo.
Una simple llamada con requests envía un JA3 que te marca como automatización antes incluso de que se aplique la puntuación de la IP. Envía una huella de navegador con curl_cffi (arriba) o un navegador real — consulta Evade el fingerprinting de TLS con curl_cffi. Si Amazon lanza un muro de CAPTCHA basado en JS, escala a un motor de navegador real.
Los nuevos usuarios reciben 500MB al registrarse, más un bono en la primera recarga. Oferta por tiempo limitado.