Парсинг Wildberries и Ozon: почему IPv6 прокси не банят быстрее IPv4
Содержание
- Парсинг Wildberries и Ozon: почему IPv6 прокси не банят быстрее IPv4
- Анатомия блокировки: как работают антибот-системы
- Почему IPv4-прокси умирают быстро
- IPv6: математика против банов
- Как банят IPv6: методы и их ограничения
- Практика: настройка парсера под IPv6
- Настройка Linux для IPv6-прокси
- /etc/sysctl.conf
- Сравнение прокси: IPv4 vs IPv6
- Кейс: парсинг карточек WB с IPv6
- Кейс: отзывы Ozon с IPv4-пула
- Кейс: массовая проверка цен на WB
- Тонкости работы с IPv6-прокси
- Выводы
Парсинг Wildberries и Ozon: почему IPv6 прокси не банят быстрее IPv4
Маркетплейсы закручивают гайки. Wildberries и Ozon используют антибот-системы, которые палят датацентровые IPv4 за считанные минуты. Парсеры на классических прокси живут час-два, потом — капча или блокировка по IP.
А IPv6-адреса работают. Не вечно, но заметно дольше. Разбираемся, почему так происходит и как это использовать.
Анатомия блокировки: как работают антибот-системы
Wildberries использует собственную систему защиты на базе анализа поведения и репутации IP. Ozon — связку из DataDome и внутренних алгоритмов. Обе системы собирают сигналы: частота запросов, заголовки, тайминги, история IP.
Ключевой параметр — репутация подсети. Если с /24 (256 адресов) идёт аномальный трафик, банят всю подсеть. У IPv4 это фатально: подсеть маленькая, адресов мало, аренда дорогая.
С IPv6 всё иначе. Провайдер выдаёт /64 — это 18 квинтиллионов адресов. Для антибота это не подсеть, а океан. Отслеживать репутацию /64 сложно, дорого и бессмысленно — там могут быть миллионы реальных пользователей.
Почему IPv4-прокси умирают быстро
Датацентровые IPv4 — это конечный ресурс. Провайдеры прокси выдают одни и те же адреса сотням клиентов. Антиботы ведут базы таких подсетей и банят их превентивно.
Пример: прокси-провайдер покупает /24 у Hetzner. Эти адреса уже светились в спам-базах, использовались для атак. Репутация нулевая с момента покупки. Парсер отправляет 100 запросов в минуту — и через час блокировка.
IPv4-пулы прокси-сервисов — это зоопарк из адресов с убитой репутацией. Каждый новый клиент получает адреса, которые уже банились десятки раз.
IPv6: математика против банов
У IPv6 другая экономика. Один /64 стоит копейки. Провайдеры прокси выдают клиентам целые подсети, а не отдельные адреса.
Смотрите на цифры: /64 — это 18 446 744 073 709 551 616 адресов. Даже если антибот забанит /120 (256 адресов), у вас останется ещё 72 квадриллиона подсетей по 256 адресов.
Парсер может ротировать адреса каждые N запросов. С IPv4 вы ограничены пулом в 100-1000 адресов. С IPv6 — практически бесконечны.
Как банят IPv6: методы и их ограничения
Антиботы не сидят сложа руки. Они пытаются банить IPv6 по префиксам. Ozon и Wildberries используют /64 и /48 как единицу блокировки.
Но тут возникает проблема: /64 может содержать запросы от тысяч реальных пользователей. Забанишь /64 — потеряешь кучу легитимного трафика. Поэтому пороги срабатывания для IPv6 выше.
DataDome банит IPv6 по /64 только при явных аномалиях: 1000+ запросов в минуту с одного адреса. Для IPv4 порог — 50-100 запросов. Разница в 10-20 раз.
Практика: настройка парсера под IPv6
Для работы с IPv6 нужно переписывать логику ротации. Классический подход с пулом адресов не работает — нужна генерация адресов на лету.
```python
import random
import socket
import requests
def generate_ipv6(prefix):
suffix = ''.join(format(random.randint(0, 255), '02x') for _ in range(8))
return f"{prefix}:{suffix[:4]}:{suffix[4:]}"
prefix = "2a01:4f8:1c1c:1a2b"
for i in range(100):
ip = generate_ipv6(prefix)
proxies = {
"http": f"http://[\${ip}]:8080",
"https": f"http://[\${ip}]:8080"
}
try:
response = requests.get("https://www.wildberries.ru", proxies=proxies, timeout=10)
print(f"Request {i}: {response.status_code} from {ip}")
except Exception as e:
print(f"Request {i} failed: {e}")
```
Каждый запрос — с нового адреса. Антибот видит трафик с разных IP одной подсети. Для него это разные пользователи.
Настройка Linux для IPv6-прокси
Ядро Linux по умолчанию не оптимизировано под массовое использование IPv6-адресов. Нужно править параметры:
```bash
/etc/sysctl.conf
net.ipv6.conf.all.addr_gen_mode = 0
net.ipv6.conf.default.addr_gen_mode = 0
net.ipv6.ip_nonlocal_bind = 1
```
Первый параметр включает EUI-64 генерацию адресов. Второй — позволяет bind на несуществующие адреса. Это критично для прокси-серверов.
Сравнение прокси: IPv4 vs IPv6
Вот таблица по опыту работы с парсингом WB и Ozon за последние полгода:
| Параметр | IPv4 | IPv6 |
|----------|------|------|
| Среднее время жизни при парсинге WB | 15-40 минут | 6-24 часа |
| Среднее время жизни при парсинге Ozon | 30-90 минут | 8-48 часов |
| Стоимость /24 или /64 в месяц | \$50-200 | \$1-5 |
| Вероятность блокировки подсети | Высокая | Низкая |
| Количество адресов в пуле | 100-1000 | 1 000 000+ |
Цифры усреднённые, зависят от интенсивности парсинга и качества прокси. Но тренд очевиден.
Кейс: парсинг карточек WB с IPv6
Проблема: нужно собрать 50 000 карточек товаров за 4 часа. На IPv4-прокси пул в 500 адресов умирал за 30-40 минут. Капча появлялась после 200-300 запросов на адрес.
Решение: взяли /64 от lexic.ml, настроили ротацию на каждый запрос. Интенсивность — 8-10 запросов в секунду. Результат: 46 000 карточек за 3.5 часа без единой капчи. Оставшиеся 4000 — из-за таймаутов на стороне WB, не блокировок.
Важный момент: использовали HTTP/2 и правильные заголовки. Без этого даже IPv6 не спасает.
Кейс: отзывы Ozon с IPv4-пула
Проблема: парсинг отзывов на товары. Ozon использует DataDome, который палит датацентровые IPv4 по сигнатурам TLS.
Причина блокировок: DataDome анализирует JA3-отпечатки. Обычный Python requests палится за 10-15 запросов. Решение — использовать curl_cffi с имитацией браузера.
```bash
curl_cffi -X GET "https://www.ozon.ru/api/entrypoint/..." \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
-H "Accept: application/json" \
--proxy "http://[2a01:4f8:1c1c:1a2b::1]:8080" \
--impersonate chrome
```
С IPv6 и имитацией Chrome — 2000 отзывов без блокировок. С IPv4 — бан на 15-й минуте.
Кейс: массовая проверка цен на WB
Проблема: мониторинг цен 10 000 товаров каждые 5 минут. На IPv4 это 2000 запросов в минуту — мгновенный бан.
Решение: распределённый парсинг на 100 IPv6-адресах. Каждый адрес делает 20 запросов в минуту. Для антибота — 100 разных пользователей.
Архитектура: один мастер-процесс раздаёт задачи воркерам. Каждый воркер использует свой IPv6-адрес. Ротация адресов — каждые 10 минут.
```python
import asyncio
import aiohttp
async def fetch_price(session, url, proxy):
async with session.get(url, proxy=proxy) as response:
return await response.json()
async def main():
proxies = [f"http://[2a01:4f8:1c1c:1a2b::{i:x}]:8080" for i in range(1, 101)]
tasks = []
for i, url in enumerate(urls):
proxy = proxies[i % len(proxies)]
tasks.append(fetch_price(session, url, proxy))
results = await asyncio.gather(*tasks)
asyncio.run(main())
```
Система работала 3 недели без единого бана. На IPv4 максимум — 2-3 дня.
Тонкости работы с IPv6-прокси
Есть подводные камни. Не все сайты поддерживают IPv6. Wildberries и Ozon — поддерживают, но с оговорками. Иногда запросы идут через IPv4-мост, что убивает всю магию.
Проверяйте, что ваш IPv6 реально используется:
```bash
curl -6 -s https://api.ipify.org
```
Если возвращает IPv4 — прокси работает неправильно. Ищите другого провайдера.
Ещё нюанс: некоторые прокси-сервисы дают IPv6, но трафик роутят через IPv4. Это убивает все преимущества. Требуйте чистый IPv6-трафик.
Выводы
IPv6-прокси не магия. Они не делают парсер неуязвимым. Но они дают на порядок больше времени до блокировки и в десятки раз больше адресов для ротации.
Антиботы Wildberries и Ozon заточены под IPv4. Их базы репутации для IPv6 — песочница. Пока маркетплейсы не перестроят системы, IPv6 остаётся рабочим инструментом для парсинга.
Используйте IPv6, правильные заголовки и имитацию браузера. Тогда парсер будет жить часами, а не минутами.