openclaw browser
і шаблонів написання сценаріїв (знімки, refs, очікування, потоки налагодження).
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): корисне навантаження дії не пройшло нормалізацію або перевірку.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectorвикористано з типом дії, який не підтримується.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(абоwait --fn) вимкнено конфігурацією.ACT_TARGET_ID_MISMATCH(HTTP 403): верхньорівневий або пакетний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-знімки
- Скриншоти сторінки для керованого браузера
openclaw, коли доступний WebSocket CDP для окремої вкладки - Скриншоти сторінки для профілів
existing-session/ Chrome MCP - Скриншоти на основі refs для
existing-session(--ref) із виводу snapshot
navigateact- AI-знімки / role snapshots
- Скриншоти елементів за CSS-селектором (
--element) - повний експорт PDF браузера
--full-page; маршрут повертає fullPage is not supported for element screenshots.
Якщо ви бачите Playwright is not available in this gateway build, відновіть
залежності середовища виконання вбудованого browser Plugin, щоб було встановлено
playwright-core, а потім перезапустіть Gateway. Для пакетних встановлень виконайте openclaw doctor --fix.
Для Docker також встановіть двійкові файли браузера Chromium, як показано нижче.
Встановлення Playwright у Docker
Якщо ваш Gateway працює в Docker, уникайтеnpx playwright (конфлікти перевизначення npm).
Натомість використовуйте вбудований CLI:
PLAYWRIGHT_BROWSERS_PATH (наприклад,
/home/node/.cache/ms-playwright) і переконайтеся, що /home/node зберігається через
OPENCLAW_HOME_VOLUME або bind mount. Див. Docker.
Як це працює (внутрішньо)
Невеликий loopback-сервер керування приймає HTTP-запити та підключається до браузерів на базі Chromium через CDP. Розширені дії (click/type/snapshot/PDF) виконуються через Playwright поверх CDP; коли Playwright відсутній, доступні лише операції без Playwright. Агент бачить один стабільний інтерфейс, тоді як локальні/віддалені браузери та профілі вільно змінюються під ним.Короткий довідник CLI
Усі команди приймають--browser-profile <name> для націлювання на конкретний профіль і --json для машинозчитуваного виводу.
Основи: стан, вкладки, open/focus/close
Основи: стан, вкладки, open/focus/close
Інспекція: screenshot, snapshot, console, errors, requests
Інспекція: screenshot, snapshot, console, errors, requests
Дії: navigate, click, type, drag, wait, evaluate
Дії: navigate, click, type, drag, wait, evaluate
Стан: cookies, storage, offline, headers, geo, device
Стан: cookies, storage, offline, headers, geo, device
uploadіdialog— це виклики підготовки; запускайте їх перед click/press, що викликає вибір файлу або діалог.click/type/тощо потребуютьrefізsnapshot(числовий12або role refe12). CSS-селектори навмисно не підтримуються для дій.- Шляхи download, trace і upload обмежені тимчасовими кореневими каталогами OpenClaw:
/tmp/openclaw{,/downloads,/uploads}(резервний варіант:${os.tmpdir()}/openclaw/...). uploadтакож може напряму встановлювати file input через--input-refабо--element.
--format ai(типово з Playwright): AI-знімок із числовими refs (aria-ref="<n>").--format aria: дерево доступності, без refs; лише для інспекції.--efficient(або--mode efficient): компактний preset role snapshot. Установітьbrowser.snapshotDefaults.mode: "efficient", щоб зробити це типовим значенням (див. Конфігурація Gateway).--interactive,--compact,--depth,--selectorпримусово вмикають role snapshot із refsref=e12.--frame "<iframe>"обмежує role snapshots цим iframe.--labelsдодає скриншот лише видимої області з накладеними мітками ref (виводитьMEDIA:<path>).
Знімки та refs
OpenClaw підтримує два стилі “snapshot”:-
AI snapshot (числові refs):
openclaw browser snapshot(типово;--format ai)- Вивід: текстовий знімок, що містить числові refs.
- Дії:
openclaw browser click 12,openclaw browser type 23 "hello". - Внутрішньо ref визначається через
aria-refу Playwright.
-
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, щоб включити скриншот видимої області з накладеними мітками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>(віддавайте перевагу role refs в interactive mode) - Якщо все одно не працює:
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), щоб інструменти могли оцінювати розмір і щільність корисного навантаження.
Параметри стану та середовища
Вони корисні для сценаріїв на кшталт “змусити сайт поводитися як X”:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Офлайн:
set offline on|off - Заголовки:
set headers --headers-json '{"X-Debug":"1"}'(застарілий варіантset headers --json '{"X-Debug":"1"}'і далі підтримується) - HTTP Basic auth:
set credentials user pass(або--clear) - Геолокація:
set geo <lat> <lon> --origin "https://example.com"(або--clear) - Медіа:
set media dark|light|no-preference|none - Часовий пояс / locale:
set timezone ...,set locale ... - Пристрій / viewport:
set device "iPhone 14"(preset-и пристроїв Playwright)set viewport 1280 720
Безпека та конфіденційність
- Профіль браузера openclaw може містити сеанси з виконаним входом; ставтеся до нього як до чутливих даних.
browser act kind=evaluate/openclaw browser evaluateіwait --fnвиконують довільний JavaScript у контексті сторінки. Prompt injection може спрямувати це. Вимкніть це за допомогоюbrowser.evaluateEnabled=false, якщо воно вам не потрібне.- Щодо входу на сайти та приміток про anti-bot (X/Twitter тощо), див. Browser login + X/Twitter posting.
- Тримайте хост Gateway/node приватним (лише loopback або лише tailnet).
- Віддалені кінцеві точки CDP мають широкі можливості; використовуйте тунелювання та захищайте їх.
Пов’язане
- Browser — огляд, конфігурація, профілі, безпека
- Browser login — вхід на сайти
- Browser Linux troubleshooting
- Browser WSL2 troubleshooting