Comprendre le système d'interdiction IP d'Amazon
Amazon exploite l'un des systèmes anti-bot les plus sophistiqués sur Internet. Lorsque vos adresses IP sont interdites, vous perdez l'accès aux données de produits qui stimulent vos activités de tarification, de recherche et de veille concurrentielle. Comprendre comment Amazon détecte et interdit les IP est la première étape pour la prévenir.
Amazon ne bloque pas simplement les IP individuelles — il construit des profils comportementaux. Une seule IP suspecte pourrait déclencher des blocs mous (CAPTCHAs), tandis que les violations persistantes conduisent à des blocs durs (déni d'accès complet). Le système suit les modèles à travers les plages IP, donc obtenir une IP interdite peut augmenter l'examen des adresses voisines. Pour une compréhension complète des méthodes de détection, voir notre guide sur comment les systèmes anti-bot détectent les proxies.
Comment Amazon détecte le trafic automatisé
La détection d'Amazon fonctionne sur plusieurs couches simultanément.
Détection au niveau de la demande
| Signal | Ce que contrôle Amazon | Niveau de risque |
|---|---|---|
| Empreinte digitale TLS | La poignée de main TLS correspond aux bibliothèques bot connues (demandes Python, boucle) | Élevé |
| Ordre en-tête | En-têtes HTTP envoyés dans un ordre non-navigateur | Moyenne |
| En-têtes manquants | Absence de langage accepté, de codage accepté, etc. | Élevé |
| Utilisateur-Agent | Chaînes Utilisateur-Agent dépassées, invalides ou connues | Élevé |
| Gestion des cookies | Ne pas accepter ou renvoyer les cookies de session | Moyenne |
Détection comportementale
| Modèle | Désignation des marchandises | Niveau de risque |
|---|---|---|
| Intervalles fixes | Demandes arrivant à intervalles exacts (toutes les 5,0 secondes) | Élevé |
| Rampant séquentiel | Visiter les ASIN par ordre numérique ou alphabétique | Élevé |
| Pas de chemin de navigation | Sauter directement sur les pages de produits sans navigation | Moyenne |
| Volume de demande élevé | Des centaines de requêtes par minute à partir d'une IP | Critique |
| Pas d'exécution JavaScript | Pages chargées sans exécuter JavaScript | Moyenne |
Détection de niveau IP
Amazon gère des bases de données de gammes IP de datacenter et de fournisseurs de proxy connus. Les IP de Datacenter font immédiatement l'objet d'une surveillance accrue indépendamment du comportement. PI résidentielle commencer avec une confiance plus élevée parce qu'ils partagent des piscines avec de vrais acheteurs Amazon.
Types de blocs Amazon
Comprendre les différents types de blocs vous aide à réagir correctement.
Blocs mous (CAPTCHA)
La réponse la plus courante. Amazon sert une page CAPTCHA au lieu de données produit. Ceci est un avertissement — continuez de la même IP et vous allez passer à un bloc dur. Lorsque vous recevez un CAPTCHA, reculez immédiatement et passez à une nouvelle IP.
Blocs durs (503/403 erreurs)
Refus complet d'accès, en retournant généralement les codes de statut HTTP 503 ou 403. Les blocs durs peuvent durer des heures à des jours pour une IP spécifique. Une fois bloquée, cette IP est effectivement inutilisable pour Amazon jusqu'à l'expiration du bloc.
Manipulation du contenu
Amazon sert parfois différents contenus à des robots soupçonnés — prix incorrects, critiques manquantes ou données incomplètes sur les produits. Ceci est plus difficile à détecter parce que vous recevez une réponse de 200. Valider vos données grattées par rapport aux valeurs connues pour attraper cela.
A emporter : les CAPTCHA sont des signaux d'avertissement, pas seulement des obstacles. Traitez chaque CAPTCHA comme un indicateur que votre approche actuelle doit être ajustée.
Stratégies de prévention
1. Utiliser les proxies résidentielles
C'est le changement le plus important que vous puissiez faire. Les mandataires résidentiels utilisent des adresses IP assignées à de véritables abonnés Internet, ce qui rend vos demandes indistinguables des véritables acheteurs. Le pool de procurations résidentielles de ProxyHat couvre plus de 195 pays avec des millions de PI.
# ProxyHat residential proxy with geo-targeting
http://USERNAME-country-US:PASSWORD@gate.proxyhat.com:8080
# For Amazon.de
http://USERNAME-country-DE:PASSWORD@gate.proxyhat.com:8080
# For Amazon.co.uk
http://USERNAME-country-GB:PASSWORD@gate.proxyhat.com:80802. Mettre en œuvre une rotation intelligente
N'envoyez jamais plus de 5-10 requêtes d'une seule IP à Amazon. La passerelle de ProxyHat tourne automatiquement les IP par demande par défaut, mais vous devez également mettre en œuvre des contrôles au niveau de l'application.
import requests
import random
import time
PROXY_BASE = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
def make_request(url, max_retries=3):
"""Make a request with automatic retry on failure."""
for attempt in range(max_retries):
# Each request gets a fresh IP from the rotating proxy
proxies = {"http": PROXY_BASE, "https": PROXY_BASE}
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
}
try:
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
# Check for CAPTCHA
if "captcha" in response.text.lower() or response.status_code == 503:
print(f"CAPTCHA/block detected on attempt {attempt + 1}")
time.sleep(random.uniform(10, 30)) # Longer backoff
continue
if response.status_code == 200:
return response
except requests.RequestException:
time.sleep(random.uniform(5, 15))
return None3. Patterns de demande de randomisation
Chaque aspect de votre modèle de demande doit inclure le caractère aléatoire pour éviter la détection statistique.
import random
import time
def random_delay(min_sec=2, max_sec=7):
"""Add human-like random delay."""
delay = random.uniform(min_sec, max_sec)
# Occasionally add a longer pause (simulates reading a page)
if random.random() < 0.1: # 10% chance
delay += random.uniform(10, 30)
time.sleep(delay)
def shuffle_targets(urls):
"""Randomize the order of URLs to avoid sequential patterns."""
shuffled = urls.copy()
random.shuffle(shuffled)
return shuffled
def get_random_user_agent():
"""Return a realistic, current User-Agent string."""
agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
]
return random.choice(agents)4. Faire correspondre la géolocalisation au marché
L'accès amazon.com depuis une IP allemande ou amazon.de depuis une IP japonaise est un signal fort d'activité automatisée. Toujours correspondre à votre emplacement mandataire au marché cible.
| Marché | Pays mandataire | Configuration ProxyHat |
|---|---|---|
| amazon.com | États-Unis | USERNAME-country-US |
| États-Unis | Royaume-Uni | USERNAME-country-GB |
| Amazon.de | Allemagne | USERNAME-country-DE |
| amazon.co.jp | Japon | USERNAME-country-JP |
| amazon.fr | France | USERNAME-country-FR |
| Amazon.in | Inde | USERNAME-country-IN |
Vérifier Liste complète des emplacements de ProxyHat pour tous les pays soutenus.
5. Gérer correctement les séances
Amazon suit les sessions via des cookies. Accepter et renvoyer les cookies fait que vos demandes ressemblent plus à un vrai navigateur. Pour la navigation paginée (résultats de la recherche, commentaires), utilisez des sessions collantes pour maintenir le même IP et le même pot à cookies.
# Sticky session for paginated scraping
PROXY_SESSION = "http://USERNAME-session-amz{session_id}:PASSWORD@gate.proxyhat.com:8080"
def create_session(session_id):
"""Create a requests session with sticky proxy and cookies."""
session = requests.Session()
proxy = PROXY_SESSION.format(session_id=session_id)
session.proxies = {"http": proxy, "https": proxy}
session.headers.update({
"User-Agent": get_random_user_agent(),
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
})
return session6. Surveillez votre taux de réussite
Suivez votre taux HTTP 200, le taux CAPTCHA et le taux de bloc en temps réel. Réglez les seuils pour activer automatiquement votre racleur lorsque la détection augmente.
class SuccessTracker:
def __init__(self, captcha_threshold=0.1, block_threshold=0.05):
self.total = 0
self.success = 0
self.captchas = 0
self.blocks = 0
self.captcha_threshold = captcha_threshold
self.block_threshold = block_threshold
def record(self, status):
self.total += 1
if status == "success":
self.success += 1
elif status == "captcha":
self.captchas += 1
elif status == "block":
self.blocks += 1
@property
def should_throttle(self):
if self.total < 10:
return False
captcha_rate = self.captchas / self.total
block_rate = self.blocks / self.total
return captcha_rate > self.captcha_threshold or block_rate > self.block_threshold
@property
def success_rate(self):
return self.success / self.total if self.total > 0 else 0Récupération après une interdiction
Si une IP est interdite, voici comment récupérer:
- Arrêtez immédiatement: N'envoyez pas les demandes de la PI interdite ou des IP voisines.
- Interrupteur IP : Utilisez un nouvel ensemble de IP résidentielles d'une gamme différente. La grande piscine de ProxyHat vous assure d'avoir toujours des IP propres disponibles.
- Ajustez votre approche : Examinez les modèles de demande, les retards et les en-têtes avant de reprendre.
- Commencez lentement : Lors de la reprise, commencer par un faible taux de demande et augmenter progressivement.
- Attendez. Les interdictions d'Amazon expirent généralement dans les 24-48 heures pour les blocs souples et jusqu'à 7 jours pour les blocs durs sur des IP spécifiques.
Node.js Prévention de l'interdiction
Voici une implémentation équivalente Node.js en utilisant Le nœud SDK de ProxyHat.
const axios = require("axios");
const { HttpsProxyAgent } = require("https-proxy-agent");
const PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080";
const USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
];
async function safeAmazonRequest(url, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const agent = new HttpsProxyAgent(PROXY_URL);
try {
const response = await axios.get(url, {
httpsAgent: agent,
headers: {
"User-Agent": USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],
"Accept-Language": "en-US,en;q=0.9",
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
},
timeout: 30000,
validateStatus: () => true,
});
if (response.data.toLowerCase().includes("captcha") || response.status === 503) {
console.log(`CAPTCHA/block on attempt ${attempt + 1}`);
await new Promise((r) => setTimeout(r, 10000 + Math.random() * 20000));
continue;
}
if (response.status === 200) return response;
} catch (err) {
await new Promise((r) => setTimeout(r, 5000 + Math.random() * 10000));
}
}
return null;
}
// Random delay between requests
function randomDelay(minMs = 2000, maxMs = 7000) {
const delay = minMs + Math.random() * (maxMs - minMs);
return new Promise((r) => setTimeout(r, delay));
}Liste de contrôle pour la prévention
Utilisez cette liste de contrôle avant de lancer un racleur Amazon :
- Utilisation de procurations résidentielles (pas de datacenter)
- La géolocalisation de proxy correspond au marché cible
- Les chaînes User-Agent sont courantes et tournées
- Tous les en-têtes standard du navigateur sont inclus
- Les délais de demande sont randomisés (2-7 secondes minimum)
- Les URL sont mélangées, non traitées séquentiellement
- La manipulation des cookies est activée
- La détection CAPTCHA et la mise en marche automatique sont en place
- Le suivi du taux de réussite est actif
- La contre-valeur est limitée (démarrer avec 5-10 demandes parallèles)
A emporter des clés
- La détection d'Amazon est multicouche : les empreintes digitales, les modèles comportementaux et la réputation IP tout est important.
- Les procurations résidentielles ne sont pas négociables — les IP des centres de données font immédiatement l'objet d'un examen approfondi.
- Faites correspondre la géolocalisation proxy au marché cible d'Amazon.
- Tout randomiser : retards, Utilisateur-Agents, commande de demande et modèles de session.
- Traitez les CAPTCHA comme des alertes précoces et ajustez immédiatement.
- Surveiller les taux de succès et les gaz automatiquement lorsque la détection augmente.
Pour une installation complète de grattage Amazon, lisez notre Guide de grattage des données des produits Amazon et explorer Stratégie de démantèlement du commerce électronique. Commencez par Proxies résidentielles de ProxyHat pour un accès fiable à Amazon.






