Skip to main content

Неофициальная Python библиотека для работы с API Купер (бывш. СберМаркет)

Project description

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). При срабатывании блокировки запрос автоматически повторяется.

Лицензия

LGPLv3

Автор

Если у вас возникли вопросы по бибилотеке можете написать создателю в Телеграм: @inmyuse

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kuper_api-0.1.0.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kuper_api-0.1.0-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

Details for the file kuper_api-0.1.0.tar.gz.

File metadata

  • Download URL: kuper_api-0.1.0.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for kuper_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5bed26b07e895de7ecbf6c25e948c860cd5042707032ee0ab9537accdba1c2ee
MD5 637511ae7d6b8da71e84c769e5e1745b
BLAKE2b-256 4a674d889e6e3e79edd4cc27fb014274134517626f781c814f171dbfe96ae0aa

See more details on using hashes here.

File details

Details for the file kuper_api-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kuper_api-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for kuper_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eabfc0d87b142f2aaac00f2d92492d69b7d9c7b903ce21c26857e51eb3ee0165
MD5 013c230367b672006a8269d5e691a9ff
BLAKE2b-256 a22b0c554d99bfd6645813f2435557de79c9a6d92712c8256701e5d25924d271

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page