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 (обязательный ручной шаг)
- Откройте vprok.ru в Chrome/Firefox, войдите в аккаунт
- Откройте DevTools (F12) → Application → Cookies →
www.vprok.ru - Скопируйте следующие cookies:
| Cookie | Описание |
|---|---|
remember_xo-fo_<hash> |
Главный auth токен (обязателен) |
ngx_s_id |
DDoS Guard session (обязателен) |
XSRF-TOKEN |
CSRF защита (нужен для POST) |
laravel_session |
PHP сессия |
- Вставьте в
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 неизвестен |
Что нужно от пользователя
- Запустить с домашнего компьютера (не сервера) — или предоставить residential proxies
- Предоставить cookies из браузера — особенно
remember_xo-fo_* - Верифицировать точные endpoints через DevTools (Network tab) при использовании сайта:
- Нажать "Добавить в корзину" и посмотреть какой именно запрос уходит
- Это даст точный URL и формат данных