Прагматичный гайд по скрейпингу AliExpress для дропшипперов в 2025 году

Разбираем структуру AliExpress, мобильные API-эндпоинты, антибот-защиту Alibaba и даём готовые Python-примеры скрейпинга через резидентные прокси — для дропшиппинг-тулов и product-research стартапов.

Прагматичный гайд по скрейпингу AliExpress для дропшипперов в 2025 году

Если вы строите инструмент для исследования товаров на AliExpress, вы уже знаете: каталог огромен, цены меняются ежедневно, а лучшие продавцы появляются и исчезают за неделю. Ручной мониторинг мёртв — нужен автоматизированный сбор. Но AliExpress агрессивно блокирует ботов. Этот гайд покажет, как обойти антибот-стек Alibaba, использовать мобильные API вместо парсинга HTML и настроить стабильный пайплайн на Python с резидентными прокси.

Структура AliExpress — что и где скрейпить

AliExpress — это не одна страница, а набор из четырёх основных типов контента, каждый со своей структурой и логикой обновления.

Страницы поиска

URL: https://www.aliexpress.com/w/wholesale-KEYWORD.html. Поиск возвращает список товаров с пагинацией (~60 товаров на страницу). Параметры фильтрации (SortType=price_asc, shipCountry=RU) можно передавать в query-string. Проблема: при повторных запросах с одного IP результаты быстро редуцируются, а после 3–5 страниц выдача обрезается.

Карточки товаров

URL: https://www.aliexpress.com/item/ITEM_ID.html. Содержат заголовок, изображения, варианты SKU, цену, рейтинг, количество заказов, информацию о доставке и продавце. На десктопе данные частично рендерятся через JavaScript — в исходном HTML нет полного JSON.

Страницы магазинов

URL: https://www.aliexpress.com/store/STORE_ID. Список всех товаров конкретного продавца с фильтрами по категории и сортировкой. Полезно для мониторинга конкурентов и отслеживания новых листингов.

Ленты популярных товаров

AliExpress регулярно обновляет подборки trending-товаров — «Top Brands», «Super Deals», «Choice». Эти фиды — золотая жила для дропшипперов: именно здесь можно найти товары с растущим спросом до того, как они появятся в инструментах конкурентов.

Антибот-стек Alibaba Group

Alibaba — одна из самых продвинутых компаний в мире по защите от автоматизированного доступа. Вот с чем вы столкнётесь:

  • Web Application Firewall (WAF) — фильтрация по IP-репутации, частоте запросов, геолокации. Сигнатуры датацентерных IP блокируются мгновенно.
  • JavaScript-челленджи — при подозрительном трафике сервер возвращает JS, который вычисляет fingerprint браузера. Без headless-браузера не пройти.
  • Rate limiting — приблизительно 80–120 запросов в минуту с одного IP до мягкого бана (HTTP 429 или пустой ответ). Жёсткий бан наступает быстрее, если IP из датацентерного диапазона.
  • CAPTCHA — AliExpress использует AliCaptcha (аналог reCAPTCHA) на поиске и при подозрительном поведении. Решение стоит $1–3 за 1000 капч, но это замедляет пайплайн.
  • Мобильный TLS-fingerprinting — мобильные API проверяют TLS-отпечаток. Библиотека tls_client в Python помогает имитировать реальный мобильный клиент.
Вывод: скрейпить AliExpress с датацентерных прокси — пустая трата времени. Резидентные и мобильные прокси — единственный рабочий подход для стабильного сбора.

API vs HTML — почему мобильные эндпоинты лучше

Вот ключевое решение: не парсьте HTML. У AliExpress есть мобильные API-эндпоинты, которые возвращают чистый JSON с richer-данными, чем десктопный HTML. Это быстрее, стабильнее и даёт больше информации.

Критерий Десктопный HTML Мобильный API
Формат ответа HTML + встроенный JSON в <script> Чистый JSON
Парсинг BeautifulSoup / XPath, хрупкий Прямой доступ к полям
Данные по SKU Частичные, требуют JS-рендеринга Полная матрица вариантов
Стоимость доставки Только после JS-рендеринга По стране назначения в одном запросе
Скорость ~2–4 сек на страницу (с рендером) ~0.5–1 сек на запрос
Стабильность при изменении UI Низкая — вёрстка часто меняется Высокая — API-контракты стабильнее
Антибот-защита Полная (WAF + JS-челлендж + CAPTCHA) Умеренная (rate-limit + TLS-fingerprint)

Ключевые мобильные API-эндпоинты

AliExpress использует префикс m. и API-пути вида /aeglodapi. Вот рабочие паттерны:

  • Поиск товаров: https://m.aliexpress.com/aeglodapi/search/items?keyword=KEYWORD&page=1
  • Детали товара: https://m.aliexpress.com/aeglodapi/item/detail?itemId=ITEM_ID
  • Варианты SKU: https://m.aliexpress.com/aeglodapi/item/sku?itemId=ITEM_ID
  • Стоимость доставки: https://m.aliexpress.com/aeglodapi/logistics/freight?itemId=ITEM_ID&country=RU
  • Товары магазина: https://m.aliexpress.com/aeglodapi/store/items?storeId=STORE_ID&page=1

