Eazy SDK
  • Руководство
  • Интеграции
  • Архитектура
  • API
/

Начало работы

  • Начало работы
  • Установка
  • Быстрый старт
  • Основные понятия
  • Что дальше

Разбор на примере

  • Что строим
  • Вход в три шага
  • Чем вход может закончиться
  • Капча на входе
  • Обновление сессии без ручного повтора
  • Чтение всех писем по частям
  • Отправка письма без опасного повтора
  • Шифрование полей и всего тела
  • Сборка HTTP- и браузерных роутеров

Руководство

  • Руководство
  • Собрать HTTP-запрос
  • Объявить HTTP-операцию
  • Подставить значение в путь
  • Добавить параметры запроса
  • Добавить заголовки запроса
  • Передать cookie одного вызова
  • Отправить JSON-объект
  • Отправить HTML-форму
  • Отправить файл
  • Отправить готовые байты
  • Преобразовать публичные поля в тело запроса
  • Сохранить и изменить запрос перед отправкой
  • Назвать адрес сервиса и запросить ссылку из ответа
  • Обработать HTTP-ответ
  • Получить типизированное значение и метаданные
  • Разобрать ожидаемую ошибку API
  • Извлечь типизированные данные из HTML
  • Прочитать исход из адреса перехода
  • Разобрать ответ, где исход лежит в теле
  • Выбрать способ авторизации
  • Передать Basic credentials
  • Передать Bearer token
  • Передать JWT
  • Передать API key
  • Передать session cookie
  • Собрать требования AND и OR
  • Войти и получить сессию
  • Повторно использовать сессию
  • Разложить сессию по запросу
  • Сайт ведёт сессию на куках
  • Обновить сессию
  • Обойти страницы результата
  • Подписать запрос
  • Зашифровать payload
  • Обработать защитную проверку
  • Повторить временную ошибку
  • Обработать HTTP redirect
  • Ограничить частоту отправки
  • Собрать SDK для нескольких сервисов
  • Передать зависимость запроса
  • Добавить middleware
  • Описать протокол с конвертом
  • Объявить WebSocket API
  • Проверить SDK локально

Интеграции

  • Выбрать HTTP-клиент
  • Интеграции
  • Подключить HTTPX
  • Подключить Requests
  • Подключить curl_cffi
  • Подключить свой HTTP-обработчик
  • Выбрать браузерный драйвер
  • Подключить Playwright
  • Подключить Pydoll 3
  • Различить исходы страницы
  • Разделить вход между вкладками
  • Подключить вкладку из пула
  • Выбрать библиотеку моделей
  • Подключить Pydantic
  • Подключить msgspec
  • Использовать dataclass
  • Подключить Adaptix
  • Извлечь данные из HTML
  • Отправить и разобрать XML
  • Сгенерировать SDK из OpenAPI
  • Сгенерировать SDK из AsyncAPI
  • Хранить аккаунты и сессии
  • Создать регистрацию
  • Подтвердить регистрацию
  • Подключить SQLModel
  • Обработать Cloudflare Challenge Pages
  • Подключить Cloudflare Turnstile
  • Подключить reCAPTCHA

Архитектура

  • Слои и границы
  • Путь запроса
  • Попытка и повторы
  • Выбор варианта ответа
  • Identity и сессия
  • Точки расширения
  • Браузерный слой

Справочник

  • Справочник API
  • API methods
  • Clients
  • Extension SPI
  • Подготовка и тестирование
  • Request API
  • Response API
  • Сериализация моделей и codecs
  • Auth
  • Session
  • Registration
  • Verification
  • Dependencies
  • Middleware
  • Signing
  • Payload crypto
  • Protection
  • OpenAPI
  • SQLModel
  • Browser
  • XML
  • Миграция между альфами
  • История изменений

On this page

  • Дальше
  1. Eazy SDK /
  2. Передать cookie одного вызова
View Source Open in ChatGPT Open in Claude

Передать cookie одного вызова#

Используйте markers.Cookie, если значение выбирает вызывающий: язык интерфейса, согласие, параметр из документации API. Куки, которые ставит сам сайт, полями не объявляют: их несёт библиотека, когда корень объявил Cookies(...). Ключ API, который вызывающий приносит сам и который сайт ждёт в куке, задаёт CookieScheme.

→ Request · GET /dashboard

Cookie: experiment=new-nav

← Response · 200 OK

{"experiment": "new-nav", "widgets": 3}
# examples/docs/request_cookies.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetDashboard(HttpOperation[Dashboard]):
    __http__ = Http.get("/dashboard")

    experiment: Annotated[Omittable[str], markers.Cookie("experiment")] = UNSET


class DashboardApi(SyncApi):
    get = op(GetDashboard)

experiment становится cookie с тем же именем. Значение UNSET не добавляет cookie. Несколько объявленных значений SDK объединяет в один корректный заголовок Cookie.

Файл примера целиком
"""Map an operation argument to a request cookie."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Annotated

from eazy_sdk import UNSET, Http, HttpOperation, Omittable, SyncApi, op
from eazy_sdk.request import markers
from examples.docs.request_site import request_client


@dataclass(frozen=True, slots=True)
class Dashboard:
    experiment: str | None
    widgets: int


# docs:example:start
# examples/docs/request_cookies.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetDashboard(HttpOperation[Dashboard]):
    __http__ = Http.get("/dashboard")

    experiment: Annotated[Omittable[str], markers.Cookie("experiment")] = UNSET


class DashboardApi(SyncApi):
    get = op(GetDashboard)
# docs:example:end


def main() -> None:
    with request_client() as client:
        dashboard = DashboardApi(client).get(experiment="new-nav")

    print(f"experiment: {dashboard.experiment}; widgets: {dashboard.widgets}")


if __name__ == "__main__":
    main()

Запуск: uv run python examples/docs/request_cookies.py.

experiment: new-nav; widgets: 3

Дальше#

  • Настройте cookie-авторизацию.

  • Сохраните и обновляйте сессию.

Previous
Добавить заголовки запроса
Next
Отправить JSON-объект

Made with Sphinx and Shibuya theme.