openclaw browser
CLI та шаблонів сценаріїв (знімки, посилання, очікування, потоки налагодження).
Керівний API (необов’язково)
Лише для локальних інтеграцій Gateway надає невеликий HTTP API на інтерфейсі зворотного зв’язку. Цей автономний сервер вмикається окремо — задайте змінну середовищаOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 у середовищі служби Gateway
і перезапустіть Gateway, перш ніж HTTP-кінцеві точки стануть доступними. Без
цієї змінної середовище керування браузером і далі працює через CLI та
інструменти агента, але порт керування на інтерфейсі зворотного зв’язку не прослуховується.
- Стан/запуск/зупинення:
GET /,GET /doctor,POST /start,POST /stop,POST /reset-profile - Профілі:
GET /profiles,POST /profiles/create,DELETE /profiles/:name - Вкладки:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId,POST /tabs/action - Знімок/знімок екрана:
GET /snapshot,POST /screenshot - Дії:
POST /navigate,POST /act - Обробники:
POST /hooks/file-chooser,POST /hooks/dialog - Завантаження:
POST /download,POST /wait/download - Дозволи:
POST /permissions/grant - Налагодження:
GET /console,POST /pdf - Налагодження:
GET /errors,GET /requests,GET /dialogs,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
POST /tabs/action — це пакетна форма, яку CLI внутрішньо використовує для
підкоманд browser tab ({"action":"new"|"label"|"select"|"close"|"list", ...});
для безпосередніх сценаріїв надавайте перевагу наведеним вище спеціалізованим маршрутам вкладок.
Усі кінцеві точки приймають ?profile=<name>. POST /start?headless=true запитує
одноразовий запуск у безголовому режимі для локальних керованих профілів без зміни збереженої
конфігурації браузера; профілі лише для підключення, віддаленого CDP та наявних сеансів
відхиляють це перевизначення, оскільки OpenClaw не запускає ці браузерні процеси.
Для кінцевих точок вкладок targetId є назвою поля сумісності. Надавайте перевагу передаванню
suggestedTargetId з GET /tabs або POST /tabs/open; також приймаються мітки й дескриптори tabId,
як-от t1. Необроблені ідентифікатори цілей CDP та унікальні префікси необроблених
ідентифікаторів цілей також працюють, але це нестабільні діагностичні дескриптори.
Якщо налаштовано автентифікацію Gateway за спільним секретом, HTTP-маршрути браузера також потребують автентифікації:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>або базова HTTP-автентифікація з цим паролем
- Цей автономний браузерний API на інтерфейсі зворотного зв’язку не використовує заголовки ідентичності довіреного проксі або Tailscale Serve.
- Якщо
gateway.auth.modeмає значенняnoneабоtrusted-proxy, ці браузерні маршрути на інтерфейсі зворотного зв’язку не успадковують відповідні режими передавання ідентичності; залишайте їх доступними лише через цей інтерфейс.
Контракт помилок /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): дія не підтримується для профілів наявних сеансів.
{ "error": "<message>" } без
поля code.
Вимога Playwright
Деякі функції (навігація/дія/знімок ШІ/рольовий знімок, знімки елементів, PDF) потребують Playwright. Якщо Playwright не встановлено, ці кінцеві точки повертають зрозумілу помилку 501. Що й далі працює без Playwright:- Знімки ARIA
- Знімки доступності в рольовому стилі (
--interactive,--compact,--depth,--efficient), коли доступний WebSocket CDP для окремої вкладки. Це резервний варіант для перевірки та пошуку посилань; Playwright залишається основним рушієм дій. - Знімки сторінки для керованого браузера
openclaw, коли доступний WebSocket CDP для окремої вкладки - Знімки сторінки для профілів
existing-session/ Chrome MCP - Знімки елементів на основі посилань
existing-session(--ref) із виводу знімка
navigateact- Знімки ШІ, які залежать від власного формату знімків ШІ Playwright
- Знімки елементів за CSS-селекторами (
--element) - повний експорт браузера у PDF
--full-page; маршрут повертає fullPage is not supported for element screenshots.
Якщо з’являється Playwright is not available in this gateway build, у пакованому
Gateway відсутня основна залежність середовища виконання браузера. Перевстановіть або оновіть
OpenClaw, а потім перезапустіть Gateway. Для Docker також установіть двійкові файли браузера
Chromium, як показано нижче.
Установлення Playwright у Docker
Якщо Gateway працює в Docker, уникайтеnpx playwright (конфлікти перевизначень npm).
Для власних образів додайте Chromium безпосередньо до образу:
PLAYWRIGHT_BROWSERS_PATH (наприклад,
/home/node/.cache/ms-playwright) і переконайтеся, що /home/node зберігається через
OPENCLAW_HOME_VOLUME або прив’язане монтування. OpenClaw автоматично виявляє збережений
Chromium у Linux. Див. Docker.
Як це працює (внутрішня будова)
Невеликий керівний сервер на інтерфейсі зворотного зв’язку приймає HTTP-запити та підключається до браузерів на основі Chromium через CDP. Розширені дії (клацання/введення/знімок/PDF) виконуються через Playwright поверх CDP; якщо Playwright відсутній, доступні лише операції, що не потребують Playwright. Агент бачить один стабільний інтерфейс, тоді як локальні й віддалені браузери та профілі можуть вільно змінюватися під ним.Коротка довідка CLI
Усі команди приймають--browser-profile <name> для вибору певного профілю та --json для машинозчитуваного виводу.
Основи: стан, вкладки, відкриття/фокусування/закриття
Основи: стан, вкладки, відкриття/фокусування/закриття
Профілі: перегляд, створення, видалення
Профілі: перегляд, створення, видалення
Перевірка: знімок екрана, знімок, консоль, помилки, запити
Перевірка: знімок екрана, знімок, консоль, помилки, запити
- Інструмент
browser, доступний агенту, надаєaction=download(обов’язковіrefіpath) таaction=waitfordownload(необов’язковийpath). Обидва повертають збережену URL-адресу завантаження, запропоноване ім’я файлу та захищений локальний шлях. Явне перехоплення завантажень доступне для керованих профілів Playwright; профілі наявних сеансів повертають помилку непідтримуваної операції. - Віддавайте перевагу атомарним завантаженням через засіб вибору файлів: передавайте тригер
--refразом із завантаженням, щоб OpenClaw підготував і виконав натискання в одному запиті.uploadлише зі шляхами залишається підтримуваним, коли наступний тригер викликається навмисно. Використовуйте--input-refабо--element, щоб безпосередньо задати значення поля введення файлу.dialog— це виклик підготовки; виконайте його перед натисканням кнопки або клавіші, що відкриває діалогове вікно. Якщо дія відкриває модальне вікно, відповідь дії міститьblockedByDialogіbrowserState.dialogs.pending; передайте цейdialogId, щоб відповісти безпосередньо. Діалогові вікна, оброблені поза OpenClaw, відображаються вbrowserState.dialogs.recent. click/type/тощо потребуютьrefзsnapshot(числовий12, посилання роліe12або придатне до дії посилання ARIAax12). CSS-селектори навмисно не підтримуються для дій. Використовуйтеclick-coords, коли єдиною надійною ціллю є позиція у видимій області перегляду.- Шляхи завантажень і трасувань обмежені тимчасовими кореневими каталогами OpenClaw:
/tmp/openclaw{,/downloads}(резервний варіант:${os.tmpdir()}/openclaw/...). uploadприймає файли з кореневого каталогу тимчасових завантажень OpenClaw і керованих OpenClaw вхідних медіафайлів. На керовані вхідні медіафайли можна посилатися якmedia://inbound/<id>, відносний щодо пісочниціmedia/inbound/<id>або визначений шлях у каталозі керованих вхідних медіафайлів. Вкладені посилання на медіафайли, обхід каталогів, символічні посилання, жорсткі посилання та довільні локальні шляхи, як і раніше, відхиляються.uploadтакож може безпосередньо задавати значення полів введення файлів через--input-refабо--element.
suggestedTargetId з tabs.
Короткий огляд прапорців знімків:
--format ai(типово з Playwright): ШІ-знімок із числовими посиланнями (aria-ref="<n>").--format aria: дерево доступності з посиланнямиaxN. Коли Playwright доступний, OpenClaw прив’язує посилання за допомогою внутрішніх DOM-ідентифікаторів до активної сторінки, щоб наступні дії могли їх використовувати; інакше вважайте результат придатним лише для перевірки.--efficient(або--mode efficient): компактний набір параметрів знімка ролей. Задайтеbrowser.snapshotDefaults.mode: "efficient", щоб зробити його типовим (див. конфігурацію Gateway).--interactive,--compact,--depth,--selectorпримусово створюють знімок ролей із посиланнямиref=e12.--frame "<iframe>"обмежує знімки ролей областю iframe.- З Playwright
--labelsдодає знімок екрана з накладеними мітками посилань (виводитьMEDIA:<path>), а також масивannotationsз обмежувальною рамкою кожного посилання. Уscreenshotмітки на основі Playwright працюють з--full-page,--refі--element; уsnapshotсупровідний знімок екрана залишається обмеженим областю перегляду. Профілі наявних сеансів/chrome-mcp відображають накладені мітки на знімках екрана сторінки, але не повертаютьannotationsі не використовують допоміжний засіб Playwright для проєкції повної сторінки/посилання/елемента. Без Playwright або chrome-mcp знімки екрана з мітками недоступні. --urlsдодає знайдені адреси призначення посилань до ШІ-знімків.
Знімки та посилання
OpenClaw підтримує два стилі «знімків»:-
ШІ-знімок (числові посилання):
openclaw browser snapshot(типово;--format ai)- Результат: текстовий знімок, що містить числові посилання.
- Дії:
openclaw browser click 12,openclaw browser type 23 "hello". - Внутрішньо посилання визначається через
aria-refPlaywright.
-
Знімок ролей (посилання ролей на кшталт
e12):openclaw browser snapshot --interactive(або--compact,--depth,--selector,--frame)- Результат: список/дерево на основі ролей із
[ref=e12](і необов’язковим[nth=1]). - Дії:
openclaw browser click e12,openclaw browser highlight e12. - Внутрішньо посилання визначається через
getByRole(...)(а для дублікатів також черезnth()). - Додайте
--labels, щоб включити знімок екрана з накладеними міткамиe12. У профілях на основі Playwright це також повертає метадані обмежувальної рамки для кожного посилання (annotations[]). - Додайте
--urls, коли текст посилання неоднозначний і агенту потрібні конкретні цілі навігації.
- Результат: список/дерево на основі ролей із
-
Знімок ARIA (посилання ARIA на кшталт
ax12):openclaw browser snapshot --format aria- Результат: дерево доступності у вигляді структурованих вузлів.
- Дії:
openclaw browser click ax12працює, коли шлях створення знімка може прив’язати посилання через Playwright і внутрішні DOM-ідентифікатори Chrome.
-
Якщо Playwright недоступний, знімки ARIA все одно можуть бути корисними для
перевірки, але посилання можуть бути непридатними до дій. Повторно створіть знімок за допомогою
--format aiабо--interactive, коли потрібні посилання для дій. -
Підтвердження Docker для резервного шляху через необроблений CDP:
pnpm test:docker:browser-cdp-snapshotзапускає Chromium із CDP, виконуєbrowser doctor --deepі перевіряє, що знімки ролей містять URL-адреси посилань, елементи, визначені за курсором як доступні для натискання, і метадані iframe.
- Посилання нестабільні між переходами; якщо щось не працює, повторно виконайте
snapshotі використайте нове посилання. /actповертає поточний необробленийtargetIdпісля заміни, спричиненої дією, коли може підтвердити вкладку-заміну. Надалі використовуйте стабільні ідентифікатори/мітки вкладок для наступних команд.- Якщо знімок ролей було створено з
--frame, посилання ролей обмежуються цим iframe до наступного знімка ролей. - Невідомі або застарілі посилання
axNодразу спричиняють помилку замість переходу до селектораaria-refPlaywright. У такому разі створіть новий знімок на тій самій вкладці.
Розширені можливості очікування
Можна очікувати не лише час або текст:- Очікування URL-адреси (Playwright підтримує шаблони):
openclaw browser wait --url "**/dash"
- Очікування стану завантаження:
openclaw browser wait --load networkidle- Підтримується в керованих
openclawі необроблених/віддалених профілях CDP. Профілі, що використовують драйверexisting-session(зокрема типовий профільuser), відхиляютьnetworkidle; використовуйте в них очікування--url,--text, селектор або--fn.
- Очікування предиката JS:
openclaw browser wait --fn "window.ready===true"
- Очікування, доки селектор стане видимим:
openclaw browser wait "#main"
Процеси налагодження
Коли дія завершується невдало (наприклад, «не видно», «порушення суворого режиму», «перекрито»):openclaw browser snapshot --interactive- Використовуйте
click <ref>/type <ref>(в інтерактивному режимі віддавайте перевагу посиланням ролей) - Якщо дія все одно не працює:
openclaw browser highlight <ref>, щоб побачити, на що націлюється Playwright - Якщо сторінка поводиться дивно:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Для поглибленого налагодження запишіть трасування:
openclaw browser trace start- відтворіть проблему
openclaw browser trace stop(виводитьTRACE:<path>)
Виведення JSON
--json призначений для скриптів та інструментів структурованої обробки.
Приклади:
refs і невеликий блок stats (рядки/символи/посилання/інтерактивні елементи), щоб інструменти могли оцінювати розмір і щільність корисного навантаження.
Параметри стану та середовища
Вони корисні для процесів на кшталт «змусити сайт поводитися як X»:- Файли cookie:
cookies,cookies set,cookies clear - Сховище:
storage local|session get|set|clear - Автономний режим:
set offline on|off - Заголовки:
set headers --headers-json '{"X-Debug":"1"}'(або позиційна формаset headers '{"X-Debug":"1"}') - Базова автентифікація HTTP:
set credentials user pass(або--clear) - Геолокація:
set geo <lat> <lon> --origin "https://example.com"(або--clear) - Медіа:
set media dark|light|no-preference|none - Часовий пояс / локаль:
set timezone ...,set locale ... - Пристрій / область перегляду:
set device "iPhone 14"(набори параметрів пристроїв Playwright)set viewport 1280 720
Безпека та конфіденційність
- Профіль браузера openclaw може містити активні сеанси входу; вважайте його конфіденційним.
browser act kind=evaluate/openclaw browser evaluateіwait --fnвиконують довільний JavaScript у контексті сторінки. Ін’єкція промпту може керувати цим. Вимкніть це за допомогоюbrowser.evaluateEnabled=false, якщо воно не потрібне.openclaw browser evaluate --fnприймає вихідний код функції, вираз або тіло інструкції. Тіла інструкцій обгортаються в асинхронні функції, тому використовуйтеreturnдля значення, яке потрібно отримати. Використовуйте--timeout-ms <ms>, коли функції на стороні сторінки може знадобитися більше часу, ніж передбачає типовий час очікування обчислення.- Примітки щодо входу та захисту від ботів (X/Twitter тощо) див. у розділі Вхід у браузері та публікація в X/Twitter.
- Зберігайте хост Gateway/вузла приватним (лише loopback або tailnet).
- Віддалені кінцеві точки CDP мають широкі можливості; використовуйте тунелювання та захищайте їх.
Пов’язані матеріали
- Браузер — огляд, конфігурація, профілі, безпека
- Вхід у браузері — вхід на сайти
- Усунення несправностей браузера в Linux
- Усунення несправностей браузера у WSL2