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

eBay через IPv6 прокси: отслеживание лотов и снайпинг аукционов

eBay через IPv6 прокси: отслеживание лотов и снайпинг аукционов

Почему eBay душит по IP

eBay смотрит на IP-адрес клиента. Не только на аккаунт. Система антифрода eBay (внутри называется "Risk Console") анализирует сотни сигналов при каждом запросе: IP, ASN, геолокация, поведение сессии, TLS fingerprint, HTTP/2-фреймы.

Один IP — одна сессия. При попытке открыть десять параллельных сессий с одного адреса начинаются проблемы. Сначала капча. Потом "Please verify your identity". Дальше — блокировка аккаунта без объяснений.

IPv6 меняет расклад. Провайдеры выдают /64 подсети, а часто /56 или /48. Это 2^64 адресов в одном /64. Даже если eBay забанит конкретный адрес — у тебя ещё 18 квинтиллионов.

Анатомия запроса к eBay

Каждый GET к лоту идёт через цепочку проверок. eBay видит:

- IP и ASN (по GeoIP-базе MaxMind)

- Accept-Language и часовой пояс

- User-Agent и его соответствие TLS-отпечатку

- Cookie `ebay`, `dp1`, `s` — сессионные маркеры

- Заголовок `X-Forwarded-For`, если идёшь через прокси

- Скорость запросов и паттерн навигации

Прокси на IPv6 решает первую проблему — IP. Остальные сигналы нужно подделывать самому. Прокси не сделает за тебя консистентный User-Agent.

```bash

curl -6 -x "http://user:pass@[2a01:4f8:c17:1234::1]:8080" \

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

-H "Accept-Language: en-US,en;q=0.9" \

-H "Accept: text/html,application/xhtml+xml" \

-s "https://www.ebay.com/itm/123456789012" -o lot.html

```

Флаг `-6` заставляет curl использовать IPv6. Без него curl пойдёт по IPv4, если DNS вернёт A-запись первой. Прокси в квадратных скобках — обязательный синтаксис для IPv6 в URL.

Отслеживание лотов без бана

Мониторинг лота — это периодический GET. Раз в минуту, раз в 30 секунд. eBay терпит такие запросы с одного IP, если их немного. Но у тебя не один лот. Их сто, двести, тысяча.

Тут начинается зоопарк. Тысяча лотов × опрос раз в 30 секунд = 2000 запросов в минуту. С одного IPv6-адреса это гарантированный бан через 5-10 минут. Нужна ротация адресов.

Схема простая: пул IPv6-адресов, round-robin по запросам, sticky-сессия на 10-20 запросов к одному адресу. eBay видит разные IP с одного /64 — это нормально, так делают мобильные операторы и корпоративные NAT.

```python

import requests

from itertools import cycle

from time import sleep

PROXIES = [

"http://user:pass@[2a01:4f8:c17:1234::1]:8080",

"http://user:pass@[2a01:4f8:c17:1234::2]:8080",

"http://user:pass@[2a01:4f8:c17:1234::3]:8080",

]

pool = cycle(PROXIES)

def fetch_lot(item_id, session):

proxy = next(pool)

url = f"https://www.ebay.com/itm/{item_id}"

headers = {

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "

"AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",

"Accept-Language": "en-US,en;q=0.9",

}

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

return r.status_code, len(r.text)

s = requests.Session()

for item in ["123456789012", "987654321098", "555666777888"]:

code, size = fetch_lot(item, s)

print(f"{item}: {code}, {size} bytes")

sleep(2)

```

Важный момент: `requests.Session` переиспользует TCP-соединение. С IPv6-прокси это плохо — keep-alive привязывает тебя к одному адресу. Либо отключай keep-alive, либо создавай новую сессию на каждый прокси. В примере выше сессия одна, но прокси меняется — соединения всё равно переиспользуются по хосту. Для честной ротации нужен `session.close()` между запросами.

Снайпинг: где решается исход

Снайпинг — ставка за 3-5 секунд до закрытия лота. eBay использует soft close: если ставка приходит в последние секунды, таймер продлевается. Но только если ставка валидна и принята сервером.

Задержка критична. Разложим по полочкам:

| Этап | Типичная задержка |

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

| TCP handshake до прокси | 5-30 мс |

| TLS handshake (1.3) | 10-40 мс |

| Запрос через прокси к eBay | 20-80 мс |

| Обработка на стороне eBay | 50-200 мс |

| Ответ обратно | 20-80 мс |

Итого 100-400 мс от твоего сервера до eBay. Если прокси в Франкфурте, а eBay-датацентр в США — добавь 80-120 мс трансатлантики. Хреново, когда конкурент сидит на VPS в том же датацентре, что и eBay.

IPv6-прокси рядом с датацентром eBay даёт преимущество в 50-100 мс. Это разница между выигрышем и проигрышем на горячем лоте.

Синхронизация времени

Твой сервер должен знать точное время eBay. NTP с дефолтными настройками даёт точность ±50 мс. Этого мало. Нужен chrony с агрессивной синхронизацией или PTP.

```bash

chronyd -q 'server time.ebay.com iburst'

chronyc tracking

```

`chronyc tracking` покажет offset в микросекундах. Если больше 10 мс — снайпер промахнётся. eBay закрывает лот по своему таймеру, не по твоему.

Ставка через API vs веб-форма

