# vprok.ru API Client Python-клиент для автоматизации корзины на vprok.ru (Перекрёсток Впрок). ## Структура ``` tasks/vprok/ ├── README.md # этот файл ├── api_research.md # документация endpoints и механизм защиты └── vprok_client.py # рабочий Python-клиент ``` ## Установка зависимостей ```bash 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_` | Главный auth токен (обязателен) | | `ngx_s_id` | DDoS Guard session (обязателен) | | `XSRF-TOKEN` | CSRF защита (нужен для POST) | | `laravel_session` | PHP сессия | 4. Вставьте в `MY_COOKIES` в конце `vprok_client.py` ## Использование ```python 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 и формат данных