Kuper API
Неофициальная Python библиотека для работы с внутренним API сервиса доставки Купер
Библиотека предоставляет высокоуровневый клиент и объектные модели для каталога (ретейлеры, магазины, товары, рестораны), адресов, корзины, заказов и оформления.
Особенности
- Синхронный клиент
Clientсо всеми известными маршрутами API. - Объектные модели данных вместо «сырых» словарей.
- Обход анти-бот защиты ServicePipe через подмену TLS-отпечатка браузера
(под капотом —
curl_cffi). - Cookie-авторизация и автоматическое получение CSRF-токена.
- Поддержка сервиса оформления (checkout v3): инициализация, способы оплаты, завершение заказа.
Установка
pip install curl_cffi
pip install kuper_api
Быстрый старт
Чтение каталога (доступно без авторизации):
from kuper_api import Client
client = Client()
# Магазины по геолокации
for store in client.stores(lat=55.7558, lon=37.6173):
print(store.id, store.retailer.slug, store.name)
# Поиск товаров в магазине (числовой Store ID)
for product in client.products(327, query='молоко'):
print(product.id, product.price, product.name)
Для корзины, профиля и оформления нужна cookie из авторизованного браузера:
from kuper_api import Client
with open('.cookie.txt', encoding='utf-8') as f:
cookie = f.read().strip()
client = Client(cookie=cookie)
session = client.shopping_session()
print(session.current_user.email)
# Добавление товара в корзину
cart = client.cart()
client.line_item_add(cart.number, store_id=327, product_id=39055067663, quantity=1)
Авторизация
API делит маршруты на два семейства:
- v2 (профиль, корзина, заказы) — авторизуются по cookie.
- checkout v3 (
/api/v3/checkout/...) — отдельный сервис, в библиотеке заголовки авторизации (client-token,client-id,sbm-forward-tenant) проставляются автоматически.
Строку cookie нужно скопировать из авторизованного браузера (DevTools →
Network → любой запрос к kuper.ru → заголовок cookie). Важно, чтобы в ней
был свежий spsc (анти-бот) и авторизованный _Instamart_session.
Анти-бот
Купер закрыт анти-ботом ServicePipe, который распознаёт «голый» HTTP-клиент по
TLS-отпечатку (JA3/JA4) и отдаёт 307, низводя сессию до анонимной. Поэтому
библиотека использует curl_cffi с подменой отпечатка реального браузера
(параметр impersonate). При срабатывании блокировки запрос автоматически
повторяется.
Лицензия
Автор
Если у вас возникли вопросы по бибилотеке можете написать создателю в Телеграм: @inmyuse
Release files for kuper-api 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kuper_api-0.1.0.tar.gz | 24.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kuper_api-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.9 kB
Release files / kuper_api-0.1.0.tar.gz
| Download URL | kuper_api-0.1.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5bed26b07e895de7ecbf6c25e948c860cd5042707032ee0ab9537accdba1c2ee
|
|
BLAKE2b-256 checksum How to use checksums |
4a674d889e6e3e79edd4cc27fb014274134517626f781c814f171dbfe96ae0aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|
Release files / kuper_api-0.1.0-py3-none-any.whl
| Download URL | kuper_api-0.1.0-py3-none-any.whl |
|---|---|
| Size | 36.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eabfc0d87b142f2aaac00f2d92492d69b7d9c7b903ce21c26857e51eb3ee0165
|
|
BLAKE2b-256 checksum How to use checksums |
a22b0c554d99bfd6645813f2435557de79c9a6d92712c8256701e5d25924d271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.11
|