chore(i18n): refresh uk translations
This commit is contained in:
parent
dd603265d4
commit
7deb7f0d4b
@ -1,40 +1,40 @@
|
||||
---
|
||||
read_when:
|
||||
- Додавання автоматизації браузера під керуванням агента
|
||||
- З’ясування, чому openclaw втручається у ваш власний Chrome
|
||||
- Реалізація налаштувань і життєвого циклу браузера в застосунку macOS
|
||||
- Додавання автоматизації браузера, керованої агентом
|
||||
- Налагодження причин, через які OpenClaw втручається у роботу вашого власного Chrome
|
||||
- Реалізація налаштувань браузера та керування його життєвим циклом у застосунку macOS
|
||||
summary: Інтегрований сервіс керування браузером + команди дій
|
||||
title: Browser (керований OpenClaw)
|
||||
title: Браузер (під керуванням OpenClaw)
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T11:57:45Z"
|
||||
generated_at: "2026-04-25T12:59:48Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 3f41583eea3554292822aec8858f9b2deb6d5bfd1f313039ee25f37bfb81bf8a
|
||||
source_hash: 2f6915568d2119d2473fc4ee489a03582ffd34218125835d5e073476d3009896
|
||||
source_path: tools/browser.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
OpenClaw може запускати **виділений профіль Chrome/Brave/Edge/Chromium**, яким керує агент.
|
||||
OpenClaw може запускати **окремий профіль Chrome/Brave/Edge/Chromium**, яким керує агент.
|
||||
Він ізольований від вашого особистого браузера та керується через невеликий локальний
|
||||
сервіс керування всередині Gateway (лише loopback).
|
||||
|
||||
Пояснення для початківців:
|
||||
Погляд для початківців:
|
||||
|
||||
- Думайте про нього як про **окремий браузер лише для агента**.
|
||||
- Профіль `openclaw` **не** торкається профілю вашого особистого браузера.
|
||||
- Агент може **відкривати вкладки, читати сторінки, натискати й вводити текст** у безпечному режимі.
|
||||
- Вбудований профіль `user` під’єднується до вашого справжнього сеансу Chrome з виконаним входом через Chrome MCP.
|
||||
- Думайте про це як про **окремий браузер лише для агента**.
|
||||
- Профіль `openclaw` **не** взаємодіє з профілем вашого особистого браузера.
|
||||
- Агент може **відкривати вкладки, читати сторінки, натискати та вводити текст** у безпечному середовищі.
|
||||
- Вбудований профіль `user` підключається до вашої справжньої авторизованої сесії Chrome через Chrome MCP.
|
||||
|
||||
## Що ви отримуєте
|
||||
|
||||
- Окремий профіль браузера з назвою **openclaw** (помаранчевий акцент за замовчуванням).
|
||||
- Детерміноване керування вкладками (перелік/відкриття/фокусування/закриття).
|
||||
- Дії агента (натискання/введення/перетягування/вибір), знімки стану, знімки екрана, PDF.
|
||||
- Вбудований skill `browser-automation`, який навчає агентів циклу відновлення snapshot,
|
||||
stable-tab, stale-ref і manual-blocker, коли увімкнено browser Plugin.
|
||||
- Окремий профіль браузера з назвою **openclaw** (типово з помаранчевим акцентом).
|
||||
- Детерміноване керування вкладками (список/відкриття/фокусування/закриття).
|
||||
- Дії агента (натискання/введення/перетягування/вибір), знімки стану, скриншоти, PDF.
|
||||
- Вбудований навик `browser-automation`, який навчає агентів циклу відновлення snapshot,
|
||||
stable-tab, stale-ref і manual-blocker, коли ввімкнено Plugin браузера.
|
||||
- Необов’язкова підтримка кількох профілів (`openclaw`, `work`, `remote`, ...).
|
||||
|
||||
Цей браузер **не** є вашим щоденним браузером. Це безпечна, ізольована поверхня для
|
||||
Цей браузер **не** призначений для вашого повсякденного використання. Це безпечна, ізольована поверхня для
|
||||
автоматизації та перевірки агентом.
|
||||
|
||||
## Швидкий старт
|
||||
@ -47,15 +47,15 @@ openclaw browser --browser-profile openclaw open https://example.com
|
||||
openclaw browser --browser-profile openclaw snapshot
|
||||
```
|
||||
|
||||
Якщо ви бачите “Browser disabled”, увімкніть його в конфігурації (див. нижче) і перезапустіть
|
||||
Якщо ви отримуєте повідомлення “Browser disabled”, увімкніть його в конфігурації (див. нижче) і перезапустіть
|
||||
Gateway.
|
||||
|
||||
Якщо `openclaw browser` взагалі відсутній або агент каже, що browser tool
|
||||
недоступний, перейдіть до [Відсутня команда або tool браузера](/uk/tools/browser#missing-browser-command-or-tool).
|
||||
Якщо `openclaw browser` взагалі відсутній або агент каже, що інструмент браузера
|
||||
недоступний, перейдіть до [Відсутня команда браузера або інструмент](/uk/tools/browser#missing-browser-command-or-tool).
|
||||
|
||||
## Керування Plugin
|
||||
|
||||
Типовий tool `browser` — це вбудований Plugin. Вимкніть його, щоб замінити іншим Plugin, який реєструє ту саму назву tool `browser`:
|
||||
Типовий інструмент `browser` є вбудованим Plugin. Вимкніть його, щоб замінити іншим Plugin, який реєструє той самий інструмент `browser`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -69,29 +69,29 @@ Gateway.
|
||||
}
|
||||
```
|
||||
|
||||
Типові налаштування потребують і `plugins.entries.browser.enabled`, і `browser.enabled=true`. Якщо вимкнути лише Plugin, це як єдиний блок прибирає CLI `openclaw browser`, метод Gateway `browser.request`, tool агента та сервіс керування; ваша конфігурація `browser.*` залишається недоторканою для заміни.
|
||||
Для типових налаштувань потрібні і `plugins.entries.browser.enabled`, **і** `browser.enabled=true`. Якщо вимкнути лише Plugin, це прибере CLI `openclaw browser`, метод Gateway `browser.request`, інструмент агента та сервіс керування як єдине ціле; ваша конфігурація `browser.*` залишиться недоторканою для заміни.
|
||||
|
||||
Зміни конфігурації браузера потребують перезапуску Gateway, щоб Plugin міг повторно зареєструвати свій сервіс.
|
||||
|
||||
## Вказівки для агента
|
||||
|
||||
Browser Plugin постачається з двома рівнями вказівок для агента:
|
||||
Plugin браузера постачається з двома рівнями вказівок для агента:
|
||||
|
||||
- Опис tool `browser` містить компактний завжди активний контракт: обрати
|
||||
правильний профіль, тримати refs у межах тієї самої вкладки, використовувати `tabId`/мітки для
|
||||
націлювання на вкладки та завантажувати browser skill для багатоетапної роботи.
|
||||
- Вбудований skill `browser-automation` містить довший робочий цикл:
|
||||
спочатку перевірити статус/вкладки, позначити мітками вкладки завдання, зробити snapshot перед дією,
|
||||
повторно зробити snapshot після змін UI, один раз відновити stale refs і повідомити про блокування через login/2FA/captcha або
|
||||
camera/microphone як про ручну дію, а не вгадувати.
|
||||
- Опис інструмента `browser` містить компактний, завжди активний контракт: вибирати
|
||||
правильний профіль, зберігати refs у межах тієї самої вкладки, використовувати `tabId`/мітки для
|
||||
націлювання на вкладки та завантажувати навик браузера для багатокрокової роботи.
|
||||
- Вбудований навик `browser-automation` містить довший робочий цикл:
|
||||
спочатку перевіряти статус/вкладки, позначати вкладки завдання, робити snapshot перед дією,
|
||||
повторно робити snapshot після змін UI, один раз відновлювати stale refs і повідомляти про блокування через login/2FA/captcha або
|
||||
camera/microphone як про ручну дію замість здогадок.
|
||||
|
||||
Skills, вбудовані в Plugin, перелічуються в доступних Skills агента, коли
|
||||
Plugin увімкнено. Повні інструкції skill завантажуються на вимогу, тому звичайні
|
||||
Навички, вбудовані в Plugin, перелічуються в доступних навичках агента, коли
|
||||
Plugin увімкнено. Повні інструкції навику завантажуються на вимогу, тому звичайні
|
||||
ходи не сплачують повну вартість у токенах.
|
||||
|
||||
## Відсутня команда або tool браузера
|
||||
## Відсутня команда браузера або інструмент
|
||||
|
||||
Якщо `openclaw browser` невідомий після оновлення, `browser.request` відсутній або агент повідомляє, що browser tool недоступний, типовою причиною є список `plugins.allow`, у якому відсутній `browser`. Додайте його:
|
||||
Якщо після оновлення `openclaw browser` невідома, `browser.request` відсутній або агент повідомляє, що інструмент браузера недоступний, звичайною причиною є список `plugins.allow`, у якому немає `browser`. Додайте його:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -101,47 +101,46 @@ Plugin увімкнено. Повні інструкції skill заванта
|
||||
}
|
||||
```
|
||||
|
||||
`browser.enabled=true`, `plugins.entries.browser.enabled=true` і `tools.alsoAllow: ["browser"]` не замінюють членство в allowlist — allowlist керує завантаженням Plugin, а політика tool починає діяти лише після завантаження. Повне видалення `plugins.allow` також відновлює типову поведінку.
|
||||
`browser.enabled=true`, `plugins.entries.browser.enabled=true` і `tools.alsoAllow: ["browser"]` не замінюють членство в allowlist — allowlist керує завантаженням Plugin, а політика інструментів застосовується лише після завантаження. Видалення `plugins.allow` повністю також відновлює типову поведінку.
|
||||
|
||||
## Профілі: `openclaw` і `user`
|
||||
## Профілі: `openclaw` проти `user`
|
||||
|
||||
- `openclaw`: керований, ізольований браузер (розширення не потрібне).
|
||||
- `user`: вбудований профіль під’єднання Chrome MCP до вашого **справжнього Chrome**
|
||||
із виконаним входом.
|
||||
- `user`: вбудований профіль підключення Chrome MCP до вашої **справжньої авторизованої сесії Chrome**.
|
||||
|
||||
Для викликів tool браузера агентом:
|
||||
Для викликів інструмента браузера агентом:
|
||||
|
||||
- За замовчуванням: використовувати ізольований браузер `openclaw`.
|
||||
- Віддавайте перевагу `profile="user"`, коли важливі наявні сеанси з виконаним входом і користувач
|
||||
перебуває за комп’ютером, щоб натиснути/підтвердити будь-який запит на під’єднання.
|
||||
- `profile` — це явне перевизначення, коли ви хочете конкретний режим браузера.
|
||||
- Типово: використовуйте ізольований браузер `openclaw`.
|
||||
- Віддавайте перевагу `profile="user"`, коли важливі наявні авторизовані сесії і користувач
|
||||
перебуває за комп’ютером, щоб натиснути/підтвердити будь-який запит на підключення.
|
||||
- `profile` — це явне перевизначення, коли вам потрібен конкретний режим браузера.
|
||||
|
||||
Установіть `browser.defaultProfile: "openclaw"`, якщо хочете, щоб керований режим був типовим.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
Налаштування браузера зберігаються в `~/.openclaw/openclaw.json`.
|
||||
Налаштування браузера розташовані в `~/.openclaw/openclaw.json`.
|
||||
|
||||
```json5
|
||||
{
|
||||
browser: {
|
||||
enabled: true, // default: true
|
||||
enabled: true, // типово: true
|
||||
ssrfPolicy: {
|
||||
// dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access
|
||||
// allowPrivateNetwork: true, // legacy alias
|
||||
// dangerouslyAllowPrivateNetwork: true, // вмикайте лише для довіреного доступу до приватної мережі
|
||||
// allowPrivateNetwork: true, // застарілий псевдонім
|
||||
// hostnameAllowlist: ["*.example.com", "example.com"],
|
||||
// allowedHostnames: ["localhost"],
|
||||
},
|
||||
// cdpUrl: "http://127.0.0.1:18792", // legacy single-profile override
|
||||
remoteCdpTimeoutMs: 1500, // remote CDP HTTP timeout (ms)
|
||||
remoteCdpHandshakeTimeoutMs: 3000, // remote CDP WebSocket handshake timeout (ms)
|
||||
localLaunchTimeoutMs: 15000, // local managed Chrome discovery timeout (ms)
|
||||
localCdpReadyTimeoutMs: 8000, // local managed post-launch CDP readiness timeout (ms)
|
||||
actionTimeoutMs: 60000, // default browser act timeout (ms)
|
||||
// cdpUrl: "http://127.0.0.1:18792", // застаріле перевизначення одного профілю
|
||||
remoteCdpTimeoutMs: 1500, // тайм-аут HTTP віддаленого CDP (мс)
|
||||
remoteCdpHandshakeTimeoutMs: 3000, // тайм-аут рукостискання WebSocket віддаленого CDP (мс)
|
||||
localLaunchTimeoutMs: 15000, // тайм-аут виявлення локального керованого Chrome (мс)
|
||||
localCdpReadyTimeoutMs: 8000, // тайм-аут готовності локального керованого CDP після запуску (мс)
|
||||
actionTimeoutMs: 60000, // типовий тайм-аут дії браузера (мс)
|
||||
tabCleanup: {
|
||||
enabled: true, // default: true
|
||||
idleMinutes: 120, // set 0 to disable idle cleanup
|
||||
maxTabsPerSession: 8, // set 0 to disable the per-session cap
|
||||
enabled: true, // типово: true
|
||||
idleMinutes: 120, // установіть 0, щоб вимкнути очищення неактивних вкладок
|
||||
maxTabsPerSession: 8, // установіть 0, щоб вимкнути обмеження на сесію
|
||||
sweepMinutes: 5,
|
||||
},
|
||||
defaultProfile: "openclaw",
|
||||
@ -179,64 +178,64 @@ Plugin увімкнено. Повні інструкції skill заванта
|
||||
|
||||
<Accordion title="Порти та доступність">
|
||||
|
||||
- Сервіс керування прив’язується до loopback на порту, похідному від `gateway.port` (типово `18791` = gateway + 2). Перевизначення `gateway.port` або `OPENCLAW_GATEWAY_PORT` зсуває похідні порти в тій самій групі.
|
||||
- Локальні профілі `openclaw` автоматично призначають `cdpPort`/`cdpUrl`; задавайте їх лише для віддаленого CDP. Якщо `cdpUrl` не вказано, типово використовується керований локальний порт CDP.
|
||||
- `remoteCdpTimeoutMs` застосовується до перевірок доступності HTTP віддаленого (не-loopback) CDP; `remoteCdpHandshakeTimeoutMs` застосовується до WebSocket-handshake віддаленого CDP.
|
||||
- `localLaunchTimeoutMs` — це бюджет часу, за який локально запущений керований процес Chrome
|
||||
має відкрити свій endpoint CDP HTTP. `localCdpReadyTimeoutMs` — це
|
||||
подальший бюджет часу на готовність websocket CDP після виявлення процесу.
|
||||
Збільшуйте ці значення на Raspberry Pi, дешевих VPS або старішому обладнанні, де Chromium
|
||||
- Сервіс керування прив’язується до loopback на порту, похідному від `gateway.port` (типово `18791` = Gateway + 2). Перевизначення `gateway.port` або `OPENCLAW_GATEWAY_PORT` зміщує похідні порти в тій самій групі.
|
||||
- Локальні профілі `openclaw` автоматично призначають `cdpPort`/`cdpUrl`; задавайте їх лише для віддаленого CDP. Якщо `cdpUrl` не вказано, типово використовується локальний керований порт CDP.
|
||||
- `remoteCdpTimeoutMs` застосовується до перевірок HTTP-доступності віддаленого (не loopback) CDP; `remoteCdpHandshakeTimeoutMs` застосовується до рукостискань WebSocket віддаленого CDP.
|
||||
- `localLaunchTimeoutMs` — це бюджет часу для того, щоб локально запущений керований процес Chrome
|
||||
відкрив свою HTTP-адресу CDP. `localCdpReadyTimeoutMs` — це
|
||||
наступний бюджет часу для готовності websocket CDP після виявлення процесу.
|
||||
Збільшуйте ці значення на Raspberry Pi, бюджетних VPS або старішому обладнанні, де Chromium
|
||||
запускається повільно. Значення обмежені 120000 мс.
|
||||
- `actionTimeoutMs` — це типовий бюджет часу для запитів browser `act`, коли виклик не передає `timeoutMs`. Клієнтський транспорт додає невелике додаткове вікно, щоб довгі очікування могли завершитися, а не обривалися на межі HTTP.
|
||||
- `tabCleanup` — це best-effort очищення вкладок, відкритих основними сеансами браузера агента. Підлеглий агент, Cron і очищення життєвого циклу ACP як і раніше закривають свої явно відстежувані вкладки в кінці сеансу; основні сеанси зберігають активні вкладки придатними до повторного використання, а потім у фоновому режимі закривають неактивні або зайві відстежувані вкладки.
|
||||
- `actionTimeoutMs` — це типовий бюджет часу для запитів браузера `act`, коли викликач не передає `timeoutMs`. Транспорт клієнта додає невелике додаткове вікно, щоб довгі очікування могли завершитися, а не обриватися на межі HTTP через тайм-аут.
|
||||
- `tabCleanup` — це best-effort очищення вкладок, відкритих основними сесіями браузера агента. Очищення життєвого циклу Subagent, Cron і ACP усе ще закриває їхні явно відстежувані вкладки наприкінці сесії; основні сесії зберігають активні вкладки доступними для повторного використання, а потім у фоновому режимі закривають неактивні або зайві відстежувані вкладки.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Політика SSRF">
|
||||
|
||||
- Навігація браузера та open-tab захищені від SSRF перед навігацією, а потім URL `http(s)` у фінальному стані повторно перевіряється в режимі best-effort.
|
||||
- У строгому режимі SSRF також перевіряються виявлення віддаленого endpoint CDP і запити `/json/version` (`cdpUrl`).
|
||||
- Змінні середовища Gateway/provider `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` і `NO_PROXY` не проксіюють автоматично браузер, яким керує OpenClaw. Керований Chrome за замовчуванням запускається напряму, щоб налаштування проксі provider не послаблювали перевірки SSRF браузера.
|
||||
- Щоб проксіювати сам керований браузер, передайте явні proxy-прапорці Chrome через `browser.extraArgs`, наприклад `--proxy-server=...` або `--proxy-pac-url=...`. Строгий режим SSRF блокує явну маршрутизацію браузера через proxy, якщо доступ браузера до приватної мережі не ввімкнено навмисно.
|
||||
- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено за замовчуванням; вмикайте лише тоді, коли доступ браузера до приватної мережі є свідомо довіреним.
|
||||
- Навігація браузера та open-tab захищені від SSRF перед навігацією, а після цього проходять повторну best-effort перевірку на фінальному URL `http(s)`.
|
||||
- У суворому режимі SSRF також перевіряються виявлення віддалених кінцевих точок CDP і запити `/json/version` (`cdpUrl`).
|
||||
- Змінні середовища Gateway/provider `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` і `NO_PROXY` не проксіюють автоматично браузер під керуванням OpenClaw. Керований Chrome типово запускається напряму, тому налаштування проксі provider не послаблюють перевірки SSRF браузера.
|
||||
- Щоб проксіювати сам керований браузер, передайте явні прапорці проксі Chrome через `browser.extraArgs`, наприклад `--proxy-server=...` або `--proxy-pac-url=...`. Суворий режим SSRF блокує явну маршрутизацію браузерного проксі, якщо доступ браузера до приватної мережі не був навмисно ввімкнений.
|
||||
- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` типово вимкнено; вмикайте лише тоді, коли доступ браузера до приватної мережі навмисно вважається довіреним.
|
||||
- `browser.ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Поведінка профілю">
|
||||
<Accordion title="Поведінка профілів">
|
||||
|
||||
- `attachOnly: true` означає ніколи не запускати локальний браузер; лише під’єднуватися, якщо він уже працює.
|
||||
- `headless` можна задавати глобально або для окремого локального керованого профілю. Значення для профілю мають вищий пріоритет над `browser.headless`, тому один локально запущений профіль може залишатися headless, тоді як інший буде видимим.
|
||||
- `attachOnly: true` означає ніколи не запускати локальний браузер; лише підключатися, якщо він уже запущений.
|
||||
- `headless` можна задавати глобально або для кожного локального керованого профілю. Значення для конкретного профілю мають пріоритет над `browser.headless`, тому один локально запущений профіль може залишатися headless, тоді як інший буде видимим.
|
||||
- `POST /start?headless=true` і `openclaw browser start --headless` запитують
|
||||
одноразовий запуск у режимі headless для локальних керованих профілів без переписування
|
||||
`browser.headless` або конфігурації профілю. Профілі existing-session, attach-only і
|
||||
віддаленого CDP відхиляють це перевизначення, оскільки OpenClaw не запускає ці
|
||||
remote CDP відхиляють це перевизначення, оскільки OpenClaw не запускає ці
|
||||
процеси браузера.
|
||||
- На хостах Linux без `DISPLAY` або `WAYLAND_DISPLAY` локальні керовані профілі
|
||||
автоматично типово працюють у режимі headless, коли ні середовище, ні конфігурація профілю/глобальна
|
||||
конфігурація явно не вибирають режим із вікном. `openclaw browser status --json`
|
||||
- На Linux-хостах без `DISPLAY` або `WAYLAND_DISPLAY` локальні керовані профілі
|
||||
типово автоматично переходять у headless, якщо ні середовище, ні конфігурація профілю/глобальна
|
||||
конфігурація явно не вибирають видимий режим. `openclaw browser status --json`
|
||||
повідомляє `headlessSource` як `env`, `profile`, `config`,
|
||||
`request`, `linux-display-fallback` або `default`.
|
||||
- `OPENCLAW_BROWSER_HEADLESS=1` примусово вмикає headless для локальних керованих запусків у
|
||||
поточному процесі. `OPENCLAW_BROWSER_HEADLESS=0` примусово вмикає режим із вікном для звичайних
|
||||
запусків і повертає практичну помилку на хостах Linux без сервера дисплея;
|
||||
- `OPENCLAW_BROWSER_HEADLESS=1` примусово запускає локальні керовані профілі в режимі headless для
|
||||
поточного процесу. `OPENCLAW_BROWSER_HEADLESS=0` примусово вмикає видимий режим для звичайних
|
||||
запусків і повертає зрозумілу помилку на Linux-хостах без display server;
|
||||
явний запит `start --headless` усе одно має пріоритет для цього одного запуску.
|
||||
- `executablePath` можна задавати глобально або для окремого локального керованого профілю. Значення для профілю мають вищий пріоритет над `browser.executablePath`, тому різні керовані профілі можуть запускати різні браузери на базі Chromium.
|
||||
- `color` (верхній рівень і рівень профілю) тонують UI браузера, щоб ви бачили, який профіль активний.
|
||||
- Профіль за замовчуванням — `openclaw` (керований автономний). Використайте `defaultProfile: "user"`, щоб за замовчуванням увімкнути браузер користувача з виконаним входом.
|
||||
- Порядок автовизначення: системний браузер за замовчуванням, якщо він на базі Chromium; інакше Chrome → Brave → Edge → Chromium → Chrome Canary.
|
||||
- `driver: "existing-session"` використовує Chrome DevTools MCP замість raw CDP. Не задавайте `cdpUrl` для цього driver.
|
||||
- Установіть `browser.profiles.<name>.userDataDir`, коли профіль existing-session має під’єднуватися до нестандартного користувацького профілю Chromium (Brave, Edge тощо).
|
||||
- `executablePath` можна задавати глобально або для кожного локального керованого профілю. Значення для конкретного профілю мають пріоритет над `browser.executablePath`, тому різні керовані профілі можуть запускати різні браузери на основі Chromium.
|
||||
- `color` (на верхньому рівні та для кожного профілю) тонує UI браузера, щоб ви могли бачити, який профіль активний.
|
||||
- Типовий профіль — `openclaw` (керований окремий). Використовуйте `defaultProfile: "user"`, щоб перейти на авторизований браузер користувача.
|
||||
- Порядок автовиявлення: системний типовий браузер, якщо він на основі Chromium; інакше Chrome → Brave → Edge → Chromium → Chrome Canary.
|
||||
- `driver: "existing-session"` використовує Chrome DevTools MCP замість сирого CDP. Не встановлюйте `cdpUrl` для цього driver.
|
||||
- Установіть `browser.profiles.<name>.userDataDir`, коли профіль existing-session має підключатися до нетипового профілю користувача Chromium (Brave, Edge тощо).
|
||||
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
|
||||
## Використання Brave (або іншого браузера на базі Chromium)
|
||||
## Використання Brave (або іншого браузера на основі Chromium)
|
||||
|
||||
Якщо вашим **системним браузером за замовчуванням** є браузер на базі Chromium (Chrome/Brave/Edge тощо),
|
||||
Якщо ваш **системний типовий** браузер працює на основі Chromium (Chrome/Brave/Edge тощо),
|
||||
OpenClaw використовує його автоматично. Установіть `browser.executablePath`, щоб перевизначити
|
||||
автовизначення. `~` розгортається до домашнього каталогу вашої ОС:
|
||||
автовиявлення. `~` розгортається до домашнього каталогу вашої ОС:
|
||||
|
||||
```bash
|
||||
openclaw config set browser.executablePath "/usr/bin/google-chrome"
|
||||
@ -275,61 +274,61 @@ openclaw config set browser.profiles.work.executablePath "/Applications/Google C
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
`executablePath` для окремого профілю впливає лише на локальні керовані профілі, які OpenClaw
|
||||
запускає сам. Профілі `existing-session` натомість під’єднуються до вже запущеного браузера,
|
||||
а профілі віддаленого CDP використовують браузер, який стоїть за `cdpUrl`.
|
||||
`executablePath` для конкретного профілю впливає лише на локальні керовані профілі, які запускає OpenClaw.
|
||||
Профілі `existing-session` натомість підключаються до вже запущеного браузера,
|
||||
а профілі remote CDP використовують браузер, який стоїть за `cdpUrl`.
|
||||
|
||||
## Локальне й віддалене керування
|
||||
## Локальне та віддалене керування
|
||||
|
||||
- **Локальне керування (за замовчуванням):** Gateway запускає loopback-сервіс керування й може запускати локальний браузер.
|
||||
- **Віддалене керування (host Node):** запустіть host Node на машині, де є браузер; Gateway проксіює до нього дії браузера.
|
||||
- **Віддалений CDP:** установіть `browser.profiles.<name>.cdpUrl` (або `browser.cdpUrl`), щоб
|
||||
під’єднатися до віддаленого браузера на базі Chromium. У такому разі OpenClaw не запускатиме локальний браузер.
|
||||
- `headless` впливає лише на локальні керовані профілі, які запускає OpenClaw. Він не перезапускає й не змінює браузери `existing-session` або віддаленого CDP.
|
||||
- `executablePath` підпорядковується тому самому правилу локального керованого профілю. Його зміна для
|
||||
запущеного локального керованого профілю позначає цей профіль для restart/reconcile, щоб
|
||||
наступний запуск використовував новий двійковий файл.
|
||||
- **Локальне керування (типово):** Gateway запускає loopback-сервіс керування і може запускати локальний браузер.
|
||||
- **Віддалене керування (вузол-хост):** запустіть вузол-хост на машині, де є браузер; Gateway проксіюватиме до нього дії браузера.
|
||||
- **Remote CDP:** установіть `browser.profiles.<name>.cdpUrl` (або `browser.cdpUrl`), щоб
|
||||
підключитися до віддаленого браузера на основі Chromium. У цьому випадку OpenClaw не запускатиме локальний браузер.
|
||||
- `headless` впливає лише на локальні керовані профілі, які запускає OpenClaw. Це не перезапускає і не змінює браузери existing-session або remote CDP.
|
||||
- `executablePath` підпорядковується тому самому правилу локальних керованих профілів. Його зміна для
|
||||
запущеного локального керованого профілю позначає цей профіль для перезапуску/узгодження, щоб
|
||||
наступний запуск використовував новий бінарний файл.
|
||||
|
||||
Поведінка зупинки відрізняється залежно від режиму профілю:
|
||||
|
||||
- локальні керовані профілі: `openclaw browser stop` зупиняє процес браузера, який
|
||||
запустив OpenClaw
|
||||
- профілі attach-only і віддаленого CDP: `openclaw browser stop` закриває активний
|
||||
сеанс керування та скидає перевизначення емуляції Playwright/CDP (viewport,
|
||||
- профілі attach-only і remote CDP: `openclaw browser stop` закриває активну
|
||||
сесію керування та скидає перевизначення емуляції Playwright/CDP (viewport,
|
||||
color scheme, locale, timezone, offline mode та подібний стан), навіть
|
||||
якщо OpenClaw не запускав жодного процесу браузера
|
||||
|
||||
URL віддаленого CDP можуть містити автентифікацію:
|
||||
|
||||
- query-токени (наприклад, `https://provider.example?token=<token>`)
|
||||
- Токени запиту (наприклад, `https://provider.example?token=<token>`)
|
||||
- HTTP Basic auth (наприклад, `https://user:pass@provider.example`)
|
||||
|
||||
OpenClaw зберігає ці дані автентифікації під час виклику endpoint `\/json/*` і під час підключення
|
||||
до WebSocket CDP. Для токенів віддавайте перевагу змінним середовища або менеджерам секретів замість
|
||||
OpenClaw зберігає автентифікаційні дані під час викликів кінцевих точок `/json/*` і під час підключення
|
||||
до WebSocket CDP. Для токенів краще використовувати змінні середовища або менеджери секретів замість
|
||||
запису їх у файли конфігурації.
|
||||
|
||||
## Node browser proxy (zero-config за замовчуванням)
|
||||
## Проксі браузера вузла (типово без конфігурації)
|
||||
|
||||
Якщо ви запускаєте **host Node** на машині, де є ваш браузер, OpenClaw може
|
||||
автоматично маршрутизувати виклики browser tool до цього Node без жодної додаткової конфігурації браузера.
|
||||
Це типовий шлях для віддалених gateway.
|
||||
Якщо ви запускаєте **вузол-хост** на машині, де є ваш браузер, OpenClaw може
|
||||
автоматично спрямовувати виклики інструмента браузера до цього вузла без додаткової конфігурації браузера.
|
||||
Це типовий шлях для віддалених Gateway.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Host Node надає свій локальний сервер керування браузером через **proxy command**.
|
||||
- Профілі беруться з власної конфігурації `browser.profiles` вузла (так само, як і локально).
|
||||
- `nodeHost.browserProxy.allowProfiles` необов’язковий. Залиште його порожнім для legacy/типової поведінки: усі налаштовані профілі залишаються доступними через proxy, включно з маршрутами create/delete профілів.
|
||||
- Якщо ви задаєте `nodeHost.browserProxy.allowProfiles`, OpenClaw розглядає це як межу найменших привілеїв: націлюватися можна лише на профілі з allowlist, а маршрути create/delete постійних профілів блокуються на поверхні proxy.
|
||||
- Вимкніть це, якщо не хочете використовувати:
|
||||
- На Node: `nodeHost.browserProxy.enabled=false`
|
||||
- На gateway: `gateway.nodes.browser.mode="off"`
|
||||
- Вузол-хост надає свій локальний сервер керування браузером через **proxy command**.
|
||||
- Профілі беруться з власної конфігурації `browser.profiles` вузла (так само, як локально).
|
||||
- `nodeHost.browserProxy.allowProfiles` необов’язковий. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі залишаються доступними через проксі, включно з маршрутами створення/видалення профілів.
|
||||
- Якщо ви задаєте `nodeHost.browserProxy.allowProfiles`, OpenClaw трактує це як межу найменших привілеїв: можна звертатися лише до профілів з allowlist, а маршрути створення/видалення постійних профілів блокуються на поверхні проксі.
|
||||
- Вимкніть це, якщо воно вам не потрібне:
|
||||
- На вузлі: `nodeHost.browserProxy.enabled=false`
|
||||
- На Gateway: `gateway.nodes.browser.mode="off"`
|
||||
|
||||
## Browserless (hosted remote CDP)
|
||||
## Browserless (хостинговий remote CDP)
|
||||
|
||||
[Browserless](https://browserless.io) — це hosted-сервіс Chromium, який надає
|
||||
URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати будь-яку форму, але
|
||||
для профілю віддаленого браузера найпростішим варіантом є прямий URL WebSocket
|
||||
із документації Browserless щодо підключення.
|
||||
[Browserless](https://browserless.io) — це хостинговий сервіс Chromium, який надає
|
||||
URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати будь-який із цих форматів, але
|
||||
для віддаленого профілю браузера найпростішим варіантом є прямий URL WebSocket
|
||||
з документації з підключення Browserless.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -353,39 +352,39 @@ URL підключення CDP через HTTPS і WebSocket. OpenClaw може
|
||||
Примітки:
|
||||
|
||||
- Замініть `<BROWSERLESS_API_KEY>` на ваш справжній токен Browserless.
|
||||
- Виберіть endpoint регіону, який відповідає вашому обліковому запису Browserless (див. їхню документацію).
|
||||
- Виберіть кінцеву точку регіону, яка відповідає вашому обліковому запису Browserless (див. їхню документацію).
|
||||
- Якщо Browserless надає вам базовий URL HTTPS, ви можете або перетворити його на
|
||||
`wss://` для прямого підключення CDP, або залишити URL HTTPS і дозволити OpenClaw
|
||||
виявити `/json/version`.
|
||||
|
||||
## Провайдери прямого WebSocket CDP
|
||||
|
||||
Деякі hosted-сервіси браузера надають **прямий endpoint WebSocket** замість
|
||||
стандартного HTTP-виявлення CDP (`/json/version`). OpenClaw приймає три форми
|
||||
URL CDP і автоматично вибирає правильну стратегію підключення:
|
||||
Деякі хостингові сервіси браузерів надають **пряму кінцеву точку WebSocket** замість
|
||||
стандартного виявлення CDP на основі HTTP (`/json/version`). OpenClaw приймає три
|
||||
форми URL CDP і автоматично вибирає правильну стратегію підключення:
|
||||
|
||||
- **HTTP(S)-виявлення** — `http://host[:port]` або `https://host[:port]`.
|
||||
OpenClaw викликає `/json/version`, щоб виявити URL WebSocket debugger, а потім
|
||||
підключається. Резервного переходу на WebSocket немає.
|
||||
- **Прямі endpoints WebSocket** — `ws://host[:port]/devtools/<kind>/<id>` або
|
||||
- **HTTP(S) discovery** — `http://host[:port]` або `https://host[:port]`.
|
||||
OpenClaw викликає `/json/version`, щоб виявити URL debugger WebSocket, а потім
|
||||
підключається. Без fallback на WebSocket.
|
||||
- **Прямі кінцеві точки WebSocket** — `ws://host[:port]/devtools/<kind>/<id>` або
|
||||
`wss://...` зі шляхом `/devtools/browser|page|worker|shared_worker|service_worker/<id>`.
|
||||
OpenClaw підключається безпосередньо через WebSocket-handshake і повністю пропускає
|
||||
OpenClaw підключається напряму через рукостискання WebSocket і повністю пропускає
|
||||
`/json/version`.
|
||||
- **Кореневі WebSocket без шляху** — `ws://host[:port]` або `wss://host[:port]` без
|
||||
- **Корені bare WebSocket** — `ws://host[:port]` або `wss://host[:port]` без
|
||||
шляху `/devtools/...` (наприклад, [Browserless](https://browserless.io),
|
||||
[Browserbase](https://www.browserbase.com)). OpenClaw спочатку пробує
|
||||
HTTP-виявлення `/json/version` (нормалізуючи схему до `http`/`https`);
|
||||
якщо в результаті виявлення повертається `webSocketDebuggerUrl`, він використовується, інакше OpenClaw
|
||||
переходить до прямого WebSocket-handshake на корені без шляху. Це дає змогу
|
||||
підключатися й для простого `ws://`, спрямованого на локальний Chrome, оскільки Chrome лише
|
||||
приймає WebSocket upgrades на конкретному шляху для цілі з
|
||||
[Browserbase](https://www.browserbase.com)). OpenClaw спочатку намагається виконати HTTP
|
||||
виявлення через `/json/version` (нормалізуючи схему до `http`/`https`);
|
||||
якщо виявлення повертає `webSocketDebuggerUrl`, він використовується, інакше OpenClaw
|
||||
переходить до прямого рукостискання WebSocket на bare-корені. Це дозволяє
|
||||
bare `ws://`, спрямованому на локальний Chrome, усе одно підключатися, оскільки Chrome
|
||||
приймає оновлення WebSocket лише на конкретному шляху для цілі з
|
||||
`/json/version`.
|
||||
|
||||
### Browserbase
|
||||
|
||||
[Browserbase](https://www.browserbase.com) — це хмарна платформа для запуску
|
||||
браузерів у режимі headless із вбудованим розв’язанням CAPTCHA, stealth mode і residential
|
||||
proxy.
|
||||
headless-браузерів із вбудованим розв’язанням CAPTCHA, stealth mode і резидентними
|
||||
проксі.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -408,13 +407,12 @@ proxy.
|
||||
|
||||
- [Зареєструйтеся](https://www.browserbase.com/sign-up) і скопіюйте свій **API Key**
|
||||
з [панелі Overview](https://www.browserbase.com/overview).
|
||||
- Замініть `<BROWSERBASE_API_KEY>` на ваш справжній API-ключ Browserbase.
|
||||
- Browserbase автоматично створює сеанс браузера під час підключення WebSocket, тож
|
||||
ручний крок створення сеансу не потрібен.
|
||||
- Безкоштовний тариф дозволяє один одночасний сеанс і одну browser hour на місяць.
|
||||
Див. [pricing](https://www.browserbase.com/pricing) щодо обмежень платних планів.
|
||||
- Див. [документацію Browserbase](https://docs.browserbase.com) для повного
|
||||
довідника API, посібників із SDK та прикладів інтеграції.
|
||||
- Замініть `<BROWSERBASE_API_KEY>` на ваш справжній API key Browserbase.
|
||||
- Browserbase автоматично створює сесію браузера під час підключення WebSocket, тому
|
||||
окремий крок ручного створення сесії не потрібен.
|
||||
- Безкоштовний тариф дозволяє одну одночасну сесію та одну браузерну годину на місяць.
|
||||
Обмеження платних тарифів дивіться в [pricing](https://www.browserbase.com/pricing).
|
||||
- Повний довідник API, посібники з SDK та приклади інтеграції дивіться в [документації Browserbase](https://docs.browserbase.com).
|
||||
|
||||
## Безпека
|
||||
|
||||
@ -422,47 +420,47 @@ proxy.
|
||||
|
||||
- Керування браузером доступне лише через loopback; доступ проходить через автентифікацію Gateway або pairing вузла.
|
||||
- Окремий loopback HTTP API браузера використовує **лише автентифікацію через shared-secret**:
|
||||
bearer auth із токеном gateway, `x-openclaw-password` або HTTP Basic auth із
|
||||
налаштованим паролем gateway.
|
||||
bearer auth за токеном Gateway, `x-openclaw-password` або HTTP Basic auth із
|
||||
налаштованим паролем Gateway.
|
||||
- Заголовки ідентичності Tailscale Serve і `gateway.auth.mode: "trusted-proxy"`
|
||||
**не** автентифікують цей окремий loopback API браузера.
|
||||
- Якщо керування браузером увімкнено й не налаштовано жодної автентифікації через shared-secret, OpenClaw
|
||||
автоматично генерує `gateway.auth.token` під час запуску й зберігає його в конфігурації.
|
||||
- Якщо керування браузером увімкнено і не налаштовано жодної shared-secret auth, OpenClaw
|
||||
автоматично генерує `gateway.auth.token` під час запуску та зберігає його в конфігурації.
|
||||
- OpenClaw **не** генерує цей токен автоматично, якщо `gateway.auth.mode` уже має значення
|
||||
`password`, `none` або `trusted-proxy`.
|
||||
- Тримайте Gateway і будь-які host Node у приватній мережі (Tailscale); уникайте публічного доступу.
|
||||
- Ставтеся до URL/токенів віддаленого CDP як до секретів; віддавайте перевагу env vars або менеджеру секретів.
|
||||
- Тримайте Gateway і будь-які вузли-хости в приватній мережі (Tailscale); уникайте публічного доступу.
|
||||
- Вважайте URL/токени remote CDP секретами; надавайте перевагу змінним середовища або менеджеру секретів.
|
||||
|
||||
Поради щодо віддаленого CDP:
|
||||
Поради щодо remote CDP:
|
||||
|
||||
- За можливості віддавайте перевагу зашифрованим endpoint (`HTTPS` або `WSS`) і токенам із коротким строком дії.
|
||||
- Уникайте вбудовування токенів із довгим строком дії безпосередньо у файли конфігурації.
|
||||
- За можливості віддавайте перевагу зашифрованим кінцевим точкам (HTTPS або WSS) і короткоживучим токенам.
|
||||
- Уникайте вбудовування довгоживучих токенів безпосередньо у файли конфігурації.
|
||||
|
||||
## Профілі (кілька браузерів)
|
||||
|
||||
OpenClaw підтримує кілька іменованих профілів (конфігурацій маршрутизації). Профілі можуть бути:
|
||||
|
||||
- **керованими OpenClaw**: виділений екземпляр браузера на базі Chromium із власним каталогом користувацьких даних + портом CDP
|
||||
- **віддаленими**: явний URL CDP (браузер на базі Chromium, запущений деінде)
|
||||
- **наявним сеансом**: ваш наявний профіль Chrome через автопідключення Chrome DevTools MCP
|
||||
- **під керуванням OpenClaw**: окремий екземпляр браузера на основі Chromium із власним каталогом даних користувача + портом CDP
|
||||
- **віддалені**: явний URL CDP (браузер на основі Chromium запущено деінде)
|
||||
- **наявна сесія**: ваш наявний профіль Chrome через автопідключення Chrome DevTools MCP
|
||||
|
||||
Типова поведінка:
|
||||
Типові значення:
|
||||
|
||||
- Профіль `openclaw` створюється автоматично, якщо відсутній.
|
||||
- Профіль `user` вбудований для attach до наявного сеансу Chrome MCP.
|
||||
- Профілі existing-session, крім `user`, вмикаються лише явно; створюйте їх через `--driver existing-session`.
|
||||
- Профіль `user` вбудований для підключення existing-session через Chrome MCP.
|
||||
- Профілі existing-session, окрім `user`, вмикаються лише явно; створюйте їх через `--driver existing-session`.
|
||||
- Локальні порти CDP типово виділяються з діапазону **18800–18899**.
|
||||
- Видалення профілю переміщує його локальний каталог даних до Trash.
|
||||
|
||||
Усі endpoints керування приймають `?profile=<name>`; CLI використовує `--browser-profile`.
|
||||
Усі кінцеві точки керування приймають `?profile=<name>`; CLI використовує `--browser-profile`.
|
||||
|
||||
## Наявний сеанс через Chrome DevTools MCP
|
||||
## Наявна сесія через 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)
|
||||
- [Chrome DevTools MCP README](https://github.com/ChromeDevTools/chrome-devtools-mcp)
|
||||
@ -498,17 +496,17 @@ OpenClaw також може під’єднуватися до запущено
|
||||
|
||||
Потім у відповідному браузері:
|
||||
|
||||
1. Відкрийте сторінку inspect цього браузера для віддаленого налагодження.
|
||||
2. Увімкніть віддалене налагодження.
|
||||
3. Залиште браузер запущеним і підтвердьте запит на підключення, коли OpenClaw приєднається.
|
||||
1. Відкрийте сторінку inspect цього браузера для remote debugging.
|
||||
2. Увімкніть remote debugging.
|
||||
3. Не закривайте браузер і підтвердьте запит на підключення, коли OpenClaw приєднається.
|
||||
|
||||
Типові сторінки inspect:
|
||||
Поширені сторінки inspect:
|
||||
|
||||
- Chrome: `chrome://inspect/#remote-debugging`
|
||||
- Brave: `brave://inspect/#remote-debugging`
|
||||
- Edge: `edge://inspect/#remote-debugging`
|
||||
|
||||
Smoke-тест live attach:
|
||||
Живий smoke test підключення:
|
||||
|
||||
```bash
|
||||
openclaw browser --browser-profile user start
|
||||
@ -517,60 +515,82 @@ 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 із вибраної live-вкладки
|
||||
- `tabs` перелічує вже відкриті вкладки вашого браузера
|
||||
- `snapshot` повертає refs із вибраної живої вкладки
|
||||
|
||||
Що перевірити, якщо підключення не працює:
|
||||
|
||||
- цільовий браузер на базі Chromium має версію `144+`
|
||||
- у сторінці inspect цього браузера увімкнено віддалене налагодження
|
||||
- браузер показав запит на згоду для підключення, і ви його підтвердили
|
||||
- `openclaw doctor` мігрує стару конфігурацію браузера на основі розширення й перевіряє, що
|
||||
Chrome локально встановлений для типових профілів автопідключення, але він не може
|
||||
увімкнути віддалене налагодження на боці браузера за вас
|
||||
- цільовий браузер на основі Chromium має версію `144+`
|
||||
- remote debugging увімкнено на сторінці inspect цього браузера
|
||||
- браузер показав запит на згоду на підключення, і ви його прийняли
|
||||
- `openclaw doctor` мігрує стару конфігурацію браузера на основі розширення і перевіряє,
|
||||
що Chrome локально встановлено для типових профілів автопідключення, але він не може
|
||||
увімкнути remote debugging у браузері замість вас
|
||||
|
||||
Використання агентом:
|
||||
|
||||
- Використовуйте `profile="user"`, коли вам потрібен браузер користувача зі станом входу.
|
||||
- Використовуйте `profile="user"`, коли вам потрібен стан авторизованого браузера користувача.
|
||||
- Якщо ви використовуєте власний профіль existing-session, передайте явну назву цього профілю.
|
||||
- Вибирайте цей режим лише тоді, коли користувач перебуває за комп’ютером, щоб підтвердити запит
|
||||
на підключення.
|
||||
- Gateway або host Node може запускати `npx chrome-devtools-mcp@latest --autoConnect`
|
||||
- Вибирайте цей режим лише тоді, коли користувач перебуває за комп’ютером, щоб підтвердити
|
||||
запит на підключення.
|
||||
- Gateway або вузол-хост може запускати `npx chrome-devtools-mcp@latest --autoConnect`
|
||||
|
||||
Примітки:
|
||||
|
||||
- Цей шлях має вищий ризик, ніж ізольований профіль `openclaw`, оскільки він може
|
||||
виконувати дії у вашому браузері з виконаним входом.
|
||||
- OpenClaw не запускає браузер для цього driver; він лише під’єднується.
|
||||
виконувати дії у вашій авторизованій сесії браузера.
|
||||
- OpenClaw не запускає браузер для цього driver; він лише підключається.
|
||||
- Тут OpenClaw використовує офіційний потік Chrome DevTools MCP `--autoConnect`. Якщо
|
||||
задано `userDataDir`, його буде передано далі для націлювання на цей каталог користувацьких даних.
|
||||
- Existing-session може під’єднуватися на вибраному host або через підключений
|
||||
browser Node. Якщо Chrome розташований деінде й не підключено browser Node, використовуйте
|
||||
натомість віддалений CDP або host Node.
|
||||
задано `userDataDir`, його буде передано далі для націлювання на цей каталог даних користувача.
|
||||
- Existing-session може підключатися на вибраному хості або через підключений
|
||||
browser Node. Якщо Chrome розташований деінде і жоден browser Node не підключено, використовуйте
|
||||
remote CDP або вузол-хост натомість.
|
||||
|
||||
<Accordion title="Обмеження функцій existing-session">
|
||||
### Власний запуск Chrome MCP
|
||||
|
||||
Перевизначте сервер Chrome DevTools MCP, який запускається для конкретного профілю, коли типовий
|
||||
потік `npx chrome-devtools-mcp@latest` вам не підходить (офлайн-хости,
|
||||
закріплені версії, вендорні бінарні файли):
|
||||
|
||||
| Поле | Що воно робить |
|
||||
| ------------ | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `mcpCommand` | Виконуваний файл, який запускати замість `npx`. Розв’язується як є; абсолютні шляхи підтримуються. |
|
||||
| `mcpArgs` | Масив аргументів, який без змін передається до `mcpCommand`. Замінює типові аргументи `chrome-devtools-mcp@latest --autoConnect`. |
|
||||
|
||||
Коли для профілю existing-session задано `cdpUrl`, OpenClaw пропускає
|
||||
`--autoConnect` і автоматично передає кінцеву точку до Chrome MCP:
|
||||
|
||||
- `http(s)://...` → `--browserUrl <url>` (кінцева точка HTTP discovery DevTools).
|
||||
- `ws(s)://...` → `--wsEndpoint <url>` (прямий WebSocket CDP).
|
||||
|
||||
Прапорці кінцевої точки та `userDataDir` не можна поєднувати: коли задано `cdpUrl`,
|
||||
`userDataDir` ігнорується під час запуску Chrome MCP, оскільки Chrome MCP підключається до
|
||||
запущеного браузера за цією кінцевою точкою, а не відкриває каталог
|
||||
профілю.
|
||||
|
||||
<Accordion title="Обмеження можливостей existing-session">
|
||||
|
||||
Порівняно з керованим профілем `openclaw`, драйвери existing-session мають більше обмежень:
|
||||
|
||||
- **Знімки екрана** — працюють захоплення сторінки та захоплення елемента через `--ref`; CSS-селектори `--element` не працюють. `--full-page` не можна поєднувати з `--ref` або `--element`. Для знімків екрана сторінки або елемента за `ref` Playwright не потрібен.
|
||||
- **Скриншоти** — знімки сторінки та знімки елементів через `--ref` працюють; CSS-селектори `--element` — ні. `--full-page` не можна поєднувати з `--ref` або `--element`. Playwright не потрібен для скриншотів сторінки або елементів на основі ref.
|
||||
- **Дії** — `click`, `type`, `hover`, `scrollIntoView`, `drag` і `select` потребують snapshot refs (без CSS-селекторів). `click-coords` натискає видимі координати viewport і не потребує snapshot ref. `click` підтримує лише ліву кнопку миші. `type` не підтримує `slowly=true`; використовуйте `fill` або `press`. `press` не підтримує `delayMs`. `type`, `hover`, `scrollIntoView`, `drag`, `select`, `fill` і `evaluate` не підтримують тайм-аути для окремих викликів. `select` приймає одне значення.
|
||||
- **Очікування / завантаження файлу / діалог** — `wait --url` підтримує точний збіг, підрядок і glob-шаблони; `wait --load networkidle` не підтримується. Hooks завантаження файлів потребують `ref` або `inputRef`, по одному файлу за раз, без CSS `element`. Hooks діалогів не підтримують перевизначення тайм-ауту.
|
||||
- **Функції лише для керованого режиму** — пакетні дії, експорт PDF, перехоплення завантажень і `responsebody` як і раніше потребують шляху керованого браузера.
|
||||
- **Очікування / завантаження файлів / діалогові вікна** — `wait --url` підтримує точний збіг, підрядок і glob-шаблони; `wait --load networkidle` не підтримується. Хуки завантаження файлів потребують `ref` або `inputRef`, по одному файлу за раз, без CSS `element`. Хуки діалогових вікон не підтримують перевизначення тайм-ауту.
|
||||
- **Можливості лише для керованого режиму** — пакетні дії, експорт PDF, перехоплення завантажень і `responsebody` усе ще потребують шляху керованого браузера.
|
||||
|
||||
</Accordion>
|
||||
|
||||
## Гарантії ізоляції
|
||||
|
||||
- **Виділений каталог користувацьких даних**: ніколи не торкається профілю вашого особистого браузера.
|
||||
- **Виділені порти**: уникає `9222`, щоб не створювати конфліктів із робочими процесами розробки.
|
||||
- **Детерміноване керування вкладками**: `tabs` спочатку повертає `suggestedTargetId`, а потім
|
||||
- **Окремий каталог даних користувача**: ніколи не взаємодіє з профілем вашого особистого браузера.
|
||||
- **Окремі порти**: уникає `9222`, щоб не створювати конфліктів із робочими процесами розробки.
|
||||
- **Детерміноване керування вкладками**: `tabs` спочатку повертає `suggestedTargetId`, потім
|
||||
стабільні дескриптори `tabId`, такі як `t1`, необов’язкові мітки та сирий `targetId`.
|
||||
Агенти мають повторно використовувати `suggestedTargetId`; сирі id залишаються доступними для
|
||||
Агентам слід повторно використовувати `suggestedTargetId`; сирі id залишаються доступними для
|
||||
налагодження та сумісності.
|
||||
|
||||
## Вибір браузера
|
||||
@ -583,7 +603,7 @@ openclaw browser --browser-profile user snapshot --format ai
|
||||
4. Chromium
|
||||
5. Chrome Canary
|
||||
|
||||
Ви можете перевизначити це за допомогою `browser.executablePath`.
|
||||
Ви можете перевизначити це через `browser.executablePath`.
|
||||
|
||||
Платформи:
|
||||
|
||||
@ -595,14 +615,14 @@ openclaw browser --browser-profile user snapshot --format ai
|
||||
|
||||
## API керування (необов’язково)
|
||||
|
||||
Для автоматизації сценаріями та налагодження Gateway надає невеликий **loopback-only HTTP
|
||||
API керування** плюс відповідний CLI `openclaw browser` (snapshot, refs, можливості wait,
|
||||
вивід JSON, робочі процеси налагодження). Див.
|
||||
Для сценаріїв і налагодження Gateway надає невеликий **HTTP API керування
|
||||
лише для loopback**, а також відповідний CLI `openclaw browser` (snapshots, refs, wait
|
||||
power-ups, вивід JSON, робочі процеси налагодження). Див.
|
||||
[API керування браузером](/uk/tools/browser-control) для повного довідника.
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
Щодо проблем, специфічних для Linux (особливо snap Chromium), див.
|
||||
Для проблем, специфічних для Linux (особливо snap Chromium), див.
|
||||
[Усунення несправностей браузера](/uk/tools/browser-linux-troubleshooting).
|
||||
|
||||
Для конфігурацій із розділеними хостами WSL2 Gateway + Windows Chrome див.
|
||||
@ -613,15 +633,15 @@ API керування** плюс відповідний CLI `openclaw browser`
|
||||
Це різні класи помилок, і вони вказують на різні шляхи коду.
|
||||
|
||||
- **Помилка запуску або готовності CDP** означає, що OpenClaw не може підтвердити, що площина керування браузером справна.
|
||||
- **Блокування SSRF під час навігації** означає, що площина керування браузером справна, але ціль навігації сторінки відхиляється політикою.
|
||||
- **Блокування SSRF під час навігації** означає, що площина керування браузером справна, але ціль переходу сторінки відхиляється політикою.
|
||||
|
||||
Типові приклади:
|
||||
Поширені приклади:
|
||||
|
||||
- Помилка запуску або готовності CDP:
|
||||
- `Chrome CDP websocket for profile "openclaw" is not reachable after start`
|
||||
- `Remote CDP for profile "<name>" is not reachable at <cdpUrl>`
|
||||
- Блокування SSRF під час навігації:
|
||||
- потоки `open`, `navigate`, snapshot або відкриття вкладки завершуються помилкою політики браузера/мережі, тоді як `start` і `tabs` усе ще працюють
|
||||
- потоки `open`, `navigate`, snapshot або відкриття вкладок завершуються з помилкою політики браузера/мережі, тоді як `start` і `tabs` усе ще працюють
|
||||
|
||||
Використайте цю мінімальну послідовність, щоб відрізнити одне від іншого:
|
||||
|
||||
@ -635,44 +655,44 @@ openclaw browser --browser-profile openclaw open https://example.com
|
||||
|
||||
- Якщо `start` завершується помилкою `not reachable after start`, спочатку усувайте проблему готовності CDP.
|
||||
- Якщо `start` успішний, але `tabs` завершується помилкою, площина керування все ще несправна. Розглядайте це як проблему доступності CDP, а не проблему навігації сторінки.
|
||||
- Якщо `start` і `tabs` успішні, але `open` або `navigate` завершується помилкою, площина керування браузером працює, а проблема в політиці навігації або цільовій сторінці.
|
||||
- Якщо `start` і `tabs` успішні, але `open` або `navigate` завершуються помилкою, площина керування браузером працює, а збій пов’язаний із політикою навігації або цільовою сторінкою.
|
||||
- Якщо `start`, `tabs` і `open` усі успішні, базовий шлях керування керованим браузером справний.
|
||||
|
||||
Важливі подробиці поведінки:
|
||||
Важливі деталі поведінки:
|
||||
|
||||
- Конфігурація браузера за замовчуванням використовує fail-closed об’єкт політики SSRF, навіть якщо ви не налаштовуєте `browser.ssrfPolicy`.
|
||||
- Для локального керованого профілю loopback `openclaw` перевірки справності CDP навмисно пропускають застосування доступності SSRF браузера для власної локальної площини керування OpenClaw.
|
||||
- Захист навігації є окремим. Успішний результат `start` або `tabs` не означає, що пізніша ціль `open` або `navigate` буде дозволена.
|
||||
- Конфігурація браузера типово використовує об’єкт політики SSRF fail-closed, навіть якщо ви не налаштовуєте `browser.ssrfPolicy`.
|
||||
- Для локального керованого профілю loopback `openclaw` перевірки справності CDP навмисно пропускають застосування перевірок доступності SSRF браузера для власної локальної площини керування OpenClaw.
|
||||
- Захист навігації є окремим. Успішний результат `start` або `tabs` не означає, що пізніша ціль `open` або `navigate` дозволена.
|
||||
|
||||
Вказівки з безпеки:
|
||||
|
||||
- **Не** послаблюйте політику SSRF браузера за замовчуванням.
|
||||
- Віддавайте перевагу вузьким виняткам для host, таким як `hostnameAllowlist` або `allowedHostnames`, замість широкого доступу до приватної мережі.
|
||||
- **Не** послаблюйте політику SSRF браузера типово.
|
||||
- Віддавайте перевагу вузьким виняткам для хостів, таким як `hostnameAllowlist` або `allowedHostnames`, замість широкого доступу до приватної мережі.
|
||||
- Використовуйте `dangerouslyAllowPrivateNetwork: true` лише в навмисно довірених середовищах, де доступ браузера до приватної мережі потрібен і перевірений.
|
||||
|
||||
## Tools агента + як працює керування
|
||||
## Інструменти агента + як працює керування
|
||||
|
||||
Агент отримує **один tool** для автоматизації браузера:
|
||||
Агент отримує **один інструмент** для автоматизації браузера:
|
||||
|
||||
- `browser` — doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
|
||||
|
||||
Як це зіставляється:
|
||||
Як це відображається:
|
||||
|
||||
- `browser snapshot` повертає стабільне дерево UI (AI або ARIA).
|
||||
- `browser act` використовує ідентифікатори `ref` зі snapshot для click/type/drag/select.
|
||||
- `browser screenshot` захоплює пікселі (повна сторінка, елемент або refs із мітками).
|
||||
- `browser doctor` перевіряє готовність Gateway, Plugin, профілю, браузера та вкладки.
|
||||
- `browser act` використовує ID `ref` зі snapshot для click/type/drag/select.
|
||||
- `browser screenshot` захоплює пікселі (повна сторінка, елемент або позначені refs).
|
||||
- `browser doctor` перевіряє готовність Gateway, Plugin, профілю, браузера і вкладки.
|
||||
- `browser` приймає:
|
||||
- `profile` для вибору іменованого профілю браузера (openclaw, chrome або remote CDP).
|
||||
- `target` (`sandbox` | `host` | `node`) для вибору місця, де розташований браузер.
|
||||
- У sandboxed sessions `target: "host"` потребує `agents.defaults.sandbox.browser.allowHostControl=true`.
|
||||
- Якщо `target` не вказано: sandboxed sessions за замовчуванням використовують `sandbox`, а не-sandbox sessions — `host`.
|
||||
- Якщо підключено Node із підтримкою браузера, tool може автоматично маршрутизуватися до нього, якщо ви не зафіксуєте `target="host"` або `target="node"`.
|
||||
- У sandboxed-сесіях `target: "host"` вимагає `agents.defaults.sandbox.browser.allowHostControl=true`.
|
||||
- Якщо `target` не вказано: sandboxed-сесії типово використовують `sandbox`, несandbox-сесії — `host`.
|
||||
- Якщо підключено Node із підтримкою браузера, інструмент може автоматично маршрутизуватися до нього, якщо ви явно не зафіксуєте `target="host"` або `target="node"`.
|
||||
|
||||
Це зберігає детермінованість агента й дає змогу уникати крихких селекторів.
|
||||
Це зберігає детермінованість агента та допомагає уникати крихких селекторів.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Огляд Tools](/uk/tools) — усі доступні tools агента
|
||||
- [Sandboxing](/uk/gateway/sandboxing) — керування браузером у sandboxed environments
|
||||
- [Огляд інструментів](/uk/tools) — усі доступні інструменти агента
|
||||
- [Пісочниця](/uk/gateway/sandboxing) — керування браузером у sandboxed-середовищах
|
||||
- [Безпека](/uk/gateway/security) — ризики керування браузером і посилення захисту
|
||||
|
||||
Loading…
Reference in New Issue
Block a user