Как избежать блокировки IP на Amazon при парсинге

Разберитесь в системе блокировки IP Amazon и узнайте проверенные стратегии обхода обнаружения. Настройка резидентных прокси, рандомизация запросов, геотаргетинг и процедуры восстановления.

Как избежать блокировки IP на Amazon при парсинге

Как работает система блокировки 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 заблокирован, вот как восстановиться:

  1. Немедленно остановитесь: не продолжайте отправлять запросы с заблокированного IP или соседних адресов.
  2. Смените IP: используйте свежий набор резидентных IP из другого диапазона. Большой пул ProxyHat гарантирует наличие чистых IP.
  3. Скорректируйте подход: пересмотрите паттерны запросов, задержки и заголовки перед возобновлением.
  4. Начните медленно: при возобновлении начните с низкой частоты запросов и увеличивайте постепенно.
  5. Подождите: блокировки 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.

Готовы начать?

Доступ к более чем 50 млн резидентных IP в 148+ странах с AI-фильтрацией.

Смотреть ценыРезидентные прокси
← Вернуться в Блог