Files
wiki/tasks/internet-orders/README.md
2026-04-12 21:55:33 +03:00

3.5 KiB
Raw Permalink Blame History

vprok.ru API Client

Python-клиент для автоматизации корзины на vprok.ru (Перекрёсток Впрок).

Структура

tasks/vprok/
├── README.md          # этот файл
├── api_research.md    # документация endpoints и механизм защиты
└── vprok_client.py    # рабочий Python-клиент

Установка зависимостей

pip install requests httpx beautifulsoup4 lxml

⚠️ Главное ограничение

vprok.ru защищён DDoS Guard — блокирует все запросы с серверных IP-адресов.
Скрипт работает только с домашнего компьютера (жилой IP).

Если нужно запускать с сервера — нужны residential proxies.

Получение cookies (обязательный ручной шаг)

  1. Откройте vprok.ru в Chrome/Firefox, войдите в аккаунт
  2. Откройте DevTools (F12) → Application → Cookies → www.vprok.ru
  3. Скопируйте следующие cookies:
Cookie Описание
remember_xo-fo_<hash> Главный auth токен (обязателен)
ngx_s_id DDoS Guard session (обязателен)
XSRF-TOKEN CSRF защита (нужен для POST)
laravel_session PHP сессия
  1. Вставьте в MY_COOKIES в конце vprok_client.py

Использование

from vprok_client import VprokClient

client = VprokClient(cookies={
    "remember_xo-fo_4546ffd47bc4accc5866998d8b": "your_value_here",
    "ngx_s_id": "your_ngx_session",
    "XSRF-TOKEN": "your_csrf_token",
    "laravel_session": "your_session",
})

# Поиск товаров
products = client.search("молоко")
for p in products:
    print(f"{p['name']}{p['price']} ₽")

# Добавить в корзину
success = client.add_to_cart(products[0]["id"], quantity=2)

# Посмотреть корзину
cart = client.get_cart()

# История заказов
orders = client.get_orders()

Статус методов

Метод Статус Примечание
search() Реализован JSON API + HTML fallback
get_cart() Реализован JSON API + HTML fallback
add_to_cart() Реализован Требует CSRF token
remove_from_cart() Реализован Требует CSRF token
update_cart_quantity() Реализован Требует CSRF token
get_orders() Реализован HTML scraping (проверен)
Авторизация через API Нет Только ручное получение cookies
Слоты доставки 🔍 Не исследовано Endpoint неизвестен

Что нужно от пользователя

  1. Запустить с домашнего компьютера (не сервера) — или предоставить residential proxies
  2. Предоставить cookies из браузера — особенно remember_xo-fo_*
  3. Верифицировать точные endpoints через DevTools (Network tab) при использовании сайта:
    • Нажать "Добавить в корзину" и посмотреть какой именно запрос уходит
    • Это даст точный URL и формат данных