diff --git a/docs/uk/tools/browser.md b/docs/uk/tools/browser.md index a9b7467f3..a502dee37 100644 --- a/docs/uk/tools/browser.md +++ b/docs/uk/tools/browser.md @@ -1,15 +1,15 @@ --- read_when: - Додавання автоматизації браузера, керованої агентом - - Налагодження причин, через які openclaw заважає вашому власному Chrome + - Налагодження того, чому openclaw заважає роботі вашого власного Chrome - Реалізація налаштувань браузера та життєвого циклу в застосунку macOS summary: Інтегрований сервіс керування браузером + команди дій title: Браузер (керований OpenClaw) x-i18n: - generated_at: "2026-04-22T20:49:59Z" + generated_at: "2026-04-23T15:38:23Z" model: gpt-5.4 provider: openai - source_hash: 865b0020d66366a62939f8ed28b9cda88d56ee7f5245b1b24a4e804ce55ea42d + source_hash: bc2eb4c6ee3eb85d4aa599164315a4b2355d8f6c628ee62af2e913b1d4bfc516 source_path: tools/browser.md workflow: 15 --- @@ -20,21 +20,21 @@ OpenClaw може запускати **окремий профіль Chrome/Brav Він ізольований від вашого особистого браузера та керується через невеликий локальний сервіс керування всередині Gateway (лише loopback). -Пояснення для початківців: +Погляд для початківців: -- Думайте про це як про **окремий браузер лише для агента**. -- Профіль `openclaw` **не** торкається профілю вашого особистого браузера. -- Агент може **відкривати вкладки, читати сторінки, натискати та вводити текст** у безпечному середовищі. -- Вбудований профіль `user` підключається до вашої реальної сесії Chrome, у якій виконано вхід, через Chrome MCP. +- Сприймайте це як **окремий браузер лише для агента**. +- Профіль `openclaw` **не** зачіпає ваш особистий профіль браузера. +- Агент може **відкривати вкладки, читати сторінки, натискати й вводити текст** у безпечному середовищі. +- Вбудований профіль `user` підключається до вашої справжньої сесії Chrome з виконаним входом через Chrome MCP. ## Що ви отримуєте - Окремий профіль браузера з назвою **openclaw** (типово з помаранчевим акцентом). - Детерміноване керування вкладками (перелік/відкриття/фокусування/закриття). - Дії агента (натискання/введення/перетягування/вибір), знімки, скриншоти, PDF. -- Необов’язкову підтримку кількох профілів (`openclaw`, `work`, `remote`, ...). +- Необов’язкова підтримка кількох профілів (`openclaw`, `work`, `remote`, ...). -Цей браузер **не** призначений для вашого щоденного використання. Це безпечна, ізольована поверхня для +Цей браузер **не** є вашим основним щоденним браузером. Це безпечна, ізольована поверхня для автоматизації та перевірки агентом. ## Швидкий старт @@ -46,17 +46,15 @@ openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` -Якщо ви отримуєте повідомлення “Browser disabled”, увімкніть його в конфігурації (див. нижче) і перезапустіть +Якщо ви отримуєте “Browser disabled”, увімкніть це в конфігурації (див. нижче) і перезапустіть Gateway. -Якщо `openclaw browser` узагалі відсутня або агент каже, що інструмент браузера -недоступний, перейдіть до [Відсутня команда браузера або інструмент](/uk/tools/browser#missing-browser-command-or-tool). +Якщо `openclaw browser` повністю відсутня або агент каже, що інструмент браузера +недоступний, перейдіть до [Відсутня команда або інструмент браузера](/uk/tools/browser#missing-browser-command-or-tool). ## Керування Plugin -Типовий інструмент `browser` тепер є вбудованим Plugin, який постачається -увімкненим за замовчуванням. Це означає, що ви можете вимкнути або замінити його, не видаляючи решту -системи Plugin OpenClaw: +Типовий інструмент `browser` — це вбудований Plugin. Вимкніть його, щоб замінити іншим plugin, який реєструє той самий інструмент із назвою `browser`: ```json5 { @@ -70,43 +68,13 @@ Gateway. } ``` -Вимкніть вбудований Plugin перед встановленням іншого Plugin, який надає -те саме ім’я інструмента `browser`. Типовий режим роботи браузера потребує обох умов: +Для значень за замовчуванням потрібні і `plugins.entries.browser.enabled`, і `browser.enabled=true`. Якщо вимкнути лише plugin, це прибере CLI `openclaw browser`, gateway-метод `browser.request`, інструмент агента та сервіс керування як єдине ціле; ваша конфігурація `browser.*` залишиться недоторканою для заміни. -- `plugins.entries.browser.enabled` не вимкнено -- `browser.enabled=true` +Зміни конфігурації браузера потребують перезапуску Gateway, щоб plugin міг повторно зареєструвати свій сервіс. -Якщо ви вимкнете лише Plugin, вбудований CLI браузера (`openclaw browser`), -метод gateway (`browser.request`), інструмент агента та типовий сервіс керування браузером -зникнуть одночасно. Ваш конфіг `browser.*` залишиться недоторканим, щоб його міг повторно використати -Plugin-замінник. +## Відсутня команда або інструмент браузера -Вбудований Plugin браузера тепер також володіє реалізацією середовища виконання браузера. -У core залишаються лише спільні допоміжні засоби Plugin SDK плюс сумісні повторні експорти для -старих внутрішніх шляхів імпорту. На практиці видалення або заміна пакета Plugin браузера -прибирає набір можливостей браузера замість того, щоб залишати позаду друге середовище виконання, -яким володіє core. - -Зміни конфігурації браузера все ще потребують перезапуску Gateway, щоб вбудований Plugin -міг повторно зареєструвати свій сервіс браузера з новими налаштуваннями. - -## Відсутня команда браузера або інструмент - -Якщо після оновлення `openclaw browser` раптово стала невідомою командою або -агент повідомляє, що інструмент браузера відсутній, найпоширенішою причиною є -обмежувальний список `plugins.allow`, який не містить `browser`. - -Приклад некоректної конфігурації: - -```json5 -{ - plugins: { - allow: ["telegram"], - }, -} -``` - -Виправте це, додавши `browser` до списку дозволених Plugin: +Якщо після оновлення `openclaw browser` невідома, `browser.request` відсутній або агент повідомляє, що інструмент браузера недоступний, звичайною причиною є список `plugins.allow`, у якому немає `browser`. Додайте його: ```json5 { @@ -116,37 +84,26 @@ Plugin-замінник. } ``` -Важливі примітки: +`browser.enabled=true`, `plugins.entries.browser.enabled=true` і `tools.alsoAllow: ["browser"]` не замінюють наявність у списку allowlist — allowlist керує завантаженням plugin, а політика інструментів застосовується лише після завантаження. Повне видалення `plugins.allow` також відновлює типову поведінку. -- `browser.enabled=true` саме по собі недостатньо, коли встановлено `plugins.allow`. -- `plugins.entries.browser.enabled=true` саме по собі також недостатньо, коли встановлено `plugins.allow`. -- `tools.alsoAllow: ["browser"]` **не** завантажує вбудований Plugin браузера. Це лише коригує політику інструментів після того, як Plugin уже завантажено. -- Якщо вам не потрібен обмежувальний список дозволених Plugin, видалення `plugins.allow` також відновлює типову поведінку вбудованого браузера. - -Типові симптоми: - -- `openclaw browser` є невідомою командою. -- `browser.request` відсутній. -- Агент повідомляє, що інструмент браузера недоступний або відсутній. - -## Профілі: `openclaw` і `user` +## Профілі: `openclaw` проти `user` - `openclaw`: керований, ізольований браузер (розширення не потрібне). -- `user`: вбудований профіль підключення Chrome MCP до вашої **реальної сесії Chrome** - із виконаним входом. +- `user`: вбудований профіль підключення Chrome MCP до вашої **справжньої сесії Chrome** + з виконаним входом. Для викликів інструмента браузера агентом: -- Типово: використовувати ізольований браузер `openclaw`. -- Надавайте перевагу `profile="user"`, коли важливі наявні сесії з виконаним входом і користувач +- Типово: використовується ізольований браузер `openclaw`. +- Віддавайте перевагу `profile="user"`, коли важливі наявні сесії з виконаним входом і користувач перебуває за комп’ютером, щоб натиснути/підтвердити будь-який запит на підключення. -- `profile` є явним перевизначенням, коли ви хочете конкретний режим браузера. +- `profile` — це явне перевизначення, коли ви хочете конкретний режим браузера. Установіть `browser.defaultProfile: "openclaw"`, якщо хочете, щоб керований режим був типовим. ## Конфігурація -Налаштування браузера містяться в `~/.openclaw/openclaw.json`. +Налаштування браузера зберігаються в `~/.openclaw/openclaw.json`. ```json5 { @@ -187,111 +144,127 @@ Plugin-замінник. } ``` -Примітки: + -- Сервіс керування браузером прив’язується до loopback на порті, похідному від `gateway.port` - (типово: `18791`, тобто gateway + 2). -- Якщо ви перевизначаєте порт Gateway (`gateway.port` або `OPENCLAW_GATEWAY_PORT`), - похідні порти браузера зміщуються, щоб залишатися в тій самій «родині». -- Якщо `cdpUrl` не задано, типово використовується керований локальний порт CDP. -- `remoteCdpTimeoutMs` застосовується до перевірок доступності віддаленого (не-loopback) CDP. -- `remoteCdpHandshakeTimeoutMs` застосовується до перевірок доступності рукостискання WebSocket віддаленого CDP. -- Навігація/відкриття вкладок у браузері захищені від SSRF перед навігацією та повторно перевіряються за принципом best-effort на фінальному `http(s)` URL після навігації. -- У строгому режимі SSRF також перевіряються виявлення/проби віддалених кінцевих точок CDP (`cdpUrl`, включно з пошуками `/json/version`). -- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` типово вимкнено. Установлюйте `true` лише тоді, коли ви свідомо довіряєте доступу браузера до приватної мережі. -- `browser.ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий псевдонім для сумісності. -- `attachOnly: true` означає «ніколи не запускати локальний браузер; лише підключатися, якщо він уже працює». -- `color` і `color` для окремого профілю тонують інтерфейс браузера, щоб ви могли бачити, який профіль активний. -- Типовим профілем є `openclaw` (окремий браузер, яким керує OpenClaw). Використовуйте `defaultProfile: "user"`, щоб перейти на браузер користувача з виконаним входом. -- Порядок автовиявлення: системний типовий браузер, якщо він на базі Chromium; інакше Chrome → Brave → Edge → Chromium → Chrome Canary. -- Локальним профілям `openclaw` автоматично призначаються `cdpPort`/`cdpUrl` — задавайте їх лише для віддаленого CDP. -- `driver: "existing-session"` використовує Chrome DevTools MCP замість сирого CDP. Не - задавайте `cdpUrl` для цього драйвера. -- Установіть `browser.profiles..userDataDir`, коли профіль existing-session - має підключатися до нетипового профілю користувача Chromium, наприклад Brave або Edge. + -## Використання Brave (або іншого браузера на базі Chromium) +- Сервіс керування прив’язується до loopback на порту, похідному від `gateway.port` (типово `18791` = gateway + 2). Перевизначення `gateway.port` або `OPENCLAW_GATEWAY_PORT` зміщує похідні порти в межах тієї ж групи. +- Локальні профілі `openclaw` автоматично призначають `cdpPort`/`cdpUrl`; задавайте їх лише для віддаленого CDP. Якщо `cdpUrl` не задано, типово використовується керований локальний порт CDP. +- `remoteCdpTimeoutMs` застосовується до перевірок доступності HTTP віддаленого (не-loopback) CDP; `remoteCdpHandshakeTimeoutMs` застосовується до handshake WebSocket для віддаленого CDP. -Якщо вашим **системним браузером за замовчуванням** є браузер на базі Chromium (Chrome/Brave/Edge тощо), + + + + +- Навігація браузера та open-tab захищені від SSRF перед переходом і повторно перевіряються в режимі best-effort за фінальною URL-адресою `http(s)` після цього. +- У строгому режимі SSRF також перевіряються виявлення віддаленої CDP endpoint і запити `/json/version` (`cdpUrl`). +- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` типово вимкнено; вмикайте лише тоді, коли доступ браузера до приватної мережі є навмисно довіреним. +- `browser.ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім. + + + + + +- `attachOnly: true` означає ніколи не запускати локальний браузер; лише підключатися, якщо він уже працює. +- `color` (верхнього рівня та для кожного профілю) забарвлює UI браузера, щоб ви могли бачити, який профіль активний. +- Типовий профіль — `openclaw` (керований автономний). Використайте `defaultProfile: "user"`, щоб перейти на браузер користувача з виконаним входом. +- Порядок автовизначення: системний типовий браузер, якщо він на основі Chromium; інакше Chrome → Brave → Edge → Chromium → Chrome Canary. +- `driver: "existing-session"` використовує Chrome DevTools MCP замість сирого CDP. Не задавайте `cdpUrl` для цього драйвера. +- Установіть `browser.profiles..userDataDir`, коли профіль existing-session має підключатися до нетипового профілю користувача Chromium (Brave, Edge тощо). + + + + + +## Використання Brave (або іншого браузера на основі Chromium) + +Якщо вашим **системним типовим** браузером є браузер на основі Chromium (Chrome/Brave/Edge тощо), OpenClaw використовує його автоматично. Установіть `browser.executablePath`, щоб перевизначити -автовиявлення: - -Приклад CLI: +автовизначення: ```bash openclaw config set browser.executablePath "/usr/bin/google-chrome" ``` +Або задайте це в конфігурації для кожної платформи: + + + ```json5 -// macOS { browser: { - executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" - } -} - -// Windows -{ - browser: { - executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe" - } -} - -// Linux -{ - browser: { - executablePath: "/usr/bin/brave-browser" - } + executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", + }, } ``` + + +```json5 +{ + browser: { + executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe", + }, +} +``` + + +```json5 +{ + browser: { + executablePath: "/usr/bin/brave-browser", + }, +} +``` + + -## Локальне та віддалене керування +## Локальне й віддалене керування -- **Локальне керування (типово):** Gateway запускає loopback-сервіс керування і може запускати локальний браузер. -- **Віддалене керування (хост Node):** запустіть хост Node на машині, де є браузер; Gateway проксуватиме до нього дії браузера. -- **Віддалений CDP:** установіть `browser.profiles..cdpUrl` (або `browser.cdpUrl`), щоб - підключитися до віддаленого браузера на базі Chromium. У цьому випадку OpenClaw не запускатиме локальний браузер. +- **Локальне керування (типово):** Gateway запускає loopback-сервіс керування й може запускати локальний браузер. +- **Віддалене керування (node host):** запустіть node host на машині, де є браузер; Gateway проксуватиме до нього дії браузера. +- **Віддалений CDP:** задайте `browser.profiles..cdpUrl` (або `browser.cdpUrl`), щоб + підключитися до віддаленого браузера на основі Chromium. У цьому випадку OpenClaw не запускатиме локальний браузер. -Поведінка під час зупинки відрізняється залежно від режиму профілю: +Поведінка зупинки відрізняється залежно від режиму профілю: - локальні керовані профілі: `openclaw browser stop` зупиняє процес браузера, який запустив OpenClaw -- профілі лише для підключення та профілі віддаленого CDP: `openclaw browser stop` закриває активну - сесію керування та скидає перевизначення емуляції Playwright/CDP (viewport, +- профілі лише для підключення та профілі з віддаленим CDP: `openclaw browser stop` закриває активну + керувальну сесію та скидає перевизначення емуляції Playwright/CDP (viewport, колірну схему, локаль, часовий пояс, офлайн-режим та подібний стан), навіть якщо OpenClaw не запускав жодного процесу браузера -URL віддаленого CDP можуть містити автентифікацію: +URL-адреси віддаленого CDP можуть містити автентифікацію: - Токени в параметрах запиту (наприклад, `https://provider.example?token=`) - HTTP Basic auth (наприклад, `https://user:pass@provider.example`) -OpenClaw зберігає автентифікацію під час виклику кінцевих точок `/json/*` і під час підключення -до WebSocket CDP. Для токенів краще використовувати змінні середовища або менеджери секретів, -а не зберігати їх у файлах конфігурації. +OpenClaw зберігає автентифікацію під час виклику endpoint `/json/*` і під час підключення +до WebSocket CDP. Для токенів віддавайте перевагу змінним середовища або менеджерам секретів, +а не зберіганню їх у файлах конфігурації. -## Проксі браузера Node (типовий режим без конфігурації) +## Node browser proxy (типова поведінка без конфігурації) -Якщо ви запускаєте **хост Node** на машині, де знаходиться ваш браузер, OpenClaw може -автоматично спрямовувати виклики інструмента браузера до цього node без будь-якої додаткової конфігурації браузера. +Якщо ви запускаєте **node host** на машині, де розташований ваш браузер, OpenClaw може +автоматично спрямовувати виклики інструмента браузера до цього вузла без будь-якої додаткової конфігурації браузера. Це типовий шлях для віддалених gateway. Примітки: -- Хост Node надає свій локальний сервер керування браузером через **проксі-команду**. -- Профілі беруться з власного конфігу `browser.profiles` node (так само, як локально). -- `nodeHost.browserProxy.allowProfiles` є необов’язковим. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі залишаються доступними через проксі, включно з маршрутами створення/видалення профілів. -- Якщо ви встановлюєте `nodeHost.browserProxy.allowProfiles`, OpenClaw розглядає це як межу принципу найменших привілеїв: лише профілі зі списку дозволених можуть бути цільовими, а маршрути створення/видалення постійних профілів блокуються на поверхні проксі. -- Вимкніть це, якщо не хочете використовувати: +- Node host відкриває свій локальний сервер керування браузером через **proxy command**. +- Профілі беруться з власної конфігурації `browser.profiles` вузла (так само, як локально). +- `nodeHost.browserProxy.allowProfiles` — необов’язковий параметр. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі й далі доступні через proxy, включно з маршрутами створення/видалення профілів. +- Якщо ви задаєте `nodeHost.browserProxy.allowProfiles`, OpenClaw трактує це як межу найменших привілеїв: можна адресувати лише профілі з allowlist, а маршрути створення/видалення постійних профілів блокуються на поверхні proxy. +- Вимкніть це, якщо воно вам не потрібне: - На node: `nodeHost.browserProxy.enabled=false` - На gateway: `gateway.nodes.browser.mode="off"` -## Browserless (розміщений віддалений CDP) +## Browserless (хостинговий віддалений CDP) -[Browserless](https://browserless.io) — це розміщений сервіс Chromium, який надає -URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати будь-яку форму, але -для профілю віддаленого браузера найпростішим варіантом є прямий URL WebSocket -з документації підключення Browserless. +[Browserless](https://browserless.io) — це хостингова служба Chromium, яка надає +URL-адреси підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати обидва варіанти, але +для віддаленого профілю браузера найпростішим варіантом є пряма URL-адреса WebSocket +з документації Browserless щодо підключення. Приклад: @@ -315,43 +288,39 @@ URL підключення CDP через HTTPS і WebSocket. OpenClaw може Примітки: - Замініть `` на ваш реальний токен Browserless. -- Виберіть регіональну кінцеву точку, яка відповідає вашому обліковому запису Browserless (див. їхню документацію). -- Якщо Browserless надає вам базовий URL HTTPS, ви можете або перетворити його на - `wss://` для прямого підключення CDP, або залишити URL HTTPS і дозволити OpenClaw - виявити `/json/version`. +- Виберіть endpoint регіону, що відповідає вашому обліковому запису Browserless (див. їхню документацію). +- Якщо Browserless надає вам базову URL-адресу HTTPS, ви можете або перетворити її на + `wss://` для прямого підключення CDP, або залишити HTTPS URL, і тоді OpenClaw + сам виконає виявлення `/json/version`. -## Провайдери прямого WebSocket CDP +## Постачальники прямого WebSocket CDP -Деякі розміщені сервіси браузера надають **пряму кінцеву точку WebSocket** замість -стандартного виявлення CDP на основі HTTP (`/json/version`). OpenClaw приймає три -форми URL CDP і автоматично вибирає правильну стратегію підключення: +Деякі хостингові служби браузерів надають **прямий endpoint WebSocket** замість +стандартного HTTP-виявлення CDP (`/json/version`). OpenClaw підтримує три форми +URL-адрес CDP і автоматично вибирає правильну стратегію підключення: -- **Виявлення HTTP(S)** — `http://host[:port]` або `https://host[:port]`. - OpenClaw викликає `/json/version`, щоб виявити URL налагоджувача WebSocket, а потім +- **HTTP(S)-виявлення** — `http://host[:port]` або `https://host[:port]`. + OpenClaw викликає `/json/version`, щоб виявити URL WebSocket debugger, а потім підключається. Резервного переходу на WebSocket немає. -- **Прямі кінцеві точки WebSocket** — `ws://host[:port]/devtools//` або +- **Прямі endpoints WebSocket** — `ws://host[:port]/devtools//` або `wss://...` зі шляхом `/devtools/browser|page|worker|shared_worker|service_worker/`. - OpenClaw підключається напряму через рукостискання WebSocket і повністю пропускає + OpenClaw підключається безпосередньо через handshake WebSocket і повністю пропускає `/json/version`. -- **Кореневі адреси WebSocket без шляху** — `ws://host[:port]` або `wss://host[:port]` без +- **Кореневі URL WebSocket без шляху** — `ws://host[:port]` або `wss://host[:port]` без шляху `/devtools/...` (наприклад, [Browserless](https://browserless.io), - [Browserbase](https://www.browserbase.com)). OpenClaw спочатку пробує HTTP - виявлення через `/json/version` (нормалізуючи схему до `http`/`https`); + [Browserbase](https://www.browserbase.com)). OpenClaw спочатку пробує HTTP-виявлення + `/json/version` (нормалізуючи схему до `http`/`https`); якщо виявлення повертає `webSocketDebuggerUrl`, він використовується, інакше OpenClaw - переходить до прямого рукостискання WebSocket на корені без шляху. Це покриває - як віддалені порти налагодження у стилі Chrome, так і провайдерів лише з WebSocket. - -Звичайні `ws://host:port` / `wss://host:port` без шляху `/devtools/...`, -спрямовані на локальний екземпляр Chrome, підтримуються через резервну схему -«спочатку виявлення» — Chrome приймає WebSocket upgrades лише на конкретному шляху -для браузера або цілі, який повертає `/json/version`, тому одного лише рукостискання -на корені без шляху буде недостатньо. + переходить до прямого handshake WebSocket на корені без шляху. Це дозволяє + bare `ws://`, спрямованому на локальний Chrome, все одно підключатися, оскільки Chrome + приймає WebSocket upgrade лише на конкретному шляху для цілі з + `/json/version`. ### Browserbase [Browserbase](https://www.browserbase.com) — це хмарна платформа для запуску -headless-браузерів із вбудованим розв’язанням CAPTCHA, stealth mode та резидентними -проксі. +headless-браузерів із вбудованим розв’язуванням CAPTCHA, stealth mode та +резидентними proxy. ```json5 { @@ -374,75 +343,75 @@ headless-браузерів із вбудованим розв’язанням - [Зареєструйтеся](https://www.browserbase.com/sign-up) і скопіюйте свій **API Key** з [панелі Overview](https://www.browserbase.com/overview). -- Замініть `` на ваш справжній API key Browserbase. -- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тому - ручний етап створення сесії не потрібен. -- Безкоштовний рівень дозволяє одну одночасну сесію та одну браузерну годину на місяць. - Обмеження платних планів дивіться в [pricing](https://www.browserbase.com/pricing). -- Повний довідник API, - посібники з SDK та приклади інтеграції дивіться в [документації Browserbase](https://docs.browserbase.com). +- Замініть `` на свій справжній API key Browserbase. +- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тож + окремий крок ручного створення сесії не потрібен. +- Безкоштовний тариф дозволяє одну одночасну сесію та одну годину браузера на місяць. + Див. [pricing](https://www.browserbase.com/pricing) щодо лімітів платних планів. +- Див. [документацію Browserbase](https://docs.browserbase.com) для повного + довідника API, посібників зі SDK та прикладів інтеграції. ## Безпека Ключові ідеї: -- Керування браузером доступне лише через loopback; доступ проходить через автентифікацію Gateway або pairинг node. -- Окремий loopback HTTP API браузера використовує **лише автентифікацію через shared secret**: - bearer auth із токеном gateway, `x-openclaw-password` або HTTP Basic auth із +- Керування браузером доступне лише через loopback; доступ проходить через автентифікацію Gateway або pairing вузла. +- Автономний loopback HTTP API браузера використовує **лише автентифікацію shared-secret**: + bearer auth за токеном gateway, `x-openclaw-password` або HTTP Basic auth із налаштованим паролем gateway. -- Заголовки ідентичності Tailscale Serve і `gateway.auth.mode: "trusted-proxy"` - **не** автентифікують цей окремий loopback API браузера. -- Якщо керування браузером увімкнено й не налаштовано жодної shared-secret автентифікації, OpenClaw +- Заголовки ідентифікації Tailscale Serve і `gateway.auth.mode: "trusted-proxy"` + **не** автентифікують цей автономний loopback API браузера. +- Якщо керування браузером увімкнено й shared-secret автентифікацію не налаштовано, OpenClaw автоматично генерує `gateway.auth.token` під час запуску та зберігає його в конфігурації. -- OpenClaw **не** генерує цей токен автоматично, якщо `gateway.auth.mode` уже має значення +- OpenClaw **не** генерує цей токен автоматично, коли `gateway.auth.mode` вже має значення `password`, `none` або `trusted-proxy`. -- Тримайте Gateway і будь-які хости node у приватній мережі (Tailscale); уникайте публічної доступності. -- Ставтеся до URL/токенів віддаленого CDP як до секретів; надавайте перевагу змінним середовища або менеджеру секретів. +- Тримайте Gateway і будь-які node host у приватній мережі (Tailscale); уникайте публічного доступу. +- Ставтеся до URL-адрес/токенів віддаленого CDP як до секретів; віддавайте перевагу env vars або менеджеру секретів. Поради щодо віддаленого CDP: -- За можливості використовуйте зашифровані кінцеві точки (HTTPS або WSS) і короткоживучі токени. +- За можливості віддавайте перевагу зашифрованим endpoint (HTTPS або WSS) і короткоживучим токенам. - Уникайте вбудовування довгоживучих токенів безпосередньо у файли конфігурації. ## Профілі (кілька браузерів) -OpenClaw підтримує кілька іменованих профілів (конфігурацій маршрутизації). Профілі можуть бути: +OpenClaw підтримує кілька іменованих профілів (конфігурацій маршрутизації). Профілі можуть бути такими: -- **openclaw-managed**: окремий екземпляр браузера на базі Chromium із власним каталогом користувацьких даних і портом CDP -- **remote**: явний URL CDP (браузер на базі Chromium, запущений деінде) -- **existing session**: ваш наявний профіль Chrome через автопідключення Chrome DevTools MCP +- **керовані openclaw**: окремий екземпляр браузера на основі Chromium із власним каталогом user data + портом CDP +- **віддалені**: явна URL-адреса CDP (браузер на основі Chromium, що працює деінде) +- **наявна сесія**: ваш наявний профіль Chrome через автопідключення Chrome DevTools MCP -Типові значення: +Типова поведінка: -- Профіль `openclaw` створюється автоматично, якщо його немає. -- Профіль `user` вбудований для existing-session підключення Chrome MCP. -- Профілі existing-session, окрім `user`, є добровільними; створюйте їх за допомогою `--driver existing-session`. +- Профіль `openclaw` автоматично створюється, якщо його немає. +- Профіль `user` вбудований для підключення до наявної сесії Chrome MCP. +- Профілі наявної сесії, окрім `user`, вмикаються лише за бажанням; створюйте їх за допомогою `--driver existing-session`. - Локальні порти CDP типово виділяються з діапазону **18800–18899**. -- Видалення профілю переміщує його локальний каталог даних до Trash. +- Видалення профілю переміщує його локальний каталог даних у Trash. -Усі кінцеві точки керування приймають `?profile=`; CLI використовує `--browser-profile`. +Усі endpoint керування приймають `?profile=`; CLI використовує `--browser-profile`. ## Existing-session через Chrome DevTools MCP -OpenClaw також може підключатися до запущеного профілю браузера на базі Chromium через +OpenClaw також може підключатися до вже запущеного профілю браузера на основі Chromium через офіційний сервер Chrome DevTools MCP. Це повторно використовує вкладки та стан входу, які вже відкриті в цьому профілі браузера. -Офіційні довідкові матеріали та інструкції з налаштування: +Офіційні довідкові матеріали та посилання на налаштування: - [Chrome for Developers: Use Chrome DevTools MCP with your browser session](https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session) -- [README Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp) +- [Chrome DevTools MCP README](https://github.com/ChromeDevTools/chrome-devtools-mcp) Вбудований профіль: - `user` -Необов’язково: створіть власний custom existing-session профіль, якщо вам потрібні -інша назва, колір або каталог даних браузера. +Необов’язково: створіть власний custom-профіль existing-session, якщо хочете +іншу назву, колір або каталог даних браузера. Типова поведінка: -- Вбудований профіль `user` використовує автопідключення Chrome MCP, яке спрямоване на +- Вбудований профіль `user` використовує автопідключення Chrome MCP, яке націлюється на типовий локальний профіль Google Chrome. Використовуйте `userDataDir` для Brave, Edge, Chromium або нетипового профілю Chrome: @@ -466,15 +435,15 @@ OpenClaw також може підключатися до запущеного 1. Відкрийте сторінку inspect цього браузера для віддаленого налагодження. 2. Увімкніть віддалене налагодження. -3. Залиште браузер запущеним і підтвердьте запит на підключення, коли OpenClaw приєднається. +3. Залиште браузер запущеним і підтвердьте запит на підключення, коли OpenClaw під’єднається. -Поширені сторінки inspect: +Типові сторінки inspect: - Chrome: `chrome://inspect/#remote-debugging` - Brave: `brave://inspect/#remote-debugging` - Edge: `edge://inspect/#remote-debugging` -Live attach smoke test: +Live smoke test підключення: ```bash openclaw browser --browser-profile user start @@ -483,73 +452,62 @@ openclaw browser --browser-profile user tabs openclaw browser --browser-profile user snapshot --format ai ``` -Ознаки успішного підключення: +Як виглядає успіх: - `status` показує `driver: existing-session` - `status` показує `transport: chrome-mcp` - `status` показує `running: true` -- `tabs` перелічує вже відкриті у вас вкладки браузера -- `snapshot` повертає refs із вибраної активної вкладки +- `tabs` перелічує вже відкриті вкладки браузера +- `snapshot` повертає refs з вибраної live-вкладки Що перевірити, якщо підключення не працює: -- цільовий браузер на базі Chromium має версію `144+` -- на сторінці inspect цього браузера увімкнено віддалене налагодження +- цільовий браузер на основі Chromium має версію `144+` +- у сторінці inspect цього браузера ввімкнено віддалене налагодження - браузер показав запит на згоду на підключення, і ви його підтвердили -- `openclaw doctor` переносить старий конфіг браузера на основі розширення та перевіряє, що - Chrome встановлено локально для типових профілів автопідключення, але не може - увімкнути віддалене налагодження на стороні браузера за вас +- `openclaw doctor` мігрує стару конфігурацію браузера на основі розширення та перевіряє, + що Chrome локально встановлено для типових профілів автопідключення, але він не може + увімкнути віддалене налагодження на боці браузера за вас Використання агентом: -- Використовуйте `profile="user"`, коли вам потрібен стан браузера користувача з виконаним входом. -- Якщо ви використовуєте custom existing-session профіль, передайте явну назву цього профілю. +- Використовуйте `profile="user"`, коли потрібен стан браузера користувача з виконаним входом. +- Якщо ви використовуєте custom-профіль existing-session, передайте його явну назву профілю. - Вибирайте цей режим лише тоді, коли користувач перебуває за комп’ютером, щоб підтвердити запит на підключення. -- Gateway або хост node може запускати `npx chrome-devtools-mcp@latest --autoConnect` +- Gateway або node host можуть запускати `npx chrome-devtools-mcp@latest --autoConnect` Примітки: -- Цей шлях є ризикованішим, ніж ізольований профіль `openclaw`, оскільки він може - діяти всередині вашої сесії браузера, у якій виконано вхід. -- OpenClaw не запускає браузер для цього драйвера; він підключається лише до - наявної сесії. +- Цей шлях ризикованіший, ніж ізольований профіль `openclaw`, оскільки він може + виконувати дії у вашій сесії браузера з виконаним входом. +- OpenClaw не запускає браузер для цього драйвера; він лише підключається. - Тут OpenClaw використовує офіційний потік Chrome DevTools MCP `--autoConnect`. Якщо - встановлено `userDataDir`, OpenClaw передає його далі, щоб націлитися на цей явний - каталог користувацьких даних Chromium. -- Скріншоти existing-session підтримують знімки сторінки та знімки елементів через `--ref` - зі snapshot, але не CSS-селектори `--element`. -- Скріншоти сторінок existing-session працюють без Playwright через Chrome MCP. - Скріншоти елементів за ref (`--ref`) там також працюють, але `--full-page` - не можна поєднувати з `--ref` або `--element`. -- Дії existing-session усе ще більш обмежені, ніж у режимі керованого браузера: - - `click`, `type`, `hover`, `scrollIntoView`, `drag` і `select` потребують - snapshot refs замість CSS-селекторів - - `click` підтримує лише ліву кнопку миші (без перевизначення кнопки або модифікаторів) - - `type` не підтримує `slowly=true`; використовуйте `fill` або `press` - - `press` не підтримує `delayMs` - - `hover`, `scrollIntoView`, `drag`, `select`, `fill` і `evaluate` не - підтримують перевизначення timeout для окремого виклику - - `select` наразі підтримує лише одне значення -- Existing-session `wait --url` підтримує точні, часткові та glob-шаблони, - як і інші драйвери браузера. `wait --load networkidle` поки не підтримується. -- Хуки завантаження файлів existing-session вимагають `ref` або `inputRef`, підтримують по одному файлу за раз і не підтримують націлювання через CSS `element`. -- Хуки діалогів existing-session не підтримують перевизначення timeout. -- Деякі можливості все ще потребують режиму керованого браузера, зокрема пакетні - дії, експорт PDF, перехоплення завантажень і `responsebody`. -- Existing-session може підключатися на вибраному хості або через підключений - browser node. Якщо Chrome працює деінде й browser node не підключено, використовуйте - віддалений CDP або хост node. + задано `userDataDir`, його буде передано далі для націлювання на цей каталог user data. +- Existing-session може підключатися на вибраному host або через підключений + browser node. Якщо Chrome знаходиться деінде й browser node не підключено, використовуйте + натомість віддалений CDP або node host. + + + +Порівняно з керованим профілем `openclaw`, драйвери existing-session мають більше обмежень: + +- **Скриншоти** — працюють знімки сторінки та знімки елементів через `--ref`; CSS-селектори `--element` не підтримуються. `--full-page` не можна поєднувати з `--ref` або `--element`. Для скриншотів сторінки чи елементів за ref Playwright не потрібен. +- **Дії** — `click`, `type`, `hover`, `scrollIntoView`, `drag` і `select` потребують snapshot refs (без CSS-селекторів). `click` працює лише для лівої кнопки миші. `type` не підтримує `slowly=true`; використовуйте `fill` або `press`. `press` не підтримує `delayMs`. `hover`, `scrollIntoView`, `drag`, `select`, `fill` і `evaluate` не підтримують timeout для окремого виклику. `select` приймає одне значення. +- **Очікування / вивантаження / діалог** — `wait --url` підтримує точні збіги, підрядки та glob-шаблони; `wait --load networkidle` не підтримується. Хуки вивантаження потребують `ref` або `inputRef`, по одному файлу за раз, без CSS `element`. Хуки діалогу не підтримують перевизначення timeout. +- **Функції лише для керованого режиму** — пакетні дії, експорт PDF, перехоплення завантажень і `responsebody` усе ще потребують шляху керованого браузера. + + ## Гарантії ізоляції -- **Окремий каталог користувацьких даних**: ніколи не торкається профілю вашого особистого браузера. -- **Окремі порти**: уникає `9222`, щоб не створювати конфліктів із робочими процесами розробки. -- **Детерміноване керування вкладками**: націлювання на вкладки за `targetId`, а не за принципом «остання вкладка». +- **Виділений каталог user data**: ніколи не торкається вашого особистого профілю браузера. +- **Виділені порти**: уникає `9222`, щоб запобігти конфліктам із dev-робочими процесами. +- **Детерміноване керування вкладками**: націлювання на вкладки через `targetId`, а не “остання вкладка”. ## Вибір браузера -Під час локального запуску OpenClaw вибирає перший доступний: +Під час локального запуску OpenClaw вибирає перший доступний браузер: 1. Chrome 2. Brave @@ -561,19 +519,19 @@ openclaw browser --browser-profile user snapshot --format ai Платформи: -- macOS: перевіряються `/Applications` і `~/Applications`. -- Linux: шукаються `google-chrome`, `brave`, `microsoft-edge`, `chromium` тощо. -- Windows: перевіряються типові місця встановлення. +- macOS: перевіряє `/Applications` і `~/Applications`. +- Linux: шукає `google-chrome`, `brave`, `microsoft-edge`, `chromium` тощо. +- Windows: перевіряє типові місця встановлення. ## API керування (необов’язково) Лише для локальних інтеграцій Gateway надає невеликий loopback HTTP API: -- Status/start/stop: `GET /`, `POST /start`, `POST /stop` +- Стан/запуск/зупинка: `GET /`, `POST /start`, `POST /stop` - Вкладки: `GET /tabs`, `POST /tabs/open`, `POST /tabs/focus`, `DELETE /tabs/:targetId` -- Snapshot/screenshot: `GET /snapshot`, `POST /screenshot` +- Snapshot/скриншот: `GET /snapshot`, `POST /screenshot` - Дії: `POST /navigate`, `POST /act` -- Hooks: `POST /hooks/file-chooser`, `POST /hooks/dialog` +- Хуки: `POST /hooks/file-chooser`, `POST /hooks/dialog` - Завантаження: `POST /download`, `POST /wait/download` - Налагодження: `GET /console`, `POST /pdf` - Налагодження: `GET /errors`, `GET /requests`, `POST /trace/start`, `POST /trace/stop`, `POST /highlight` @@ -582,23 +540,23 @@ openclaw browser --browser-profile user snapshot --format ai - Стан: `GET /storage/:kind`, `POST /storage/:kind/set`, `POST /storage/:kind/clear` - Налаштування: `POST /set/offline`, `POST /set/headers`, `POST /set/credentials`, `POST /set/geolocation`, `POST /set/media`, `POST /set/timezone`, `POST /set/locale`, `POST /set/device` -Усі кінцеві точки приймають `?profile=`. +Усі endpoint приймають `?profile=`. -Якщо налаштовано shared-secret автентифікацію gateway, маршрути HTTP браузера також вимагають автентифікації: +Якщо налаштовано shared-secret автентифікацію gateway, HTTP-маршрути браузера також потребують автентифікації: - `Authorization: Bearer ` - `x-openclaw-password: ` або HTTP Basic auth із цим паролем Примітки: -- Цей окремий loopback API браузера **не** використовує trusted-proxy або - заголовки ідентичності Tailscale Serve. +- Цей автономний loopback API браузера **не** використовує trusted-proxy або + заголовки ідентифікації Tailscale Serve. - Якщо `gateway.auth.mode` має значення `none` або `trusted-proxy`, ці loopback-маршрути браузера - не успадковують режими з передаванням ідентичності; залишайте їх доступними лише через loopback. + не успадковують ці режими з ідентифікацією; залишайте їх доступними лише через loopback. ### Контракт помилок `/act` -`POST /act` використовує структуровану відповідь про помилку для валідації на рівні маршруту та +`POST /act` використовує структуровану відповідь помилки для валідації на рівні маршруту та збоїв політики: ```json @@ -607,11 +565,11 @@ openclaw browser --browser-profile user snapshot --format ai Поточні значення `code`: -- `ACT_KIND_REQUIRED` (HTTP 400): `kind` відсутній або не розпізнаний. -- `ACT_INVALID_REQUEST` (HTTP 400): нормалізація або валідація payload дії не пройшла. -- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): `selector` використано з непідтримуваним видом дії. +- `ACT_KIND_REQUIRED` (HTTP 400): `kind` відсутній або не розпізнається. +- `ACT_INVALID_REQUEST` (HTTP 400): payload дії не пройшов нормалізацію або валідацію. +- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): `selector` використано з непідтримуваним типом дії. - `ACT_EVALUATE_DISABLED` (HTTP 403): `evaluate` (або `wait --fn`) вимкнено конфігурацією. -- `ACT_TARGET_ID_MISMATCH` (HTTP 403): верхньорівневий або пакетний `targetId` конфліктує з ціллю запиту. +- `ACT_TARGET_ID_MISMATCH` (HTTP 403): `targetId` верхнього рівня або пакетний `targetId` конфліктує з ціллю запиту. - `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): дія не підтримується для профілів existing-session. Інші збої під час виконання все ще можуть повертати `{ "error": "" }` без @@ -619,33 +577,33 @@ openclaw browser --browser-profile user snapshot --format ai ### Вимога Playwright -Деякі можливості (navigate/act/AI snapshot/role snapshot, скриншоти елементів, -PDF) потребують Playwright. Якщо Playwright не встановлено, ці кінцеві точки повертають -зрозумілу помилку 501. +Деякі функції (`navigate`/`act`/AI snapshot/role snapshot, скриншоти елементів, +PDF) потребують Playwright. Якщо Playwright не встановлено, ці endpoint повертають +чітку помилку 501. Що все ще працює без Playwright: -- ARIA snapshot +- ARIA snapshots - Скриншоти сторінки для керованого браузера `openclaw`, коли доступний WebSocket CDP для окремої вкладки - Скриншоти сторінки для профілів `existing-session` / Chrome MCP -- Скриншоти existing-session за ref (`--ref`) з виводу snapshot +- Скриншоти existing-session за `ref` (`--ref`) з виводу snapshot Що все ще потребує Playwright: - `navigate` - `act` -- AI snapshot / role snapshot +- AI snapshots / role snapshots - Скриншоти елементів за CSS-селектором (`--element`) -- повний експорт PDF браузера +- Повний експорт PDF браузера -Скриншоти елементів також не приймають `--full-page`; маршрут повертає `fullPage is +Скриншоти елементів також відхиляють `--full-page`; маршрут повертає `fullPage is not supported for element screenshots`. -Якщо ви бачите `Playwright is not available in this gateway build`, відновіть залежності середовища виконання -вбудованого Plugin браузера, щоб було встановлено `playwright-core`, -а потім перезапустіть gateway. Для пакетних установок виконайте `openclaw doctor --fix`. -Для Docker також установіть двійкові файли браузера Chromium, як показано нижче. +Якщо ви бачите `Playwright is not available in this gateway build`, відновіть +runtime-залежності вбудованого browser plugin так, щоб було встановлено `playwright-core`, +а потім перезапустіть gateway. Для пакетних встановлень виконайте `openclaw doctor --fix`. +Для Docker також установіть бінарні файли браузера Chromium, як показано нижче. #### Установлення Playwright у Docker @@ -657,167 +615,159 @@ docker compose run --rm openclaw-cli \ node /app/node_modules/playwright-core/cli.js install chromium ``` -Щоб зберігати завантажені браузери, установіть `PLAYWRIGHT_BROWSERS_PATH` (наприклад, +Щоб зберігати завантаження браузера, задайте `PLAYWRIGHT_BROWSERS_PATH` (наприклад, `/home/node/.cache/ms-playwright`) і переконайтеся, що `/home/node` зберігається через `OPENCLAW_HOME_VOLUME` або bind mount. Див. [Docker](/uk/install/docker). ## Як це працює (внутрішньо) -Потік на високому рівні: +Невеликий loopback-сервер керування приймає HTTP-запити та підключається до браузерів на основі Chromium через CDP. Розширені дії (click/type/snapshot/PDF) проходять через Playwright поверх CDP; якщо Playwright відсутній, доступні лише операції без Playwright. Агент бачить один стабільний інтерфейс, тоді як локальні/віддалені браузери та профілі вільно змінюються під ним. -- Невеликий **сервер керування** приймає HTTP-запити. -- Він підключається до браузерів на базі Chromium (Chrome/Brave/Edge/Chromium) через **CDP**. -- Для розширених дій (click/type/snapshot/PDF) він використовує **Playwright** поверх - CDP. -- Якщо Playwright відсутній, доступні лише операції без Playwright. +## Короткий довідник CLI -Такий дизайн зберігає для агента стабільний, детермінований інтерфейс і водночас дає -змогу змінювати локальні/віддалені браузери та профілі. +Усі команди приймають `--browser-profile ` для націлювання на конкретний профіль і `--json` для машиночитаного виводу. -## Швидкий довідник CLI + -Усі команди приймають `--browser-profile ` для націлювання на конкретний профіль. -Усі команди також приймають `--json` для машиночитного виводу (стабільні payload). + -Основне: +```bash +openclaw browser status +openclaw browser start +openclaw browser stop # also clears emulation on attach-only/remote CDP +openclaw browser tabs +openclaw browser tab # shortcut for current tab +openclaw browser tab new +openclaw browser tab select 2 +openclaw browser tab close 2 +openclaw browser open https://example.com +openclaw browser focus abcd1234 +openclaw browser close abcd1234 +``` -- `openclaw browser status` -- `openclaw browser start` -- `openclaw browser stop` -- `openclaw browser tabs` -- `openclaw browser tab` -- `openclaw browser tab new` -- `openclaw browser tab select 2` -- `openclaw browser tab close 2` -- `openclaw browser open https://example.com` -- `openclaw browser focus abcd1234` -- `openclaw browser close abcd1234` + -Перевірка: + -- `openclaw browser screenshot` -- `openclaw browser screenshot --full-page` -- `openclaw browser screenshot --ref 12` -- `openclaw browser screenshot --ref e12` -- `openclaw browser snapshot` -- `openclaw browser snapshot --format aria --limit 200` -- `openclaw browser snapshot --interactive --compact --depth 6` -- `openclaw browser snapshot --efficient` -- `openclaw browser snapshot --labels` -- `openclaw browser snapshot --selector "#main" --interactive` -- `openclaw browser snapshot --frame "iframe#main" --interactive` -- `openclaw browser console --level error` +```bash +openclaw browser screenshot +openclaw browser screenshot --full-page +openclaw browser screenshot --ref 12 # or --ref e12 +openclaw browser snapshot +openclaw browser snapshot --format aria --limit 200 +openclaw browser snapshot --interactive --compact --depth 6 +openclaw browser snapshot --efficient +openclaw browser snapshot --labels +openclaw browser snapshot --selector "#main" --interactive +openclaw browser snapshot --frame "iframe#main" --interactive +openclaw browser console --level error +openclaw browser errors --clear +openclaw browser requests --filter api --clear +openclaw browser pdf +openclaw browser responsebody "**/api" --max-chars 5000 +``` -Примітка про життєвий цикл: + -- Для профілів лише для підключення та профілів віддаленого CDP `openclaw browser stop` усе ще є - правильною командою очищення після тестів. Вона закриває активну сесію керування та - прибирає тимчасові перевизначення емуляції замість завершення базового - браузера. -- `openclaw browser errors --clear` -- `openclaw browser requests --filter api --clear` -- `openclaw browser pdf` -- `openclaw browser responsebody "**/api" --max-chars 5000` + -Дії: +```bash +openclaw browser navigate https://example.com +openclaw browser resize 1280 720 +openclaw browser click 12 --double # or e12 for role refs +openclaw browser type 23 "hello" --submit +openclaw browser press Enter +openclaw browser hover 44 +openclaw browser scrollintoview e12 +openclaw browser drag 10 11 +openclaw browser select 9 OptionA OptionB +openclaw browser download e12 report.pdf +openclaw browser waitfordownload report.pdf +openclaw browser upload /tmp/openclaw/uploads/file.pdf +openclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]' +openclaw browser dialog --accept +openclaw browser wait --text "Done" +openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true" +openclaw browser evaluate --fn '(el) => el.textContent' --ref 7 +openclaw browser highlight e12 +openclaw browser trace start +openclaw browser trace stop +``` -- `openclaw browser navigate https://example.com` -- `openclaw browser resize 1280 720` -- `openclaw browser click 12 --double` -- `openclaw browser click e12 --double` -- `openclaw browser type 23 "hello" --submit` -- `openclaw browser press Enter` -- `openclaw browser hover 44` -- `openclaw browser scrollintoview e12` -- `openclaw browser drag 10 11` -- `openclaw browser select 9 OptionA OptionB` -- `openclaw browser download e12 report.pdf` -- `openclaw browser waitfordownload report.pdf` -- `openclaw browser upload /tmp/openclaw/uploads/file.pdf` -- `openclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'` -- `openclaw browser dialog --accept` -- `openclaw browser wait --text "Done"` -- `openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"` -- `openclaw browser evaluate --fn '(el) => el.textContent' --ref 7` -- `openclaw browser highlight e12` -- `openclaw browser trace start` -- `openclaw browser trace stop` + -Стан: + -- `openclaw browser cookies` -- `openclaw browser cookies set session abc123 --url "https://example.com"` -- `openclaw browser cookies clear` -- `openclaw browser storage local get` -- `openclaw browser storage local set theme dark` -- `openclaw browser storage session clear` -- `openclaw browser set offline on` -- `openclaw browser set headers --headers-json '{"X-Debug":"1"}'` -- `openclaw browser set credentials user pass` -- `openclaw browser set credentials --clear` -- `openclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"` -- `openclaw browser set geo --clear` -- `openclaw browser set media dark` -- `openclaw browser set timezone America/New_York` -- `openclaw browser set locale en-US` -- `openclaw browser set device "iPhone 14"` +```bash +openclaw browser cookies +openclaw browser cookies set session abc123 --url "https://example.com" +openclaw browser cookies clear +openclaw browser storage local get +openclaw browser storage local set theme dark +openclaw browser storage session clear +openclaw browser set offline on +openclaw browser set headers --headers-json '{"X-Debug":"1"}' +openclaw browser set credentials user pass # --clear to remove +openclaw browser set geo 37.7749 -122.4194 --origin "https://example.com" +openclaw browser set media dark +openclaw browser set timezone America/New_York +openclaw browser set locale en-US +openclaw browser set device "iPhone 14" +``` + + + + Примітки: -- `upload` і `dialog` — це виклики **підготовки**; запускайте їх перед click/press, - що відкриває file chooser/діалог. -- Шляхи виводу download і trace обмежені тимчасовими коренями OpenClaw: - - traces: `/tmp/openclaw` (резервний варіант: `${os.tmpdir()}/openclaw`) - - downloads: `/tmp/openclaw/downloads` (резервний варіант: `${os.tmpdir()}/openclaw/downloads`) -- Шляхи upload обмежені тимчасовим коренем upload OpenClaw: - - uploads: `/tmp/openclaw/uploads` (резервний варіант: `${os.tmpdir()}/openclaw/uploads`) -- `upload` також може безпосередньо задавати file input через `--input-ref` або `--element`. -- `snapshot`: - - `--format ai` (типово, коли встановлено Playwright): повертає AI snapshot із числовими refs (`aria-ref=""`). - - `--format aria`: повертає дерево доступності (без refs; лише для перевірки). - - `--efficient` (або `--mode efficient`): компактний preset role snapshot (interactive + compact + depth + нижчий maxChars). - - Типове значення конфігурації (лише tool/CLI): установіть `browser.snapshotDefaults.mode: "efficient"`, щоб використовувати efficient snapshot, коли викликач не передає режим (див. [Конфігурація Gateway](/uk/gateway/configuration-reference#browser)). - - Параметри role snapshot (`--interactive`, `--compact`, `--depth`, `--selector`) примусово вмикають snapshot на основі ролей із refs на зразок `ref=e12`. - - `--frame "