Запуск і робота з профілями
Перш ніж агент зможе автоматизувати сторінку, цільовий профіль має бути запущений. Ця сторінка проводить вас через весь життєвий цикл за допомогою API локального демона — отримання списку профілів, створення (з відбитком та проксі), запуск, опитування статусу та зупинка — а також пояснює помилку PROFILE_NOT_RUNNING, на яку ви наразитесь, якщо пропустите крок запуску.
Усі запити йдуть до локального демона. API керування профілями розташоване під http://localhost:7891/api; API автоматизації (навігація, кліки, введення тексту, знімок) розташоване під http://localhost:7891/api/automation/:profileId/<action> і описане в розділах HTTP API та Довідник API.
Конверт відповіді
Section titled “Конверт відповіді”Кожен ендпоінт демона повертає однаковий JSON-конверт, тож ваш код може розгалужуватись за полем ok, перш ніж читати data:
{ "ok": true, "data": { } }{ "ok": false, "error": { "code": "PROFILE_NOT_RUNNING", "message": "..." } }Деякі ендпоінти повертають "data": null при успіху (запуск, зупинка, розблокування). Перевіряйте ok, а не форму data.
Значення статусу профілю
Section titled “Значення статусу профілю”Профіль повідомляє один статус виконання. Автоматизація працює лише поки профіль у статусі running.
| Статус | Значення |
|---|---|
idle | Створений, але не запущений. Процес браузера не працює. |
launching | Запуск прийнято; браузер стартує та синхронізує стан віддаленої сесії. |
running | Браузер запущено. Ендпоінти автоматизації працюють. |
stopping | Зупинку прийнято; куки та вкладки синхронізуються перед закриттям браузера. |
locked | Профіль відкрито на іншому пристрої. Ви не можете запустити його тут, доки блокування не буде знято. |
Список профілів
Section titled “Список профілів”Повертає кожен профіль із його поточним статусом виконання. Для читання списку ліцензія не потрібна.
curl -s localhost:7891/api/profiles | jq '.data[] | {id, name, status}'Якщо ви — зовнішній агент, якому не передали конкретний ID профілю, отримайте список профілів і дайте оператору обрати один. Щойно у вас з’явиться ID, збережіть його в змінній середовища на весь подальший потік:
PROFILE=<profile-id>Створення профілю
Section titled “Створення профілю”Створення профілю потребує активної ліцензії. Тіло запиту несе назву профілю, проксі, відбиток та геолокацію. При успіху демон повертає 201 з новим профілем і status: "idle".
curl -s localhost:7891/api/profiles -X POST \ -H 'Content-Type: application/json' -d '{ "name": "My Profile", "proxy": {"type": "none"}, "fingerprint": { "os": "windows", "userAgent": "Mozilla/5.0 ...", "screenWidth": 1920, "screenHeight": 1080, "language": "en-US", "timezone": "America/New_York", "webrtc": "fake" }, "geolocation": {"enabled": false} }'Поле webrtc приймає real, fake або disabled. Щоб під’єднати проксі замість {"type": "none"}, передайте деталі підключення в об’єкті proxy — див. Налаштування проксі. Повний перелік полів відбитка та їх відповідність браузеру див. у Параметри відбитка.
Оновлення профілю
Section titled “Оновлення профілю”Під час оновлення всі поля необов’язкові — надсилайте лише те, що хочете змінити. Демон повертає оновлений профіль із його поточним статусом.
curl -s localhost:7891/api/profiles/$PROFILE -X PATCH \ -H 'Content-Type: application/json' -d '{"name": "New Name", "tags": ["work"]}'Запуск профілю
Section titled “Запуск профілю”Запуск стартує процес браузера для профілю. Він асинхронний: при успіху ви отримуєте 202 Accepted з "data": null, а статус переходить у launching.
curl -s localhost:7891/api/profiles/$PROFILE/launch -X POSTПеред прийняттям запуск проходить дві перевірки:
- Активна ліцензія. Немає активної підписки →
403зNO_SUBSCRIPTION(акаунт ніколи не оплачувався) абоLICENSE_EXPIRED(підписка прострочена). Тарифи лише платні — див. Тарифи та ціни. - Вільний слот одночасного запуску. Ваш тариф обмежує, скільки профілів можуть працювати одночасно — Starter 3, Pro 40, Agency 300. Якщо ви вже досягли ліміту, запуск повертає
403 CONCURRENT_LIMIT_REACHED; спершу зупиніть запущений профіль або підвищте тариф.
| Код помилки | HTTP | Значення |
|---|---|---|
NO_SUBSCRIPTION | 403 | Акаунт ніколи не мав платного тарифу. |
LICENSE_EXPIRED | 403 | Підписка прострочена. |
CONCURRENT_LIMIT_REACHED | 403 | Усі слоти одночасного запуску вашого тарифу зайняті. |
PROFILE_NOT_FOUND | 404 | Профілю з таким ID не існує. |
PROFILE_LOCKED | 409 | Профіль відкрито на іншому пристрої. |
UNAUTHORIZED | 401 | Токени сесії демона відсутні або прострочені; увійдіть через застосунок. |
Дочекайтеся, поки профіль не запущено
Section titled “Дочекайтеся, поки профіль не запущено”Оскільки запуск повертається ще до готовності браузера, опитуйте ендпоінт статусу, доки він не покаже running. Не надсилайте дії автоматизації під час launching.
curl -s localhost:7891/api/profiles/$PROFILE/status | jq -r .data.statusПростий цикл очікування:
curl -s localhost:7891/api/profiles/$PROFILE/launch -X POST
until [ "$(curl -s localhost:7891/api/profiles/$PROFILE/status | jq -r .data.status)" = "running" ]; do sleep 1doneПеревірка статусу
Section titled “Перевірка статусу”Ендпоінт статусу — єдине джерело правди щодо того, чи можна автоматизувати профіль. Він не потребує ліцензії й повертає відповідь миттєво.
curl -s localhost:7891/api/profiles/$PROFILE/status | jq -r .data.status{ "ok": true, "data": { "status": "running" } }Зупинка профілю
Section titled “Зупинка профілю”Зупинка закриває браузер. Перед виходом процесу демон синхронізує сесію — відкриті вкладки та будь-які змінені куки завантажуються на сервер, щоб наступний запуск відновився з місця, де ви зупинились. При успіху ви отримуєте "data": null, статус переходить у stopping, а потім назад у idle.
curl -s localhost:7891/api/profiles/$PROFILE/stop -X POSTPROFILE_NOT_RUNNING
Section titled “PROFILE_NOT_RUNNING”Якщо ви викликаєте ендпоінт автоматизації (/api/automation/$PROFILE/navigate, /snapshot, /click, …) для профілю, який не у статусі running, демон відповідає 404 з кодом помилки PROFILE_NOT_RUNNING.
{ "ok": false, "error": { "code": "PROFILE_NOT_RUNNING", "message": "..." } }Це найпоширеніша помилка під час першого запуску: профіль існує, але його браузер так і не стартував (або вже був зупинений). Ендпоінти кук поводяться так само — GET/POST/DELETE /api/profiles/$PROFILE/cookies працюють лише поки профіль запущено.
Як цього уникнути:
- Запускайте профіль (
POST /api/profiles/$PROFILE/launch) перед будь-яким викликом автоматизації. - Сприймайте
202від запуску як «прийнято, не готово». ОпитуйтеGET /api/profiles/$PROFILE/status, доки він не повернеrunning— автоматизація під часlaunchingвсе одно може провалитись. - Перевіряйте статус повторно, якщо тривалий потік зависає: збій браузера або зупинка з іншого пристрою виводять профіль зі стану
running. - Працюйте строго в межах профілю, який вам надав оператор. Не запускайте, не зупиняйте й не перемикайтеся на інший профіль, щоб «виправити» невідповідність — якщо вказаний профіль не запущено або він не підходить для задачі, зупиніться й запитайте оператора.
Наскрізний життєвий цикл
Section titled “Наскрізний життєвий цикл”Повний потік створення → запуск → автоматизація → зупинка:
# 0. Pin the profile ID (or create one first)PROFILE=<profile-id>
# 1. Launch (async — returns 202)curl -s localhost:7891/api/profiles/$PROFILE/launch -X POST
# 2. Wait until the browser is upuntil [ "$(curl -s localhost:7891/api/profiles/$PROFILE/status | jq -r .data.status)" = "running" ]; do sleep 1done
# 3. Automate (now safe — no PROFILE_NOT_RUNNING)curl -s localhost:7891/api/automation/$PROFILE/navigate -X POST \ -H 'Content-Type: application/json' -d '{"url":"https://example.com"}'
# 4. Stop — syncs cookies & tabs before closingcurl -s localhost:7891/api/profiles/$PROFILE/stop -X POSTНаступні кроки
Section titled “Наступні кроки”- HTTP API — ендпоінти дій автоматизації, коли профіль запущено.
- Довідник API — повний каталог ендпоінтів та дій.
- Найкращі практики — батчинг, знімки та правила стелсу.
- Встановлення агентного скіла — готові інструкції для AI-агента.