89 lines
3.5 KiB
Markdown
89 lines
3.5 KiB
Markdown
# 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 и формат данных
|