Amazon est une mine d'or pour la surveillance des prix et la recherche de produits, et l'un des sites les plus agressivement défendus du web. Faites-en le scraping depuis une IP de centre de données et vous verrez des CAPTCHA, le mur « Robot Check », des prix changeants ou un 503 en seulement une poignée de requêtes. Ce guide couvre ce qu'Amazon vérifie, la stratégie de proxy qui y survit et la discipline de session qui maintient l'exactitude des prix et des données de la Buy Box.
Les proxies de centre de données sont une impasse sur Amazon à tout volume réel : les exits résidentiels avec des ASN propres sont ce qui le soutient. Tout aussi important : faites correspondre le pays de l'exit au marketplace que vous scrapez. Récupérer les prix d'amazon.de via un exit américain vous donne les prix, la devise et la Buy Box des États-Unis, ce qui corrompt silencieusement votre jeu de données. Une géographie d'exit par marketplace.
Amazon personnalise par session : l'ajout au panier, le lieu de livraison et les tests de prix vivent tous dans des cookies. Si vous faites tourner l'IP à chaque requête, vous réinitialisez constamment ce contexte et obtenez des prix et des gagnants de la Buy Box incohérents. Maintenez une session sticky pendant tout le scrape d'un produit, puis faites tourner à la limite du produit ou de la tâche :
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))
Comme avec le scraping des SERP de Google, la discipline qui vous garde en vie est le débit par exit, pas la taille du pool. Randomisez les intervalles, plafonnez la concurrence par IP, et quand vous voyez « Robot Check » ou un 503, arrêtez de solliciter cet exit et faites du backoff — réessayer sur une IP marquée ne fait qu'allonger le blocage.
Un simple appel requests envoie un JA3 qui vous marque comme automatisation avant même que le score de l'IP ne s'applique. Envoyez une empreinte de navigateur avec curl_cffi (ci-dessus) ou un vrai navigateur — voir Contourner le fingerprinting TLS avec curl_cffi. Si Amazon vous oppose un mur de CAPTCHA basé sur JS, passez à un véritable moteur de navigateur.
Les nouveaux utilisateurs reçoivent 500 Mo à l'inscription, plus un bonus sur la première recharge. Offre à durée limitée.