Заголовки должны имитировать мобильное приложение:

# Минимальные заголовки для мобильного API AliExpress
MOBILE_HEADERS = {
    "User-Agent": "AliApp(AE/8.53.2;Android;12;phone)",
    "X-Client-Type": "android",
    "X-App-Version": "8.53.2",
    "Accept": "application/json",
    "Accept-Language": "en-US",
}

Python-пример: скрейпинг мобильного API через резидентные прокси

Ниже — готовый скрипт для поиска trending-товаров через мобильный API AliExpress с ротацией IP через ProxyHat.

import requests
import time
import json
from datetime import datetime

PROXY_URL = "http://user-country-US:PASSWORD@gate.proxyhat.com:8080"
PROXIES = {"http": PROXY_URL, "https": PROXY_URL}

HEADERS = {
    "User-Agent": "AliApp(AE/8.53.2;Android;12;phone)",
    "X-Client-Type": "android",
    "X-App-Version": "8.53.2",
    "Accept": "application/json",
    "Accept-Language": "en-US",
}

def search_aliexpress(keyword: str, page: int = 1) -> dict:
    """Поиск товаров через мобильный API AliExpress."""
    url = "https://m.aliexpress.com/aeglodapi/search/items"
    params = {
        "keyword": keyword,
        "page": page,
        "sortType": "bestMatch",
    }
    resp = requests.get(
        url, headers=HEADERS, params=params,
        proxies=PROXIES, timeout=15
    )
    resp.raise_for_status()
    return resp.json()

def get_item_detail(item_id: str) -> dict:
    """Получить детали товара по ID."""
    url = "https://m.aliexpress.com/aeglodapi/item/detail"
    params = {"itemId": item_id}
    resp = requests.get(
        url, headers=HEADERS, params=params,
        proxies=PROXIES, timeout=15
    )
    resp.raise_for_status()
    return resp.json()

def find_trending_products(keyword: str, top_n: int = 20):
    """Найти trending-товары по ключевому слову."""
    data = search_aliexpress(keyword)
    items = data.get("result", {}).get("itemList", [])[:top_n]
    results = []
    for item in items:
        detail = get_item_detail(str(item["itemId"]))
        results.append({
            "item_id": item["itemId"],
            "title": item.get("title", ""),
            "price": detail.get("price", {}).get("minPrice", ""),
            "orders": item.get("tradeCount", 0),
            "rating": item.get("starRating", 0),
            "store_id": item.get("storeId", ""),
            "scraped_at": datetime.utcnow().isoformat(),
        })
        time.sleep(1.5)  # throttle between detail requests
    return results

if __name__ == "__main__":
    trending = find_trending_products("wireless earbuds")
    for p in trending:
        print(json.dumps(p, ensure_ascii=False))

Пример усечённого ответа от мобильного API поиска:

{
  "result": {
    "itemList": [
      {
        "itemId": "3256804606318997",
        "title": "TWS Wireless Earbuds Bluetooth 5.3 ...",
        "minPrice": "3.45",
        "maxPrice": "12.99",
        "tradeCount": 5420,
        "starRating": 4.6,
        "storeId": "912074614",
        "imageUrl": "https://ae01.alicdn.com/kf/..."
      }
    ]
  }
}

Почему резидентные прокси — обязательно

Мобильные API AliExpress проверяют IP-адрес. Датацентерные IP определяются по ASN и получают HTTP 403 или пустой ответ. Резидентные IP выглядят как реальные пользователи. Для максимальной стабильности используйте мобильные прокси — они эмулируют трафик реальных мобильных устройств, что идеально совпадает с заголовками мобильного приложения.

Настройка стики-сессии ProxyHat для серий запросов к одному товару:

# Sticky-сессия на 10 минут для последовательных запросов
PROXY_URL = (
    "http://user-session-myorder123-country-US:PASSWORD"
    "@gate.proxyhat.com:8080"
)
PROXIES = {"http": PROXY_URL, "https": PROXY_URL}

Обработка вариантов SKU, стоимости доставки и репутации продавца

Варианты SKU (варианты товаров)

Один товар на AliExpress может иметь 5–50+ вариантов (цвет, размер, комплектация). Каждый вариант — отдельный SKU с собственной ценой, остатком и SKU-ID. Мобильный API возвращает полную матрицу вариантов в поле skuInfo.

def parse_sku_matrix(detail: dict) -> list[dict]:
    """Разобрать матрицу SKU из деталей товара."""
    sku_items = detail.get("skuInfo", {}).get("skuList", [])
    variants = []
    for sku in sku_items:
        variants.append({
            "sku_id": sku.get("skuId"),
            "price": sku.get("price"),
            "stock": sku.get("availQuantity", 0),
            "color": sku.get("color", ""),
            "size": sku.get("size", ""),
            "sku_attr": sku.get("skuAttr", ""),
        })
    return variants

