← Назад в базу знаний

AliExpress через IPv6 прокси: парсинг товаров и сравнение цен

AliExpress через IPv6 прокси: парсинг товаров и сравнение цен

AliExpress отдаёт разный контент в зависимости от региона. Цены, наличие товара, доступные способы доставки — всё это меняется, если зайти с российского, немецкого или бразильского IP. Для парсинга это критично: один и тот же SKU может стоить 1200 рублей из Москвы и 980 рублей из Алматы. Разбираем, как IPv6-прокси решают задачу сбора данных и сравнения цен.

Почему IPv4-прокси быстро сдыхают

AliExpress использует многоуровневую защиту. Первый слой — rate limiting по IP. Второй — поведенческий анализ. Третий — TLS fingerprinting. С обычными IPv4-прокси из датацентров вы упираетесь в бан через 200-400 запросов. Пул /24 быстро выжигается: платформа банит всю подсеть целиком, как только видит подозрительную активность с нескольких адресов.

IPv6 меняет расклад. Провайдер выдаёт /64 — это 18 квинтиллионов адресов. Даже /48 даёт 65536 подсетей по /64. Ротация идёт не по одному адресу, а по целым блокам. AliExpress физически не может забанить /64 без риска отрезать легитимных пользователей мобильных операторов, где IPv6 раздаётся массово.

Плюс IPv6 дешевле. Провайдеры сдают /64 в аренду за копейки, потому что адресное пространство не дефицитное. Для парсинга маркетплейсов это главный аргумент.

Что именно отдаёт AliExpress по гео

Платформа определяет регион по нескольким сигналам. IP — основной. Дальше идут Accept-Language, cookie `aep_usuc_f` (там хранятся country, region, currency), заголовок `x-forwarded-for` если он есть. Приоритет — за IP.

Вот что меняется:

| Параметр | RU | DE | BR |

|---|---|---|---|

| Валюта по умолчанию | RUB | EUR | BRL |

| НДС в цене | включён | включён (19%) | включён (ICMS) |

| Срок доставки | 14-30 дней | 7-14 дней | 20-45 дней |

| Доступные склады | RU, CN | DE, PL, CN | BR, CN |

| Способ оплаты | карты РФ, СБП | SEPA, карты | Boleto, Pix |

Цена на один и тот же товар формируется из базовой стоимости в USD, региональной наценки, локальных налогов и логистики. Разница между регионами достигает 40%. Без гео-ротации вы видите только одну цену и строите неверную аналитику.

Как работает IPv6-прокси в парсинге AliExpress

Схема простая. У вас есть пул IPv6-адресов, привязанных к разным гео. Клиент (скрипт-парсер) шлёт запрос через прокси, AliExpress видит IP из нужного региона и отдаёт контент для этого региона. Меняете адрес — меняете регион.

Ключевой момент: IPv6-адрес должен быть «чистым». Если он уже засветился в парсинге, AliExpress может отдавать капчу или заглушку. Хорошие провайдеры дают residential или mobile IPv6, которые не отличаются от адресов обычных пользователей.

Второй момент — стабильность сессии. AliExpress привязывает корзину и историю просмотров к cookie + IP. Если IP меняется на каждом запросе, платформа может сбросить сессию и показать капчу. Для сбора цен это не критично, для авторизованного парсинга — критично.

Практика: запрос через IPv6-прокси

Проверяем, что прокси действительно IPv6 и отдаёт нужный регион:

```bash

curl -6 -x "http://[2001:db8:1234::1]:8080" \

-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \

-H "Accept-Language: de-DE,de;q=0.9" \

"https://ipv6.icanhazip.com"

```

Флаг `-6` заставляет curl использовать IPv6. Адрес в квадратных скобках — обязательное требование для IPv6 в URL. Если прокси отдаёт IPv4, значит либо он не поддерживает IPv6, либо вы стучитесь не туда.

Теперь запрос к самому AliExpress с получением цены:

```bash

curl -x "http://[2001:db8:1234::1]:8080" \

-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \

-H "Accept-Language: de-DE,de;q=0.9" \

-H "Cookie: aep_usuc_f=site=glo&c_tp=EUR®ion=DE&b_locale=de_DE" \

"https://de.aliexpress.com/item/1005006123456789.html" \

-o product_de.html

```

Cookie `aep_usuc_f` здесь дублирует гео. Если IP немецкий, а cookie российская, AliExpress может выбрать что-то одно. На практике IP весит больше, но лучше синхронизировать оба сигнала.

Python: пул IPv6 с ротацией

Для массового парсинга нужен пул адресов и логика ротации. Вот рабочий пример на requests с round-robin:

```python

import requests

from itertools import cycle

from time import sleep

PROXIES = [

"http://[2001:db8:1234::1]:8080",

"http://[2001:db8:1234::2]:8080",

"http://[2001:db8:1234::3]:8080",

"http://[2001:db8:1234::4]:8080",

]

GEO_HEADERS = {

"DE": {"Accept-Language": "de-DE,de;q=0.9"},

"RU": {"Accept-Language": "ru-RU,ru;q=0.9"},

"BR": {"Accept-Language": "pt-BR,pt;q=0.9"},

}

proxy_pool = cycle(PROXIES)

def fetch_price(item_id, geo):

proxy = next(proxy_pool)

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",

**GEO_HEADERS[geo],

"Cookie": f"aep_usuc_f=site=glo&c_tp={'EUR' if geo=='DE' else 'RUB'}®ion={geo}",

}

url = f"https://{geo.lower()}.aliexpress.com/item/{item_id}.html"

try:

r = requests.get(url, headers=headers, proxies={"http": proxy, "https": proxy}, timeout=15)

return r.status_code, len(r.text)

except requests.RequestException as e:

return None, str(e)

for i in range(20):

status, size = fetch_price("1005006123456789", "DE")

print(f"request {i}: status={status} size={size}")

sleep(1.5)

```

Пауза 1.5 секунды — не паранойя. AliExpress триггерит защиту при частоте выше 1 запроса в секунду с одного адреса. С пулом из 4 адресов можно держать 2-3 запроса в секунду суммарно.

Парсинг цены из HTML

AliExpress рендерит цену в нескольких местах. Основной путь — JSON внутри `