Браузерный слой#

Где заканчивается сценарий сайта?

Браузерный плагин описывает сайт, а адаптер управляет конкретной средой браузера. Сценарий не знает, кто создал процесс, контекст, прокси или антидетект-профиль (eazy_sdk_browser.driver).

Среда браузера при этом остаётся снаружи.

        flowchart TD
    Router["AsyncBrowserApi"] --> Operation["BrowserOperation"]
    Operation --> Runtime["operations.run"]
    Runtime --> Driver["Driver страницы"]
    Driver --> Adapter["Playwright или Pydoll"]
    Session["SessionSource"] --> Client["AsyncBrowserClient"]
    Client --> Runtime
    Profile["BrowserProfile"] --> Check["Проверка возможностей"]
    Check --> Runtime
    Factory["Приложение: браузер и контекст"] --> Adapter
    

Граница страницы#

Минимальный Driver умеет находить элементы, читать страницу и переходить по адресу. Сеть, состояние сессии, запросы из страницы, события перехода, shadow DOM и редактор объявлены отдельно в BrowserProfile (eazy_sdk_browser.driver, eazy_sdk_browser.profile).

Операция объявляет адрес, действия, признаки готовности, исходы и необходимые возможности. operations.run(...) проверяет профиль до первого действия, выполняет переход и превращает наблюдаемое состояние страницы в типизированный результат (eazy_sdk_browser.operations).

AsyncBrowserClient владеет драйвером только при owns_driver=True. Источник сессии вызывает ensure перед операцией и может один раз обновить отклонённую ревизию в пределах auth_retries; клиент не знает о хранилище или пуле контекстов (eazy_sdk_browser.client).

BrowserState переносит cookies и localStorage между контекстами. В живой контекст сессия добавляет только cookies: повторная запись localStorage при каждой навигации затёрла бы изменения сайта (eazy_sdk_browser.state).

Дальше#