Что строим#

В этом разделе мы соберём SDK для учебного сервиса «Почта» на mail.example. Имя и домен вымышлены, а форма входа, список писем и токен в HTML взяты из настоящего почтового API. Код работает локально и не обращается к внешнему сервису.

Один сайт обслуживает две линии. HTTP-линия вызывает JSON API, браузерная заполняет формы и читает признаки страниц. Они используют общие аккаунты, сессии и письма, поэтому результат можно сверять между транспортами.

Что в примере учебное#

Часть сайта

Основа

Зачем она нужна в разборе

Конверт ответа с status и body

Форма настоящего API

Показать варианты типизированного ответа

Токен в HTML страницы входящих

Форма настоящего API

Передать браузерную сессию HTTP-клиенту

Смещение и лимит списка писем

Форма настоящего API

Разобрать пагинацию со смещением

Краткие данные пользователя через GET /api/v1/user/short

Форма настоящего API

Проверить сессию отдельным запросом

Проверка TLS-отпечатка клиента

Форма настоящего API

Объяснить выбор curl_cffi

Вход в два шага и переход ко второму фактору

Форма настоящего API

Разобрать несколько страниц одного входа

Тост, диалог и отсутствие признака после отправки

Форма настоящего API

Различить три исхода композера

Капча во время входа

Учебное добавление

Показать решатель и повтор шага

Курсор и готовая ссылка следующей страницы

Учебное добавление

Сравнить три стратегии пагинации

Подпись и шифрование отправки

Учебное добавление

Показать клиентскую подготовку запроса

Отдельные исходы блокировки и неизвестного аккаунта

Учебное добавление

Разобрать отказы на точных признаках

HTTP-линия обращается к сайту через клиент Eazy SDK. Все ответы входа, сессии и писем приходят от одного MailSite.

Метод и путь

Задача

POST /login/identify

Найти аккаунт и начать вход

POST /login/password

Проверить пароль или запросить капчу

POST /login/otp

Проверить второй фактор и выдать сессию

POST /api/v1/session/refresh

Обновить истёкшую сессию

GET /api/v1/user/short

Получить текущего пользователя

GET /api/v1/client/fingerprint

Проверить TLS-отпечаток клиента

GET /api/v1/threads/status/smart

Прочитать письма с пагинацией

POST /api/v1/messages/send

Отправить подписанное письмо

GET /api/v1/messages/sent

Найти письмо после неопределённого исхода

В следующих главах эти ручки станут отдельными операциями и роутерами.

Браузерная линия видит те же данные через страницы. Переходы между формами становятся типизированными состояниями SDK.

Страница или признак

Задача

/login/ и поле email

Ввести адрес аккаунта

Страница с полем password

Отправить пароль

/login/otp и поле code

Подтвердить второй фактор

Страница с data-page="captcha"

Решить капчу и повторить текущий шаг

/inbox/ и data-page="mailbox"

Подтвердить вход и прочитать токен сессии

Коллекция data-collection="messages"

Получить письма и подгрузить следующую часть

/compose/ и форма data-composer

Отправить письмо и различить три исхода

Подпись и шифрование выполняет JavaScript самой учебной страницы. Браузерная операция управляет формой и читает исход; клиентское преобразование Eazy SDK разберёт HTTP-линия.

Как читать разбор#

Выбор вкладки сохраняется между главами. Начните с привычного транспорта, а второй открывайте, когда нужно сравнить объявления или передать сессию из браузера HTTP-клиенту.

Каждый фрагмент берётся из запускаемого файла в examples/mail/. Код сайта и тестовая обвязка остаются за пределами страницы; рядом с примером будут только запрос, ответ и фактический вывод.

Дальше#