Подключить 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= должны описывать реальную конфигурацию сессии, а закрывает её создавший код.