# 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_<hash>` | Главный 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 и формат данных
