สำหรับการตั้งค่า การกำหนดค่า และการแก้ไขปัญหา โปรดดู เบราว์เซอร์ หน้านี้เป็นเอกสารอ้างอิงสำหรับ API HTTP ควบคุมภายในเครื่อง, CLIDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw browser
และรูปแบบการเขียนสคริปต์ (สแนปชอต, refs, การรอ, โฟลว์ดีบัก)
API ควบคุม (ไม่บังคับ)
สำหรับการผสานรวมภายในเครื่องเท่านั้น Gateway เปิดเผย API HTTP loopback ขนาดเล็ก:- สถานะ/เริ่ม/หยุด:
GET /,POST /start,POST /stop - แท็บ:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - สแนปชอต/ภาพหน้าจอ:
GET /snapshot,POST /screenshot - การดำเนินการ:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - การดาวน์โหลด:
POST /download,POST /wait/download - สิทธิ์:
POST /permissions/grant - การดีบัก:
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> POST /start?headless=true ขอให้เปิดแบบ
headless ครั้งเดียวสำหรับโปรไฟล์ที่จัดการภายในเครื่อง โดยไม่เปลี่ยนการกำหนดค่า
เบราว์เซอร์ที่บันทึกไว้ถาวร โปรไฟล์แบบ attach-only, remote CDP และ existing-session
จะปฏิเสธการแทนที่นั้น เพราะ OpenClaw ไม่ได้เปิดโปรเซสเบราว์เซอร์เหล่านั้นเอง
หากมีการกำหนดค่า auth ของ gateway แบบ shared-secret เส้นทาง HTTP ของเบราว์เซอร์ก็ต้องใช้ auth เช่นกัน:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>หรือ HTTP Basic auth ด้วยรหัสผ่านนั้น
- API เบราว์เซอร์ loopback แบบสแตนด์อโลนนี้ ไม่ ใช้ headers ระบุตัวตนแบบ trusted-proxy หรือ Tailscale Serve
- หาก
gateway.auth.modeเป็นnoneหรือtrusted-proxyเส้นทางเบราว์เซอร์ loopback เหล่านี้จะไม่สืบทอดโหมดที่มีตัวตนเหล่านั้น ให้คงไว้เป็น loopback-only
สัญญาข้อผิดพลาดของ /act
POST /act ใช้คำตอบข้อผิดพลาดแบบมีโครงสร้างสำหรับการตรวจสอบความถูกต้องระดับ route และ
ความล้มเหลวของนโยบาย:
code ปัจจุบัน:
ACT_KIND_REQUIRED(HTTP 400):kindหายไปหรือไม่รู้จักACT_INVALID_REQUEST(HTTP 400): payload ของ action ไม่ผ่านการ normalization หรือการตรวจสอบความถูกต้องACT_SELECTOR_UNSUPPORTED(HTTP 400): มีการใช้selectorกับชนิด action ที่ไม่รองรับACT_EVALUATE_DISABLED(HTTP 403):evaluate(หรือwait --fn) ถูกปิดใช้งานโดย configACT_TARGET_ID_MISMATCH(HTTP 403):targetIdระดับบนสุดหรือแบบ batch ขัดแย้งกับ target ของ requestACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): action ไม่รองรับสำหรับโปรไฟล์ existing-session
{ "error": "<message>" } โดยไม่มีฟิลด์
code
ข้อกำหนดของ Playwright
ฟีเจอร์บางอย่าง (navigate/act/สแนปชอต AI/สแนปชอต role, ภาพหน้าจอ element, PDF) ต้องใช้ Playwright หากไม่ได้ติดตั้ง Playwright endpoint เหล่านั้นจะคืน ข้อผิดพลาด 501 ที่ชัดเจน สิ่งที่ยังใช้งานได้โดยไม่มี Playwright:- สแนปชอต ARIA
- สแนปชอต accessibility แบบ role (
--interactive,--compact,--depth,--efficient) เมื่อมี CDP WebSocket ต่อแท็บพร้อมใช้งาน นี่เป็น fallback สำหรับการตรวจสอบและการค้นหา ref; Playwright ยังคงเป็น engine หลัก สำหรับ action - ภาพหน้าจอหน้าเว็บสำหรับเบราว์เซอร์
openclawที่จัดการ เมื่อมี CDP WebSocket ต่อแท็บพร้อมใช้งาน - ภาพหน้าจอหน้าเว็บสำหรับโปรไฟล์
existing-session/ Chrome MCP - ภาพหน้าจอแบบอิง ref ของ
existing-session(--ref) จาก output ของสแนปชอต
navigateact- สแนปชอต AI ที่ขึ้นอยู่กับรูปแบบสแนปชอต AI แบบ native ของ Playwright
- ภาพหน้าจอ element ด้วย CSS selector (
--element) - การ export PDF ของเบราว์เซอร์เต็มรูปแบบ
--full-page ด้วยเช่นกัน route จะคืนค่า fullPage is not supported for element screenshots
หากคุณเห็น Playwright is not available in this gateway build แสดงว่า Gateway
ที่แพ็กเกจไว้ขาด dependency runtime เบราว์เซอร์หลัก ให้ติดตั้งใหม่หรืออัปเดต
OpenClaw แล้วรีสตาร์ท gateway สำหรับ Docker ให้ติดตั้ง binary เบราว์เซอร์
Chromium ตามที่แสดงด้านล่างด้วย
การติดตั้ง Playwright สำหรับ Docker
หาก Gateway ของคุณรันใน Docker ให้หลีกเลี่ยงnpx playwright (ขัดแย้งกับ npm override)
สำหรับ image แบบกำหนดเอง ให้ bake Chromium เข้าไปใน image:
PLAYWRIGHT_BROWSERS_PATH (เช่น
/home/node/.cache/ms-playwright) และตรวจสอบให้แน่ใจว่า /home/node ถูกคงไว้ผ่าน
OPENCLAW_HOME_VOLUME หรือ bind mount OpenClaw ตรวจพบ Chromium ที่คงไว้บน Linux
โดยอัตโนมัติ ดู Docker
วิธีการทำงาน (ภายใน)
เซิร์ฟเวอร์ควบคุม loopback ขนาดเล็กรับ HTTP requests และเชื่อมต่อกับเบราว์เซอร์ที่ใช้ Chromium ผ่าน CDP การดำเนินการขั้นสูง (click/type/snapshot/PDF) ทำงานผ่าน Playwright บน CDP เมื่อไม่มี Playwright จะใช้ได้เฉพาะการดำเนินการที่ไม่ใช่ Playwright เท่านั้น agent เห็นอินเทอร์เฟซที่เสถียรหนึ่งเดียว ขณะที่เบราว์เซอร์และโปรไฟล์แบบ local/remote ถูกสลับอยู่ด้านล่างได้อย่างอิสระข้อมูลอ้างอิงด่วนของ CLI
ทุกคำสั่งยอมรับ--browser-profile <name> เพื่อระบุโปรไฟล์เฉพาะ และ --json สำหรับ output ที่เครื่องอ่านได้
พื้นฐาน: สถานะ, แท็บ, เปิด/โฟกัส/ปิด
พื้นฐาน: สถานะ, แท็บ, เปิด/โฟกัส/ปิด
การตรวจสอบ: ภาพหน้าจอ, สแนปชอต, คอนโซล, ข้อผิดพลาด, requests
การตรวจสอบ: ภาพหน้าจอ, สแนปชอต, คอนโซล, ข้อผิดพลาด, 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เป็นการเรียกแบบ arming ให้รันก่อน click/press ที่ trigger ตัวเลือก/dialogclick/type/ฯลฯ ต้องใช้refจากsnapshot(ตัวเลข12, role refe12หรือ actionable ARIA refax12) ไม่รองรับ CSS selectors สำหรับ actions โดยเจตนา ใช้click-coordsเมื่อตำแหน่ง viewport ที่มองเห็นเป็น target ที่เชื่อถือได้เพียงอย่างเดียว- เส้นทาง download, trace และ upload ถูกจำกัดอยู่ภายใต้ temp roots ของ OpenClaw:
/tmp/openclaw{,/downloads,/uploads}(fallback:${os.tmpdir()}/openclaw/...) uploadยังสามารถตั้งค่า file inputs โดยตรงผ่าน--input-refหรือ--elementได้
suggestedTargetId จาก tabs ในสคริปต์
ภาพรวม flags ของสแนปชอต:
--format ai(ค่าเริ่มต้นเมื่อใช้ Playwright): สแนปชอต AI พร้อม refs แบบตัวเลข (aria-ref="<n>")--format aria: accessibility tree พร้อม refsaxNเมื่อมี Playwright พร้อมใช้งาน OpenClaw จะ bind refs ด้วย backend DOM ids เข้ากับหน้า live เพื่อให้ action ต่อเนื่องใช้ได้ มิฉะนั้นให้ถือว่า output ใช้สำหรับการตรวจสอบเท่านั้น--efficient(หรือ--mode efficient): preset สแนปชอต role แบบกะทัดรัด ตั้งค่าbrowser.snapshotDefaults.mode: "efficient"เพื่อให้เป็นค่าเริ่มต้น (ดู การกำหนดค่า Gateway)--interactive,--compact,--depth,--selectorบังคับให้ใช้สแนปชอต role พร้อม refsref=e12--frame "<iframe>"จำกัดขอบเขตสแนปชอต role ไว้ที่ iframe--labelsเพิ่มภาพหน้าจอเฉพาะ viewport พร้อม labels ref ที่วางทับ (พิมพ์MEDIA:<path>)--urlsต่อท้ายปลายทางลิงก์ที่ค้นพบลงในสแนปชอต AI
สแนปชอตและ refs
OpenClaw รองรับสไตล์ “snapshot” สองแบบ:-
สแนปชอต AI (refs แบบตัวเลข):
openclaw browser snapshot(ค่าเริ่มต้น;--format ai)- Output: สแนปชอตข้อความที่มี refs แบบตัวเลข
- Actions:
openclaw browser click 12,openclaw browser type 23 "hello" - ภายใน ref จะถูก resolve ผ่าน
aria-refของ Playwright
-
สแนปชอต role (role refs เช่น
e12):openclaw browser snapshot --interactive(หรือ--compact,--depth,--selector,--frame)- Output: รายการ/tree แบบอิง role พร้อม
[ref=e12](และ[nth=1]แบบไม่บังคับ) - Actions:
openclaw browser click e12,openclaw browser highlight e12 - ภายใน ref จะถูก resolve ผ่าน
getByRole(...)(บวกnth()สำหรับรายการซ้ำ) - เพิ่ม
--labelsเพื่อรวมภาพหน้าจอ viewport พร้อม labelse12ที่วางทับ - เพิ่ม
--urlsเมื่อข้อความลิงก์กำกวมและ agent ต้องการ target การนำทางที่เป็นรูปธรรม
- Output: รายการ/tree แบบอิง role พร้อม
-
สแนปช็อต ARIA (ARIA refs เช่น
ax12):openclaw browser snapshot --format aria- เอาต์พุต: accessibility tree ในรูปแบบโหนดที่มีโครงสร้าง
- การดำเนินการ:
openclaw browser click ax12ใช้งานได้เมื่อเส้นทางสแนปช็อตสามารถผูก ref ผ่าน Playwright และ DOM ids ของแบ็กเอนด์ Chrome ได้
-
หาก Playwright ไม่พร้อมใช้งาน สแนปช็อต ARIA ยังคงมีประโยชน์สำหรับ
การตรวจสอบ แต่ refs อาจไม่สามารถใช้ดำเนินการได้ สร้างสแนปช็อตใหม่ด้วย
--format aiหรือ--interactiveเมื่อคุณต้องการ refs สำหรับดำเนินการ -
หลักฐาน Docker สำหรับเส้นทางสำรอง raw-CDP:
pnpm test:docker:browser-cdp-snapshotเริ่ม Chromium พร้อม CDP, รันbrowser doctor --deep, และตรวจสอบว่า สแนปช็อตบทบาทมี URL ของลิงก์, องค์ประกอบที่คลิกได้ซึ่งถูกยกระดับจากเคอร์เซอร์, และเมตาดาตา iframe
- Refs ไม่เสถียรข้ามการนำทาง; หากบางอย่างล้มเหลว ให้รัน
snapshotอีกครั้งและใช้ ref ใหม่ /actส่งคืน rawtargetIdปัจจุบันหลังจากการแทนที่ที่เกิดจากการดำเนินการ เมื่อสามารถพิสูจน์แท็บที่แทนที่ได้ ใช้ ids/labels ของแท็บที่เสถียรต่อไปสำหรับ คำสั่งถัดไป- หากสแนปช็อตบทบาทถูกถ่ายด้วย
--framerole refs จะถูกจำกัดขอบเขตไว้ที่ iframe นั้นจนกว่าจะมีสแนปช็อตบทบาทครั้งถัดไป - Refs
axNที่ไม่รู้จักหรือล้าสมัยจะล้มเหลวทันทีแทนที่จะตกผ่านไปยัง selectoraria-refของ Playwright ให้รันสแนปช็อตใหม่บนแท็บเดียวกันเมื่อ เกิดเหตุการณ์นี้
ความสามารถเสริมของการรอ
คุณสามารถรอได้มากกว่าแค่เวลา/ข้อความ:- รอ URL (รองรับ globs โดย Playwright):
openclaw browser wait --url "**/dash"
- รอสถานะการโหลด:
openclaw browser wait --load networkidle
- รอ JS predicate:
openclaw browser wait --fn "window.ready===true"
- รอให้ selector มองเห็นได้:
openclaw browser wait "#main"
เวิร์กโฟลว์การดีบัก
เมื่อการดำเนินการล้มเหลว (เช่น “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- ใช้
click <ref>/type <ref>(แนะนำให้ใช้ 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 set,cookies clear - พื้นที่จัดเก็บ:
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"(ค่าล่วงหน้าอุปกรณ์ของ Playwright)set viewport 1280 720
ความปลอดภัยและความเป็นส่วนตัว
- โปรไฟล์เบราว์เซอร์ของ openclaw อาจมีเซสชันที่ล็อกอินอยู่; ให้ถือว่าเป็นข้อมูลละเอียดอ่อน
browser act kind=evaluate/openclaw browser evaluateและwait --fnเรียกใช้ JavaScript ตามอำเภอใจในบริบทของหน้า Prompt injection สามารถชี้นำ สิ่งนี้ได้ ปิดใช้งานด้วยbrowser.evaluateEnabled=falseหากคุณไม่ต้องการใช้- สำหรับหมายเหตุเกี่ยวกับการเข้าสู่ระบบและการป้องกันบอต (X/Twitter เป็นต้น) ดู การเข้าสู่ระบบเบราว์เซอร์ + การโพสต์ X/Twitter
- เก็บโฮสต์ Gateway/node ให้เป็นส่วนตัว (loopback หรือเฉพาะ tailnet)
- ปลายทาง CDP ระยะไกลมีอำนาจมาก; ให้ทำ tunnel และป้องกันไว้
ที่เกี่ยวข้อง
- เบราว์เซอร์ - ภาพรวม, การกำหนดค่า, โปรไฟล์, ความปลอดภัย
- การเข้าสู่ระบบเบราว์เซอร์ - การลงชื่อเข้าใช้ไซต์
- การแก้ไขปัญหา Browser บน Linux
- การแก้ไขปัญหา Browser บน WSL2