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

89 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 и формат данных