Как работает система блокировки IP на Amazon
Amazon использует одну из самых сложных антибот-систем в интернете. Когда ваши IP-адреса блокируются, вы теряете доступ к данным о товарах, которые обеспечивают ваше ценообразование, исследования и конкурентную разведку. Понимание того, как Amazon обнаруживает и блокирует IP — первый шаг к предотвращению блокировок.
Amazon не просто блокирует отдельные IP — он строит поведенческие профили. Один подозрительный IP может вызвать мягкие блокировки (CAPTCHA), тогда как постоянные нарушения приводят к жёстким блокировкам (полный отказ в доступе). Система отслеживает паттерны по диапазонам IP, поэтому блокировка одного адреса может усилить проверку соседних. Подробнее о методах обнаружения читайте в нашем руководстве о том, как антибот-системы обнаруживают прокси.
Как Amazon обнаруживает автоматический трафик
Обнаружение Amazon работает на нескольких уровнях одновременно.
Обнаружение на уровне запросов
| Сигнал | Что проверяет Amazon | Уровень риска |
|---|---|---|
| TLS-отпечаток | TLS-рукопожатие совпадает с известными бот-библиотеками (Python requests, curl) | Высокий |
| Порядок заголовков | HTTP-заголовки отправлены в небраузерном порядке | Средний |
| Отсутствие заголовков | Отсутствие Accept-Language, Accept-Encoding и т.д. | Высокий |
| User-Agent | Устаревшие, невалидные или известные бот-строки User-Agent | Высокий |
| Обработка Cookie | Не принимает или не возвращает сессионные cookie | Средний |
Поведенческое обнаружение
| Паттерн | Описание | Уровень риска |
|---|---|---|
| Фиксированные интервалы | Запросы поступают через точные интервалы (каждые 5.0 секунд) | Высокий |
| Последовательный обход | Посещение ASIN в числовом или алфавитном порядке | Высокий |
| Без навигации | Прямой переход к страницам товаров без просмотра | Средний |
| Высокий объём запросов | Сотни запросов в минуту с одного IP | Критический |
| Без выполнения JavaScript | Страницы загружены без выполнения JavaScript | Средний |
Обнаружение на уровне IP
Amazon ведёт базы данных диапазонов серверных IP и известных прокси-провайдеров. Серверные IP сразу подвергаются повышенной проверке, независимо от поведения. Резидентные IP начинают с более высокого уровня доверия, поскольку используют те же пулы, что и реальные покупатели Amazon.
Типы блокировок Amazon
Понимание различных типов блокировок помогает реагировать правильно.
Мягкие блокировки (CAPTCHA)
Самый распространённый ответ. Amazon показывает страницу CAPTCHA вместо данных о товаре. Это предупреждение — продолжите с того же IP и перейдёте к жёсткой блокировке. При получении CAPTCHA немедленно прекратите запросы и переключитесь на новый IP.
Жёсткие блокировки (ошибки 503/403)
Полный отказ в доступе, обычно с HTTP-кодами 503 или 403. Жёсткие блокировки могут длиться от нескольких часов до дней для конкретного IP. После жёсткой блокировки этот IP фактически непригоден для Amazon до истечения срока блокировки.
Манипуляция контентом
Amazon иногда показывает подозреваемым ботам другой контент — неправильные цены, отсутствующие отзывы или неполные данные о товаре. Это труднее обнаружить, потому что вы получаете ответ 200. Сверяйте собранные данные с известными значениями для выявления таких случаев.
Ключевой вывод: CAPTCHA — это предупредительные сигналы, а не просто препятствия. Воспринимайте каждую CAPTCHA как индикатор того, что ваш текущий подход нуждается в корректировке.
Стратегии предотвращения
1. Используйте резидентные прокси
Это самое значимое изменение, которое вы можете сделать. Резидентные прокси используют IP-адреса, назначенные реальным интернет-абонентам, что делает ваши запросы неотличимыми от запросов настоящих покупателей. Пул резидентных прокси ProxyHat охватывает 195+ стран с миллионами IP.
# Резидентный прокси ProxyHat с геотаргетингом
http://USERNAME-country-US:PASSWORD@gate.proxyhat.com:8080
# Для Amazon.de
http://USERNAME-country-DE:PASSWORD@gate.proxyhat.com:8080
# Для Amazon.co.uk
http://USERNAME-country-GB:PASSWORD@gate.proxyhat.com:8080
2. Реализуйте интеллектуальную ротацию
Никогда не отправляйте более 5-10 запросов с одного IP к Amazon. Шлюз ProxyHat автоматически ротирует IP при каждом запросе по умолчанию, но вы также должны реализовать контроль на уровне приложения.
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):
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)
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))
continue
if response.status_code == 200:
return response
except requests.RequestException:
time.sleep(random.uniform(5, 15))
return None
3. Рандомизируйте паттерны запросов
Каждый аспект паттерна запросов должен включать рандомизацию для избежания статистического обнаружения.
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)
if random.random() < 0.1: # 10% шанс длинной паузы
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. Сопоставляйте геолокацию с маркетплейсом
Доступ к amazon.com с немецкого IP или к amazon.de с японского IP — сильный сигнал автоматизированной активности. Всегда сопоставляйте локацию прокси с целевым маркетплейсом.
| Маркетплейс | Страна прокси | Конфигурация ProxyHat |
|---|---|---|
| amazon.com | США | USERNAME-country-US |
| amazon.co.uk | Великобритания | USERNAME-country-GB |
| amazon.de | Германия | USERNAME-country-DE |
| amazon.co.jp | Япония | USERNAME-country-JP |
| amazon.fr | Франция | USERNAME-country-FR |
| amazon.in | Индия | USERNAME-country-IN |
Полный список поддерживаемых стран смотрите на странице локаций ProxyHat.
5. Правильно обрабатывайте сессии
Amazon отслеживает сессии через cookie. Приём и возврат cookie делает ваши запросы более похожими на настоящий браузер. Для постраничной навигации (результаты поиска, отзывы) используйте sticky-сессии для сохранения одного IP и набора cookie.
# Sticky-сессия для постраничного скрапинга
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 session
6. Мониторьте процент успешных запросов
Отслеживайте долю HTTP 200, частоту CAPTCHA и частоту блокировок в реальном времени. Установите пороги для автоматического замедления парсера при росте обнаружения.
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 0
Восстановление после блокировки
Если IP заблокирован, вот как восстановиться:
- Немедленно остановитесь: не продолжайте отправлять запросы с заблокированного IP или соседних адресов.
- Смените IP: используйте свежий набор резидентных IP из другого диапазона. Большой пул ProxyHat гарантирует наличие чистых IP.
- Скорректируйте подход: пересмотрите паттерны запросов, задержки и заголовки перед возобновлением.
- Начните медленно: при возобновлении начните с низкой частоты запросов и увеличивайте постепенно.
- Подождите: блокировки Amazon обычно снимаются через 24-48 часов для мягких блокировок и до 7 дней для жёстких на конкретных IP.
Предотвращение блокировок на Node.js
Вот эквивалентная реализация на Node.js с использованием Node SDK от 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;
}
function randomDelay(minMs = 2000, maxMs = 7000) {
const delay = minMs + Math.random() * (maxMs - minMs);
return new Promise((r) => setTimeout(r, delay));
}
Чек-лист предотвращения блокировок
Используйте этот чек-лист перед запуском любого парсера Amazon:
- Используются резидентные прокси (не серверные)
- Геолокация прокси соответствует целевому маркетплейсу
- Строки User-Agent актуальны и ротируются
- Все стандартные браузерные заголовки включены
- Задержки между запросами рандомизированы (минимум 2-7 секунд)
- URL перемешаны, а не обрабатываются последовательно
- Обработка cookie включена
- Обнаружение CAPTCHA и автоматический откат реализованы
- Мониторинг процента успешных запросов активен
- Параллельность ограничена (начинайте с 5-10 параллельных запросов)
Ключевые выводы
- Обнаружение Amazon многоуровневое: отпечатки запросов, поведенческие паттерны и репутация IP играют роль.
- Резидентные прокси обязательны — серверные IP подвергаются немедленной усиленной проверке.
- Сопоставляйте геолокацию прокси с целевым маркетплейсом Amazon.
- Рандомизируйте всё: задержки, User-Agent, порядок запросов и паттерны сессий.
- Воспринимайте CAPTCHA как ранние предупреждения и корректируйте подход немедленно.
- Мониторьте процент успешных запросов и автоматически замедляйтесь при росте обнаружения.
Для полной настройки парсинга Amazon читайте наше руководство по парсингу данных товаров Amazon и изучите полную стратегию скрапинга e-commerce. Начните с резидентных прокси ProxyHat для надёжного доступа к Amazon.






