Подключить curl_cffi#

Установите extra curl-cffi:

uv add "eazy-sdk-core[curl-cffi]"

Передайте вариант браузера через impersonate. Он попадёт в профиль обработчика и станет частью транспортной идентичности защиты:

        # examples/docs/integration_curl_cffi.py
        async with AsyncClient.curl_cffi(
            base_url=base_url,
            impersonate="chrome",
        ) as client:
            message = await MessageApi(client).message()
Файл целиком
"""Runnable curl_cffi integration example for the documentation."""

from __future__ import annotations

import asyncio
from dataclasses import dataclass

from eazy_sdk import AsyncApi, AsyncClient, Http, HttpOperation, op

from .guide_site import GuideSite, guide_origin


@dataclass(frozen=True, slots=True)
class Message:
    id: int
    subject: str


@dataclass(frozen=True, slots=True)
class GetMessage(HttpOperation[Message]):
    __http__ = Http.get("/messages/42")


class MessageApi(AsyncApi):
    message = op(GetMessage)


async def main() -> None:
    site = GuideSite()
    with guide_origin(site) as base_url:
        # docs:integration-curl-cffi:start
        # examples/docs/integration_curl_cffi.py
        async with AsyncClient.curl_cffi(
            base_url=base_url,
            impersonate="chrome",
        ) as client:
            message = await MessageApi(client).message()
        # docs:integration-curl-cffi:end
    print(f"message: {message.id} {message.subject}")
    print(f"impersonation: {client.profile.impersonation}")


if __name__ == "__main__":
    asyncio.run(main())
message: 42 План на пятницу
impersonation: chrome

Синхронный вариант строится через Client.curl_cffi(...). Обе фабрики отключают собственные cookies и перенаправления сессии, чтобы ими управлял общий исполнитель Eazy SDK.

curl_cffi нужен, когда сайт сравнивает TLS-отпечаток с ожидаемым браузером. Само значение impersonate не доказывает совпадение с конкретным браузером навсегда: поддерживаемые варианты и отпечатки зависят от установленной версии curl_cffi.

Готовую Session или AsyncSession передавайте через session=. В этом режиме proxy= и impersonate= должны описывать реальную конфигурацию сессии, а закрывает её создавший код.

Дальше#