Браузер (керований openclaw)
OpenClaw може запускати окремий профіль Chrome/Brave/Edge/Chromium, яким керує агент. Він ізольований від вашого особистого браузера та керується через невеликий локальний сервіс керування всередині Gateway (лише loopback). Погляд для початківців:- Думайте про це як про окремий браузер лише для агента.
- Профіль
openclawне торкається вашого особистого профілю браузера. - Агент може відкривати вкладки, читати сторінки, натискати та вводити текст у безпечному середовищі.
- Вбудований профіль
userпідключається до вашої справжньої сесії Chrome, у якій ви вже ввійшли, через Chrome MCP.
Що ви отримуєте
- Окремий профіль браузера з назвою openclaw (типово з помаранчевим акцентом).
- Детерміноване керування вкладками (список/відкрити/фокус/закрити).
- Дії агента (натискання/введення/перетягування/вибір), знімки, скриншоти, PDF.
- Необов’язкова підтримка кількох профілів (
openclaw,work,remote, …).
Швидкий старт
openclaw browser повністю відсутня або агент каже, що інструмент браузера
недоступний, перейдіть до Відсутня команда браузера або інструмент.
Керування Plugin
Типовий інструментbrowser тепер є вбудованим Plugin, який постачається увімкненим
типово. Це означає, що ви можете вимкнути або замінити його, не видаляючи решту
системи Plugin у OpenClaw:
browser. Типовому режиму браузера потрібні обидва параметри:
plugins.entries.browser.enabledне вимкненоbrowser.enabled=true
openclaw browser),
метод gateway (browser.request), інструмент агента та типовий сервіс керування браузером
усі зникнуть разом. Ваша конфігурація browser.* залишиться недоторканою, щоб її міг повторно використати
Plugin-замінник.
Вбудований Plugin браузера тепер також володіє реалізацією runtime браузера.
У core залишаються лише спільні допоміжні компоненти Plugin SDK плюс сумісні повторні експорти для
старих внутрішніх шляхів імпорту. На практиці видалення або заміна пакета Plugin браузера
прибирає функціональність браузера, а не залишає позаду другу runtime-реалізацію, що належить core.
Зміни конфігурації браузера все ще потребують перезапуску Gateway, щоб вбудований Plugin
міг повторно зареєструвати свій сервіс браузера з новими налаштуваннями.
Відсутня команда браузера або інструмент
Якщоopenclaw browser раптово стає невідомою командою після оновлення або
агент повідомляє, що інструмент браузера відсутній, найпоширенішою причиною є
обмежувальний список plugins.allow, який не містить browser.
Приклад зламаної конфігурації:
browser до списку дозволених Plugin:
- Самого
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 vs user
openclaw: керований, ізольований браузер (розширення не потрібне).user: вбудований профіль підключення Chrome MCP до вашої справжньої сесії Chrome із виконаним входом.
- Типово: використовується ізольований браузер
openclaw. - Надавайте перевагу
profile="user", коли важливі наявні сесії з виконаним входом і користувач перебуває за комп’ютером, щоб натиснути/підтвердити будь-який запит на підключення. profile— це явний спосіб перевизначення, коли вам потрібен конкретний режим браузера.
browser.defaultProfile: "openclaw", якщо хочете, щоб типово використовувався керований режим.
Конфігурація
Налаштування браузера зберігаються в~/.openclaw/openclaw.json.
- Сервіс керування браузером прив’язується до loopback на порту, похідному від
gateway.port(типово:18791, тобто gateway + 2). - Якщо ви перевизначаєте порт Gateway (
gateway.portабоOPENCLAW_GATEWAY_PORT), похідні порти браузера зміщуються, щоб залишатися в тій самій “сім’ї”. cdpUrlтипово вказує на керований локальний CDP-порт, якщо його не задано.remoteCdpTimeoutMsзастосовується до перевірок доступності віддаленого (не-loopback) CDP.remoteCdpHandshakeTimeoutMsзастосовується до перевірок доступності рукостискання WebSocket віддаленого CDP.- Навігація браузера/відкриття вкладок захищені SSRF-перевіркою до навігації та за можливості повторно перевіряються для фінального URL
http(s)після навігації. - У строгому режимі 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.<name>.userDataDir, коли профіль existing-session має підключатися до нестандартного профілю користувача Chromium, наприклад Brave або Edge.
Використання Brave (або іншого браузера на базі Chromium)
Якщо ваш системний браузер за замовчуванням базується на Chromium (Chrome/Brave/Edge тощо), OpenClaw використовує його автоматично. Установітьbrowser.executablePath, щоб перевизначити
автовизначення:
Приклад CLI:
Локальне та віддалене керування
- Локальне керування (типово): Gateway запускає loopback-сервіс керування та може запускати локальний браузер.
- Віддалене керування (вузол-хост): запустіть вузол-хост на машині, де є браузер; Gateway проксуватиме до нього дії браузера.
- Віддалений CDP: установіть
browser.profiles.<name>.cdpUrl(абоbrowser.cdpUrl), щоб підключитися до віддаленого браузера на базі Chromium. У такому разі OpenClaw не запускатиме локальний браузер.
- локальні керовані профілі:
openclaw browser stopзупиняє процес браузера, який запустив OpenClaw - профілі лише з підключенням та профілі віддаленого CDP:
openclaw browser stopзакриває активну сесію керування та скидає перевизначення емуляції Playwright/CDP (viewport, колірну схему, локаль, часовий пояс, офлайн-режим та подібний стан), навіть якщо OpenClaw не запускав жодного процесу браузера
- Токени в параметрах запиту (наприклад,
https://provider.example?token=<token>) - HTTP Basic auth (наприклад,
https://user:pass@provider.example)
/json/* і під час підключення
до WebSocket CDP. Для токенів краще використовувати змінні середовища або менеджери секретів,
а не зберігати їх у файлах конфігурації.
Проксі браузера Node (нульова конфігурація типово)
Якщо ви запускаєте вузол-хост на машині, де є ваш браузер, OpenClaw може автоматично маршрутизувати виклики інструмента браузера до цього вузла без жодної додаткової конфігурації браузера. Це типовий шлях для віддалених Gateway. Примітки:- Вузол-хост надає свій локальний сервер керування браузером через проксі-команду.
- Профілі беруться з власної конфігурації вузла
browser.profiles(так само, як локально). nodeHost.browserProxy.allowProfilesє необов’язковим. Залиште його порожнім для застарілої/типової поведінки: усі налаштовані профілі залишаються доступними через проксі, включно з маршрутами створення/видалення профілів.- Якщо ви встановите
nodeHost.browserProxy.allowProfiles, OpenClaw розглядатиме це як межу найменших привілеїв: можна буде звертатися лише до профілів зі списку дозволених, а маршрути створення/видалення постійних профілів будуть заблоковані на поверхні проксі. - Вимкніть це, якщо воно вам не потрібне:
- На вузлі:
nodeHost.browserProxy.enabled=false - На gateway:
gateway.nodes.browser.mode="off"
- На вузлі:
Browserless (розміщений віддалений CDP)
Browserless — це розміщений сервіс Chromium, який надає URL підключення CDP через HTTPS і WebSocket. OpenClaw може використовувати будь-яку форму, але для віддаленого профілю браузера найпростішим варіантом є прямий URL WebSocket з документації підключення Browserless. Приклад:- Замініть
<BROWSERLESS_API_KEY>на ваш справжній токен Browserless. - Виберіть кінцеву точку регіону, що відповідає вашому обліковому запису Browserless (див. їхню документацію).
- Якщо Browserless надає вам базовий URL HTTPS, ви можете або перетворити його на
wss://для прямого підключення CDP, або залишити URL HTTPS і дозволити OpenClaw виявити/json/version.
Прямі постачальники WebSocket CDP
Деякі розміщені сервіси браузерів надають пряму кінцеву точку WebSocket замість стандартного виявлення CDP на основі HTTP (/json/version). OpenClaw приймає три
форми URL CDP і автоматично вибирає правильну стратегію підключення:
- Виявлення через HTTP(S) —
http://host[:port]абоhttps://host[:port]. OpenClaw викликає/json/version, щоб виявити URL WebSocket debugger, а потім підключається. Резервного переходу на WebSocket немає. - Прямі кінцеві точки WebSocket —
ws://host[:port]/devtools/<kind>/<id>абоwss://...зі шляхом/devtools/browser|page|worker|shared_worker|service_worker/<id>. OpenClaw підключається напряму через рукостискання WebSocket і повністю пропускає/json/version. - Базові корені WebSocket —
ws://host[:port]абоwss://host[:port]без шляху/devtools/...(наприклад, Browserless, Browserbase). OpenClaw спочатку пробує виявлення через HTTP/json/version(нормалізуючи схему доhttp/https); якщо виявлення повертаєwebSocketDebuggerUrl, він використовується, інакше OpenClaw переходить до прямого рукостискання WebSocket на базовому корені. Це охоплює як віддалені порти налагодження в стилі Chrome, так і постачальників лише з WebSocket.
ws://host:port / wss://host:port без шляху /devtools/...,
спрямований на локальний екземпляр Chrome, підтримується через резервний механізм
із пріоритетом виявлення — Chrome приймає оновлення до WebSocket лише на конкретному шляху
для браузера або цілі, який повертає /json/version, тому лише рукостискання на базовому корені
завершиться невдачею.
Browserbase
Browserbase — це хмарна платформа для запуску браузерів у режимі headless із вбудованим розв’язанням CAPTCHA, stealth mode та резидентними проксі.- Зареєструйтеся і скопіюйте свій API Key з панелі Overview.
- Замініть
<BROWSERBASE_API_KEY>на ваш справжній API-ключ Browserbase. - Browserbase автоматично створює сесію браузера під час підключення WebSocket, тому окремий ручний етап створення сесії не потрібен.
- Безкоштовний тариф дозволяє одну одночасну сесію та одну годину браузера на місяць. Ліміти платних планів дивіться в pricing.
- Дивіться документацію Browserbase для повного довідника API, посібників з SDK та прикладів інтеграції.
Безпека
Ключові ідеї:- Керування браузером доступне лише через loopback; доступ проходить через автентифікацію Gateway або спарювання вузлів.
- Автономний loopback HTTP API браузера використовує лише автентифікацію через спільний секрет:
bearer-автентифікацію за токеном gateway,
x-openclaw-passwordабо HTTP Basic auth із налаштованим паролем gateway. - Заголовки ідентичності Tailscale Serve та
gateway.auth.mode: "trusted-proxy"не автентифікують цей автономний loopback API браузера. - Якщо керування браузером увімкнено й не налаштовано жодної автентифікації через спільний секрет, OpenClaw
автоматично генерує
gateway.auth.tokenпід час запуску та зберігає його в конфігурації. - OpenClaw не генерує цей токен автоматично, якщо
gateway.auth.modeуже має значенняpassword,noneабоtrusted-proxy. - Тримайте Gateway та будь-які вузли-хости в приватній мережі (Tailscale); уникайте публічного доступу.
- Ставтеся до віддалених URL/tокенів CDP як до секретів; надавайте перевагу змінним середовища або менеджеру секретів.
- За можливості надавайте перевагу зашифрованим кінцевим точкам (HTTPS або WSS) і токенам із коротким строком життя.
- Уникайте вбудовування довгоживучих токенів безпосередньо у файли конфігурації.
Профілі (кілька браузерів)
OpenClaw підтримує кілька іменованих профілів (конфігурацій маршрутизації). Профілі можуть бути:- керовані openclaw: окремий екземпляр браузера на базі Chromium із власним каталогом користувацьких даних та портом CDP
- віддалені: явно заданий URL CDP (браузер на базі Chromium, що працює деінде)
- наявна сесія: ваш наявний профіль Chrome через автоматичне підключення Chrome DevTools MCP
- Профіль
openclawавтоматично створюється, якщо відсутній. - Профіль
userвбудований для підключення наявної сесії Chrome MCP. - Профілі existing-session, окрім
user, є необов’язковими; створюйте їх за допомогою--driver existing-session. - Локальні порти CDP типово виділяються з діапазону 18800–18899.
- Видалення профілю переміщує його локальний каталог даних до Кошика.
?profile=<name>; CLI використовує --browser-profile.
Existing-session через Chrome DevTools MCP
OpenClaw також може підключатися до запущеного профілю браузера на базі Chromium через офіційний сервер Chrome DevTools MCP. Це повторно використовує вкладки та стан входу, які вже відкриті в цьому профілі браузера. Офіційні довідкові матеріали та посилання з налаштування:- Chrome for Developers: Використання Chrome DevTools MCP із вашою сесією браузера
- README Chrome DevTools MCP
user
- Вбудований профіль
userвикористовує автоматичне підключення Chrome MCP, яке націлюється на типовий локальний профіль Google Chrome.
userDataDir для Brave, Edge, Chromium або нетипового профілю Chrome:
- Відкрийте сторінку inspect цього браузера для віддаленого налагодження.
- Увімкніть віддалене налагодження.
- Залиште браузер запущеним і підтвердьте запит на підключення, коли OpenClaw під’єднається.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusпоказуєdriver: existing-sessionstatusпоказуєtransport: chrome-mcpstatusпоказуєrunning: truetabsперелічує вже відкриті у вашому браузері вкладкиsnapshotповертає refs із вибраної live-вкладки
- цільовий браузер на базі Chromium має версію
144+ - у сторінці inspect цього браузера ввімкнено віддалене налагодження
- браузер показав запит на підключення, і ви його прийняли
openclaw doctorмігрує стару конфігурацію браузера на основі розширення та перевіряє, що Chrome встановлено локально для типових профілів автоматичного підключення, але він не може увімкнути віддалене налагодження в самому браузері за вас
- Використовуйте
profile="user", коли вам потрібен стан браузера користувача з виконаним входом. - Якщо ви використовуєте власний профіль existing-session, передайте явну назву цього профілю.
- Обирайте цей режим лише тоді, коли користувач перебуває за комп’ютером, щоб підтвердити запит на підключення.
- Gateway або вузол-хост можуть запускати
npx chrome-devtools-mcp@latest --autoConnect
- Цей шлях має вищий ризик, ніж ізольований профіль
openclaw, оскільки він може виконувати дії у вашій сесії браузера, де вже виконано вхід. - OpenClaw не запускає браузер для цього драйвера; він підключається лише до наявної сесії.
- Тут OpenClaw використовує офіційний потік Chrome DevTools MCP
--autoConnect. Якщо встановленоuserDataDir, OpenClaw передає його далі, щоб націлитися на цей явний каталог користувацьких даних Chromium. - Скриншоти existing-session підтримують захоплення сторінки та захоплення елементів через
--refзі знімків, але не 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абоpresspressне підтримуєdelayMshover,scrollIntoView,drag,select,fillіevaluateне підтримують перевизначення тайм-ауту для окремого викликуselectнаразі підтримує лише одне значення
- Existing-session
wait --urlпідтримує точні, підрядкові та glob-шаблони так само, як і інші драйвери браузера.wait --load networkidleпоки не підтримується. - Хуки вивантаження в existing-session потребують
refабоinputRef, підтримують по одному файлу за раз і не підтримують націлювання на CSSelement. - Хуки діалогів existing-session не підтримують перевизначення тайм-ауту.
- Деякі можливості все ще потребують керованого шляху браузера, зокрема пакетні
дії, експорт PDF, перехоплення завантажень і
responsebody. - Existing-session може підключатися на вибраному хості або через підключений вузол браузера. Якщо Chrome розташований деінде й вузол браузера не підключений, використовуйте віддалений CDP або вузол-хост.
Гарантії ізоляції
- Окремий каталог користувацьких даних: ніколи не торкається вашого особистого профілю браузера.
- Окремі порти: уникає
9222, щоб запобігти конфліктам із робочими процесами розробки. - Детерміноване керування вкладками: націлення на вкладки за
targetId, а не за принципом “остання вкладка”.
Вибір браузера
Під час локального запуску OpenClaw вибирає перший доступний:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Платформи:
- macOS: перевіряє
/Applicationsі~/Applications. - Linux: шукає
google-chrome,brave,microsoft-edge,chromiumтощо. - Windows: перевіряє поширені каталоги встановлення.
API керування (необов’язково)
Лише для локальних інтеграцій Gateway надає невеликий loopback HTTP API:- Стан/запуск/зупинка:
GET /,POST /start,POST /stop - Вкладки:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Знімок/скриншот:
GET /snapshot,POST /screenshot - Дії:
POST /navigate,POST /act - Хуки:
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 - Мережа:
POST /response/body - Стан:
GET /cookies,POST /cookies/set,POST /cookies/clear - Стан:
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=<name>.
Якщо налаштовано автентифікацію gateway через спільний секрет, HTTP-маршрути браузера також потребують автентифікації:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>або HTTP Basic auth із цим паролем
- Цей автономний loopback API браузера не використовує trusted-proxy або заголовки ідентичності Tailscale Serve.
- Якщо
gateway.auth.modeмає значенняnoneабоtrusted-proxy, ці loopback-маршрути браузера не успадковують ці режими з перенесенням ідентичності; тримайте їх доступними лише через loopback.
Контракт помилок /act
POST /act використовує структуровану відповідь помилки для валідації на рівні маршруту та
збоїв політики:
code:
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): top-leveltargetIdабоtargetIdу пакеті конфліктує з ціллю запиту.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): дія не підтримується для профілів existing-session.
{ "error": "<message>" } без
поля code.
Вимога Playwright
Деякі можливості (navigate/act/AI snapshot/role snapshot, скриншоти елементів, PDF) потребують Playwright. Якщо Playwright не встановлено, ці кінцеві точки повертають зрозумілу помилку 501. Що все ще працює без Playwright:- ARIA snapshots
- Скриншоти сторінок для керованого браузера
openclaw, коли для вкладки доступний CDP WebSocket - Скриншоти сторінок для профілів
existing-session/ Chrome MCP - Скриншоти existing-session на основі ref (
--ref) з виводу snapshot
navigateact- AI snapshots / role snapshots
- Скриншоти елементів за CSS-селектором (
--element) - Повний експорт PDF браузера
--full-page; маршрут повертає fullPage is not supported for element screenshots.
Якщо ви бачите Playwright is not available in this gateway build, установіть повний
пакет Playwright (не playwright-core) і перезапустіть gateway або перевстановіть
OpenClaw із підтримкою браузера.
Установлення Playwright у Docker
Якщо ваш Gateway працює в Docker, уникайтеnpx playwright (конфлікти npm override).
Замість цього використовуйте вбудований CLI:
PLAYWRIGHT_BROWSERS_PATH (наприклад,
/home/node/.cache/ms-playwright) і переконайтеся, що /home/node зберігається через
OPENCLAW_HOME_VOLUME або bind mount. Див. Docker.
Як це працює (внутрішньо)
Потік високого рівня:- Невеликий сервер керування приймає HTTP-запити.
- Він підключається до браузерів на базі Chromium (Chrome/Brave/Edge/Chromium) через CDP.
- Для розширених дій (click/type/snapshot/PDF) він використовує Playwright поверх CDP.
- Коли Playwright відсутній, доступні лише операції без Playwright.
Короткий довідник CLI
Усі команди приймають--browser-profile <name> для націлення на конкретний профіль.
Усі команди також приймають --json для машинозчитуваного виводу (стабільні payload).
Основи:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- Для профілів лише з підключенням і віддаленим CDP
openclaw browser stopусе ще є правильною командою очищення після тестів. Вона закриває активну сесію керування та очищає тимчасові перевизначення емуляції замість завершення базового браузера. openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
uploadіdialog— це виклики підготовки; запускайте їх перед натисканням/клавішею, що викликає chooser/dialog.- Шляхи виводу для download і trace обмежені тимчасовими коренями OpenClaw:
- traces:
/tmp/openclaw(резервний варіант:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(резервний варіант:${os.tmpdir()}/openclaw/downloads)
- traces:
- Шляхи upload обмежені тимчасовим коренем завантажень OpenClaw:
- uploads:
/tmp/openclaw/uploads(резервний варіант:${os.tmpdir()}/openclaw/uploads)
- uploads:
uploadтакож може напряму встановлювати file input через--input-refабо--element.snapshot:--format ai(типово, коли встановлено Playwright): повертає AI snapshot із числовими refs (aria-ref="<n>").--format aria: повертає дерево доступності (без refs; лише для перевірки).--efficient(або--mode efficient): компактний preset role snapshot (interactive + compact + depth + lower maxChars).- Типове значення конфігурації (лише tool/CLI): установіть
browser.snapshotDefaults.mode: "efficient", щоб використовувати efficient snapshots, коли викликач не передає режим (див. Конфігурація Gateway). - Параметри role snapshot (
--interactive,--compact,--depth,--selector) примусово вмикають snapshot на основі ролей із refs на кшталтref=e12. --frame "<iframe selector>"обмежує role snapshots цим iframe (поєднується з role refs на кшталтe12).--interactiveвиводить плаский, зручний для вибору список інтерактивних елементів (найкраще для керування діями).--labelsдодає скриншот лише viewport із накладеними мітками ref (виводитьMEDIA:<path>).
click/type/тощо потребуютьrefзіsnapshot(або числовий12, або role refe12). CSS-селектори навмисно не підтримуються для дій.
Snapshots і refs
OpenClaw підтримує два стилі “snapshot”:-
AI snapshot (числові refs):
openclaw browser snapshot(типово;--format ai)- Вивід: текстовий snapshot, що містить числові refs.
- Дії:
openclaw browser click 12,openclaw browser type 23 "hello". - Внутрішньо ref визначається через
aria-refPlaywright.
-
Role snapshot (role refs на кшталт
e12):openclaw browser snapshot --interactive(або--compact,--depth,--selector,--frame)- Вивід: список/дерево на основі ролей із
[ref=e12](і необов’язково[nth=1]). - Дії:
openclaw browser click e12,openclaw browser highlight e12. - Внутрішньо ref визначається через
getByRole(...)(плюсnth()для дублікатів). - Додайте
--labels, щоб включити скриншот viewport із накладеними міткамиe12.
- Вивід: список/дерево на основі ролей із
- Refs не є стабільними між навігаціями; якщо щось не спрацювало, повторно виконайте
snapshotі використайте свіжий ref. - Якщо role snapshot було зроблено з
--frame, role refs обмежуються цим iframe до наступного role snapshot.
Розширені можливості wait
Можна чекати не лише час/текст:- Очікування URL (підтримуються glob Playwright):
openclaw browser wait --url "**/dash"
- Очікування стану завантаження:
openclaw browser wait --load networkidle
- Очікування JS-предиката:
openclaw browser wait --fn "window.ready===true"
- Очікування, поки селектор стане видимим:
openclaw browser wait "#main"
Робочі процеси налагодження
Коли дія завершується невдачею (наприклад, “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Використовуйте
click <ref>/type <ref>(у interactive mode надавайте перевагу role refs) - Якщо все ще не працює:
openclaw browser highlight <ref>, щоб побачити, на що саме націлюється Playwright - Якщо сторінка поводиться дивно:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Для глибокого налагодження: запишіть trace:
openclaw browser trace start- відтворіть проблему
openclaw browser trace stop(виводитьTRACE:<path>)
Вивід JSON
--json призначений для скриптів і структурованих інструментів.
Приклади:
refs плюс невеликий блок stats (lines/chars/refs/interactive), щоб інструменти могли оцінювати розмір і щільність payload.
Перемикачі стану та середовища
Вони корисні для робочих процесів “змусити сайт поводитися як X”:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(застарілийset headers --json '{"X-Debug":"1"}'усе ще підтримується) - HTTP basic auth:
set credentials user pass(або--clear) - Geolocation:
set geo <lat> <lon> --origin "https://example.com"(або--clear) - Media:
set media dark|light|no-preference|none - Timezone / locale:
set timezone ...,set locale ... - Device / viewport:
set device "iPhone 14"(Playwright device presets)set viewport 1280 720
Безпека й приватність
- Профіль браузера openclaw може містити сесії з виконаним входом; ставтеся до нього як до чутливого.
browser act kind=evaluate/openclaw browser evaluateіwait --fnвиконують довільний JavaScript у контексті сторінки. Prompt injection може впливати на це. Вимкніть це черезbrowser.evaluateEnabled=false, якщо воно вам не потрібне.- Для входу та приміток щодо anti-bot (X/Twitter тощо) див. Вхід у браузер + публікація в X/Twitter.
- Тримайте Gateway/вузол-хост приватними (лише loopback або tailnet).
- Віддалені кінцеві точки CDP дуже потужні; тунелюйте й захищайте їх.
Усунення несправностей
Для проблем, специфічних для Linux (особливо snap Chromium), див. Усунення несправностей браузера. Для конфігурацій із розділеними хостами WSL2 Gateway + Windows Chrome див. WSL2 + Windows + усунення несправностей віддаленого Chrome CDP.Помилка запуску CDP vs блокування навігації SSRF
Це різні класи помилок, і вони вказують на різні шляхи коду.- Помилка запуску CDP або готовності означає, що OpenClaw не може підтвердити, що площина керування браузером справна.
- Блокування навігації SSRF означає, що площина керування браузером справна, але ціль навігації сторінки відхиляється політикою.
- Помилка запуску CDP або готовності:
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>
- Блокування навігації SSRF:
- потоки
open,navigate, snapshot або відкриття вкладок завершуються з помилкою політики браузера/мережі, тоді якstartіtabsусе ще працюють
- потоки
- Якщо
startзавершується з помилкоюnot reachable after start, спочатку усувайте проблему готовності CDP. - Якщо
startуспішний, алеtabsзавершується невдачею, площина керування все ще несправна. Розглядайте це як проблему доступності CDP, а не проблему навігації сторінкою. - Якщо
startіtabsуспішні, алеopenабоnavigateзавершуються невдачею, площина керування браузером працює, а проблема — у політиці навігації або цільовій сторінці. - Якщо
start,tabsіopenусі успішні, базовий шлях керування керованим браузером є справним.
- Конфігурація браузера типово використовує fail-closed об’єкт політики SSRF, навіть якщо ви не налаштовуєте
browser.ssrfPolicy. - Для локального керованого профілю loopback
openclawперевірки справності CDP навмисно пропускають перевірку доступності SSRF браузера для власної локальної площини керування OpenClaw. - Захист навігації є окремим. Успішний результат
startабоtabsне означає, що пізніша цільopenабоnavigateбуде дозволена.
- Не послаблюйте політику SSRF браузера типово.
- Надавайте перевагу вузьким виняткам для хостів, таким як
hostnameAllowlistабоallowedHostnames, замість широкого доступу до приватної мережі. - Використовуйте
dangerouslyAllowPrivateNetwork: trueлише в навмисно довірених середовищах, де доступ браузера до приватної мережі потрібен і перевірений.
startуспішнийtabsуспішнийopen http://internal.exampleзавершується невдачею
startзавершується зnot reachable after starttabsтакож завершується невдачею або не може виконатися
Інструменти агента + як працює керування
Агент отримує один інструмент для автоматизації браузера:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotповертає стабільне дерево UI (AI або ARIA).browser actвикористовує IDrefзі snapshot для click/type/drag/select.browser screenshotзахоплює пікселі (усю сторінку або елемент).browserприймає:profile, щоб вибрати іменований профіль браузера (openclaw, chrome або remote CDP).target(sandbox|host|node), щоб вибрати, де розміщено браузер.- У sandbox-сесіях
target: "host"потребуєagents.defaults.sandbox.browser.allowHostControl=true. - Якщо
targetне вказано: sandbox-сесії типово використовуютьsandbox, сесії без sandbox —host. - Якщо підключено вузол із підтримкою браузера, інструмент може автоматично маршрутизуватися до нього, якщо ви не зафіксуєте
target="host"абоtarget="node".
Пов’язане
- Огляд інструментів — усі доступні інструменти агента
- Пісочниця — керування браузером у середовищах sandbox
- Безпека — ризики керування браузером і посилення захисту