eBay имеет Trading API и Browse API. Ставка через `PlaceOffer` в Trading API работает, но требует OAuth-токена и привязана к аккаунту. Прокси тут помогает только от геоблока — сам API не так чувствителен к IP, как веб.

Веб-форма ставки — другое дело. Тут каждый запрос проходит через Risk Console. Нужны валидные cookies, `X-CSRF-Token`, правильный `Referer`. Собрать это программно — та ещё задача.

```python

def place_bid(session, item_id, amount, proxy, csrf, cookies):

url = f"https://www.ebay.com/bfl/viewbids/{item_id}"

headers = {

"X-CSRF-Token": csrf,

"Referer": f"https://www.ebay.com/itm/{item_id}",

"Content-Type": "application/json",

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

}

payload = {"bidAmount": {"value": amount, "currency": "USD"}}

r = session.post(url, json=payload, headers=headers,

proxies={"https": proxy},

cookies=cookies, timeout=10)

return r.json()

```

CSRF-токен живёт минуты. Его нужно обновлять перед каждой ставкой. Cookies — тоже. Снайпер за 3 секунды до конца не успеет сходить за токеном. Значит, токен добывается заранее, за 30-60 секунд, и держится в памяти.

Геолокация и ASN

eBay фильтрует по стране. Российские IP видят одни цены, американские — другие. Некоторые лоты вообще недоступны для шиппинга за пределы США. IPv6-прокси с американским ASN решает это.

Но ASN тоже проверяется. Residential IPv6 из Comcast или Verizon выглядит натуральнее, чем /64 из Hetzner. eBay знает диапазоны хостингов. Если твой IPv6 из датацентра — риск выше.

На практике: datacenter IPv6 проходит для просмотра лотов. Для ставок лучше residential. Разница в цене — в разы. Residential IPv6 от \$3-5 за адрес в месяц, datacenter — центы.

Ротация и лимиты

Сколько запросов держит один IPv6-адрес? Эмпирика:

- Просмотр лотов: 200-500 запросов/час без капчи

- Поиск: 50-100 запросов/час

- Ставки: 5-10/час с одного адреса

- Логин: 1-2/час, дальше верификация

Превышение — капча. Дальше — бан адреса на 24-48 часов. IPv6-адрес банится целиком, но /64 остаётся доступен. Меняешь адрес — работаешь дальше.

Пул из 50-100 IPv6-адресов держит мониторинг 1000 лотов с опросом раз в минуту. Каждый адрес получает 10-20 запросов в минуту — в пределах нормы.

Прокси-цепочка через lexic.ml

Когда нужна ротация по странам и ASN, удобно использовать готовый пул. Сервис вроде lexic.ml даёт IPv6-адреса в разных подсетях и геозонах, что снимает головную боль с самостоятельным развёртыванием /64 на VPS.

Схема: получаешь список прокси, грузишь в свой пул, ротируешь по алгоритму. Sticky-сессии обычно держатся 1-10 минут. Для снайпинга нужна фиксация адреса за 5 минут до ставки — чтобы eBay не увидел смену IP в момент ставки.

Обработка капчи

Капча от eBay — это либо PerimeterX, либо внутренняя. PerimeterX отдаёт JS-челлендж, который решается в headless-браузере. Чистый HTTP-клиент не пройдёт.

Варианты:

- Playwright + stealth-плагины

- Решение капчи через сервис (2captcha, anti-captcha)

- Смена IP и повтор запроса

Третий вариант дешевле. Если капча появилась — адрес уже помечен. Меняй и не мучайся. Первые два нужны, когда аккаунт ценный и IP менять нельзя.

Логирование и отладка

Без логов снайпер — чёрный ящик. Логируй каждый запрос: timestamp с миллисекундами, IP прокси, статус, размер ответа, время ответа.

```bash

curl -6 -x "http://user:pass@[2a01:4f8:c17:1234::1]:8080" \

-w "%{time_total} %{time_connect} %{time_starttransfer} %{http_code}\n" \

-o /dev/null -s "https://www.ebay.com/itm/123456789012"

```

`time_connect` покажет TCP-хендшейк, `time_starttransfer` — время до первого байта. Если `time_connect` вырос с 20 до 200 мс — прокси деградировал, меняй.

Что убивает снайпер

Классические грабли:

- Часы на сервере ушли на 200 мс — ставка пришла после закрытия

- Прокси сменился в момент ставки — eBay увидел новый IP, потребовал верификацию

- CSRF-токен протух — ставка не прошла

- eBay продлил таймер из-за ставки конкурента — ты ставил на старый дедлайн

- Твой IP попал в чёрный список из-за соседа по /64

Последнее особенно неприятно. Если кто-то на соседнем адресе в твоём /64 занимался ерундой, весь /64 может быть помечен. Поэтому лучше брать адреса из разных /64, а не пачку из одной подсети.

Итого

IPv6-прокси для eBay — необходимость при массовом мониторинге и снайпинге. Один адрес не выдержит нагрузку. Пул из 50-100 адресов решает. Ключевые точки: ротация без разрыва сессии в момент ставки, синхронизация часов до 10 мс, валидные CSRF-токены и cookies, геолокация под целевой рынок.

Снайпинг — это не про скорость интернета. Это про задержку до сервера eBay, точность часов и отсутствие палева по IP. Прокси закрывает треть задачи. Остальное — твой код и дисциплина.

✔️Купить прокси