# Введение

Если вы использовали приложение Surfinite и просмотрели вкладку «Сеансы», то вы, вероятно, видели, что эти сеансы состоят из 5 шагов:

%%{init: { 'theme': 'base' } }%%
flowchart LR
    A(1. Старт профиля) --> B(2. Скачивание папки)
    B --> C(3. Запуск браузера)
    C --> D(4. Загрузка папки)
    D --> E(5. Остановка профиля)

Эти шаги будут подробно объяснены далее в этом руководстве.

# Как работают альтернативные продукты

Если вы использовали альтернативы, то уже знаете, что их ход действий похож, за исключением одного важного момента - они группируют большую часть шагов в один, не позволяя контролировать полный процесс ради простоты использования:

%%{init: { 'theme': 'base' } }%%
flowchart LR
    b0(Ваш код)
    b5(Ваш код)
    subgraph Альтернативные продукты не позволяют контролировать эти шаги
        b1(Запуск)
        b3(Скачивание папки)
        b4(Открытие браузера)
        b1-->b3-->b4
    end
    b0-->b1
    b4-->b5

Более того, они также не позволяют управлять остановкой браузера:

%%{init: { 'theme': 'base' } }%%
flowchart LR
    b0(Ваш код)
    b4(Ваш код)
    subgraph Альтернативные продукты не позволяют контролировать эти шаги
        b1(Закрытие браузера)
        b2(Загрузка папки)
        b3(Удаление папки)
        b1-->b2-->b3
    end
    b0-->b1
    b3-->b4

Мы рассматриваем это как плохое дизайнерское решение, поскольку вы не можете просмотреть или изменить папку профиля перед открытием браузера, а также после закрытия браузера.

# Наш подход

В отличие от альтернативных продуктов, мы решили разделить каждую операцию, чтобы вы отвечали за все эти шаги, и мы сделали это по двум основным причинам:

  1. Теперь у вас есть полный контроль над каждым шагом, что позволяет вам точно настроить его под ваш вариант использования наиболее эффективным способом. Благодаря нашему подходу вам действительно предлагается:

    • Чтение или изменение файлов cookie до и после запуска браузера.
    • Пропустить скачивание или загрузку папкт профиля (вы можете хранить папки профиля локально или где-либо еще)
    • Загрузите свои расширения, поместив их в папку профиля (API не требуется)
    • Запустите браузер с настраиваемыми [command line switches] (https://peter.sh/experiments/chromium-command-line-switches/).

  2. Теперь более понятно, какой шаг завершился с ошибкой в случае неудачного запуска. Вы сталкивались с тем, что альтернативные продукты просто отвечают «400 Bad Request» или «500 Internal Server Error» и не предоставляют информации о том, что пошло не так?

    Мы разработали наш API таким образом, что если какой-либо шаг завершается ошибкой, вы получаете ответ, который не требует пояснений. Все коды ошибок задокументированы, и вы почти всегда получаете сообщение об ошибке с описанием того, почему шаг не удался.