# Пример результата:
# [
#   {"sku_id": "14:193#Blue;5:100014064", "price": "3.45",
#    "stock": 892, "color": "Blue", "size": "S"},
#   {"sku_id": "14:193#Red;5:100014064", "price": "3.99",
#    "stock": 341, "color": "Red", "size": "S"},
# ]

Важно для дропшипперов: цена и остатки различаются по SKU. Товар за $3.45 может быть только для непопулярного цвета, а топовый вариант — за $12.99. Собирайте все SKU, а не только минимальную цену.

Стоимость доставки по стране назначения

Стоимость доставки — критический параметр для дропшиппинга. API логистики возвращает список методов доставки с ценами и сроками для конкретной страны:

def get_shipping_cost(item_id: str, country: str = "RU") -> list[dict]:
    """Получить стоимость доставки товара в указанную страну."""
    url = "https://m.aliexpress.com/aeglodapi/logistics/freight"
    params = {"itemId": item_id, "country": country}
    resp = requests.get(
        url, headers=HEADERS, params=params,
        proxies=PROXIES, timeout=15
    )
    resp.raise_for_status()
    data = resp.json()
    shipping_options = []
    for opt in data.get("result", {}).get("freightList", []):
        shipping_options.append({
            "carrier": opt.get("company", ""),
            "cost": opt.get("freightAmount", {}).get("value", ""),
            "currency": opt.get("freightAmount", {}).get("currency", ""),
            "estimated_days": opt.get("deliveryTime", ""),
            "tracking": opt.get("tracking", False),
        })
    return shipping_options

Репутация продавца

Мобильный API возвращает ключевые метрики продавца в поле storeInfo:

  • storeRating — общий рейтинг магазина (1–5)
  • positiveFeedbackRate — процент положительных отзывов (ищите >95%)
  • tradeCount — общее количество заказов
  • yearsOnPlatform — сколько лет на платформе

Для дропшиппинга фильтруйте: рейтинг ≥ 4.7, positiveFeedbackRate ≥ 96%, минимум 6 месяцев на платформе.

Свежесть данных — как часто обновляются цены и остатки

AliExpress — высокодинамичная площадка. Вот что нужно знать о частоте изменений:

Тип данных Частота изменений Рекомендуемая частота скрейпинга
Цена товара 1–3 раза в день (промо — ежечасно) Каждые 4–6 часов
Остатки на складе Несколько раз в час Каждые 1–2 часа для критичных товаров
Количество заказов Обновляется раз в сутки Раз в день
Рейтинг/отзывы Ежедневно Раз в день
Стоимость доставки Редко (раз в неделю) Раз в неделю
Новые листинги Постоянно Каждые 2–4 часа для мониторинга

Стратегия скрейпинга: не скрейпьте всё каждый час. Разделите товары на три приоритета:

  1. Hot-товары (top 100 по продажам) — обновляйте каждые 2 часа.
  2. Мониторинг конкурентов (500–2000 товаров) — каждые 6 часов.
  3. Полный каталог (десятки тысяч) — раз в сутки для обнаружения новых листингов.

Это снижает нагрузку в 5–10 раз по сравнению с «скрейпить всё каждые 30 минут» и сохраняет свежесть данных там, где это критично.

Практические рекомендации по стабильности

Ротация IP и rate limiting

  • Держите не более 40 запросов в минуту на один IP-адрес.
  • Используйте ротацию IP для поиска и стики-сессии для серий запросов к одному товару.
  • При получении HTTP 429 — пауза 60 секунд и смена IP.
  • При получении пустого ответа — проверьте заголовки и TLS-fingerprint.

Геотаргетинг

AliExpress показывает разные цены и доступность товаров в зависимости от страны. Если ваш целевой рынок — США, используйте прокси с country-US. Для Европы — country-DE. Это критично для корректной оценки стоимости доставки и локальных промо-акций.

Обработка ошибок

  • Всегда проверяйте HTTP-статус ответа.
  • Если JSON-ответ содержит "errorCode": "system.error" — это блокировка, смените IP.
  • Реализуйте exponential backoff: 1 сек → 2 сек → 4 сек → 8 сек, затем смена IP.
  • Храните raw-ответы в S3/GCS для повторной обработки без повторного скрейпинга.

Ключевые выводы

  • Не парсьте HTML — мобильные API AliExpress возвращают чистый JSON с полными данными по SKU, доставке и продавцу.
  • Используйте резидентные или мобильные прокси — датацентерные IP блокируются Alibaba мгновенно.
  • Имитируйте мобильное приложение — правильные заголовки и TLS-fingerprint обязательны для мобильных API.
  • Собирайте все SKU, не только минимальную цену — варианты могут отличаться в 3–4 раза.
  • Три уровня приоритета для частоты скрейпинга — горячие товары каждые 2 часа, мониторинг каждые 6 часов, полный каталог раз в сутки.
  • Геотаргетинг прокси определяет цены и доступность — используйте IP целевой страны.

Готовы начать? Настройте резидентные прокси ProxyHat за пару минут и запустите первый скрейпинг-пайплайн уже сегодня. А если нужна помощь с конкретным кейсом — посмотрите наши кейсы по веб-скрейпингу.

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

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

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