Tools
เบราว์เซอร์ (จัดการโดย OpenClaw)
OpenClaw สามารถเรียกใช้ โปรไฟล์ Chrome/Brave/Edge/Chromium เฉพาะ ที่เอเจนต์ควบคุมได้ โดยทำงานผ่านบริการควบคุมภายในขนาดเล็กใน Gateway (เฉพาะ loopback) และแยกออกจากเบราว์เซอร์ส่วนตัวของคุณ
- ให้คิดว่าเป็น เบราว์เซอร์แยกต่างหากสำหรับเอเจนต์เท่านั้น โปรไฟล์
openclawจะไม่แตะต้องโปรไฟล์เบราว์เซอร์ส่วนตัวของคุณ - เอเจนต์เปิดแท็บ อ่านหน้าเว็บ คลิก และพิมพ์ในพื้นที่แยกนี้
- ส่วนโปรไฟล์
userที่มาพร้อมระบบจะเชื่อมต่อกับเซสชัน Chrome จริงที่คุณลงชื่อเข้าใช้อยู่ผ่าน Chrome DevTools MCP
สิ่งที่คุณได้รับ
- โปรไฟล์เบราว์เซอร์แยกต่างหากชื่อ openclaw (ค่าเริ่มต้นใช้สีเน้นสีส้ม)
- การควบคุมแท็บแบบกำหนดผลลัพธ์ได้แน่นอน (แสดงรายการ/เปิด/โฟกัส/ปิด)
- การดำเนินการของเอเจนต์ (คลิก/พิมพ์/ลาก/เลือก), สแนปช็อต, ภาพหน้าจอ และ PDF
- โปรไฟล์ที่ใช้ Playwright เป็นระบบเบื้องหลังจะบันทึกการนำทางไปยังไฟล์แนบโดยตรงไว้ในไดเรกทอรีดาวน์โหลดที่จัดการ และส่งคืนข้อมูลเมตา
{ url, suggestedFilename, path }หลังจากตรวจสอบนโยบาย URL สุดท้าย - การดำเนินการของเอเจนต์ที่ใช้ Playwright เป็นระบบเบื้องหลังจะส่งคืนอาร์เรย์
downloadsพร้อมข้อมูลเมตาที่จัดการแบบเดียวกัน เมื่อการดำเนินการเริ่มการดาวน์โหลดอย่างน้อยหนึ่งรายการทันที - Skills
browser-automationที่มาพร้อมระบบ ซึ่งสอนเอเจนต์เกี่ยวกับลูปการกู้คืนสแนปช็อต, แท็บที่เสถียร, การอ้างอิงที่หมดอายุ และตัวขัดขวางที่ต้องดำเนินการด้วยตนเอง เมื่อเปิดใช้ Plugin เบราว์เซอร์ - รองรับหลายโปรไฟล์เพิ่มเติมได้ (
openclaw,work,remote, ...)
เบราว์เซอร์นี้ ไม่ใช่ เบราว์เซอร์หลักสำหรับการใช้งานประจำวัน แต่เป็นพื้นที่ที่ปลอดภัยและแยกต่างหากสำหรับ ระบบอัตโนมัติและการตรวจสอบของเอเจนต์
บน macOS คุณสามารถคัดลอกคุกกี้จากโปรไฟล์ระบบตระกูล Chrome ไปยังโปรไฟล์ที่จัดการแยกต่างหากได้อย่างชัดเจน เบราว์เซอร์ที่จัดการยังคงใช้ไดเรกทอรีข้อมูลผู้ใช้ของตนเอง โดยจะคัดลอกเฉพาะคุกกี้ที่เลือกเท่านั้น ส่วน local storage และ IndexedDB จะไม่ถูกคัดลอก ดูโปรไฟล์หรือข้อมูลอ้างอิง CLI ของ openclaw browserสำหรับคำสั่งนำเข้าและข้อจำกัด
เริ่มต้นอย่างรวดเร็ว
openclaw browser --browser-profile openclaw doctoropenclaw browser --browser-profile openclaw doctor --deepopenclaw browser --browser-profile openclaw statusopenclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw open https://example.comopenclaw browser --browser-profile openclaw snapshot"เบราว์เซอร์ถูกปิดใช้งาน" หมายถึง Plugin หรือ browser.enabled ถูกปิดอยู่ โปรดดู
การกำหนดค่าและการควบคุม Plugin
หากไม่มี openclaw browser อยู่เลย หรือเอเจนต์แจ้งว่าเครื่องมือเบราว์เซอร์
ไม่พร้อมใช้งาน ให้ไปที่ไม่มีคำสั่งหรือเครื่องมือเบราว์เซอร์
การควบคุม Plugin
เครื่องมือ browser เริ่มต้นเป็น Plugin ที่มาพร้อมระบบ ปิดใช้งานเพื่อแทนที่ด้วย Plugin อื่นที่ลงทะเบียนชื่อเครื่องมือ browser เดียวกัน:
{ plugins: { entries: { browser: { enabled: false, }, }, },}ค่าเริ่มต้นต้องมีทั้ง plugins.entries.browser.enabled และ browser.enabled=true การปิดเฉพาะ Plugin จะนำ CLI openclaw browser, เมธอด Gateway browser.request, เครื่องมือเอเจนต์ และบริการควบคุมออกพร้อมกันเป็นหน่วยเดียว ส่วนการกำหนดค่า browser.* ของคุณจะยังคงอยู่สำหรับตัวแทน
การเปลี่ยนแปลงการกำหนดค่าเบราว์เซอร์ต้องรีสตาร์ต Gateway เพื่อให้ Plugin ลงทะเบียนบริการอีกครั้ง
คำแนะนำสำหรับเอเจนต์
หมายเหตุเกี่ยวกับโปรไฟล์เครื่องมือ: tools.profile: "coding" มี web_search และ
web_fetch แต่ไม่มีเครื่องมือ browser แบบเต็ม หากต้องการให้เอเจนต์หรือ
เอเจนต์ย่อยที่สร้างขึ้นใช้ระบบอัตโนมัติของเบราว์เซอร์ ให้เพิ่ม browser ในขั้นตอน
โปรไฟล์:
{ tools: { profile: "coding", alsoAllow: ["browser"], },}สำหรับเอเจนต์เดียว ให้ใช้ agents.list[].tools.alsoAllow: ["browser"]
เพียง tools.subagents.tools.allow: ["browser"] อย่างเดียวไม่เพียงพอ เนื่องจากนโยบายของเอเจนต์ย่อย
จะถูกใช้หลังจากการกรองโปรไฟล์
Plugin เบราว์เซอร์มีคำแนะนำสำหรับเอเจนต์สองระดับ:
- คำอธิบายเครื่องมือ
browserมีข้อกำหนดแบบย่อที่เปิดใช้งานตลอดเวลา: เลือก โปรไฟล์ที่ถูกต้อง, เก็บการอ้างอิงไว้ในแท็บเดียวกัน, ใช้tabId/ป้ายกำกับสำหรับกำหนดเป้าหมาย แท็บ และโหลด Skills เบราว์เซอร์สำหรับงานหลายขั้นตอน - Skills
browser-automationที่มาพร้อมระบบมีลูปการทำงานที่ละเอียดกว่า: ตรวจสอบสถานะ/แท็บก่อน, ติดป้ายกำกับแท็บของงาน, สร้างสแนปช็อตก่อนดำเนินการ, สร้างสแนปช็อตใหม่ หลัง UI เปลี่ยนแปลง, กู้คืนการอ้างอิงที่หมดอายุหนึ่งครั้ง และรายงานสิ่งกีดขวางด้านการเข้าสู่ระบบ/2FA/captcha หรือ กล้อง/ไมโครโฟนว่าเป็นการดำเนินการด้วยตนเองแทนการคาดเดา
Skills ที่มาพร้อม Plugin จะแสดงอยู่ใน Skills ที่พร้อมใช้งานของเอเจนต์เมื่อ เปิดใช้ Plugin โดยคำแนะนำฉบับเต็มของ Skills จะโหลดเมื่อจำเป็น เพื่อให้การทำงาน ตามปกติไม่ต้องเสียค่าโทเค็นทั้งหมด
ไม่มีคำสั่งหรือเครื่องมือเบราว์เซอร์
หากไม่รู้จัก openclaw browser หลังการอัปเกรด, ไม่มี browser.request หรือเอเจนต์รายงานว่าเครื่องมือเบราว์เซอร์ไม่พร้อมใช้งาน สาเหตุทั่วไปคือรายการ plugins.allow ไม่ได้รวม browser และไม่มีบล็อกการกำหนดค่า browser ที่ระดับราก ให้เพิ่มดังนี้:
{ plugins: { allow: ["telegram", "browser"], },}บล็อก browser ที่ระดับรากซึ่งระบุอย่างชัดเจน (คีย์ใดก็ได้ภายใต้ browser เช่น
browser.enabled=true หรือ browser.profiles.<name>) จะเปิดใช้งาน Plugin
เบราว์เซอร์ที่มาพร้อมระบบ แม้ภายใต้ plugins.allow ที่เข้มงวด โดยสอดคล้องกับ
พฤติกรรมการกำหนดค่าช่องทางที่มาพร้อมระบบ ทั้ง plugins.entries.browser.enabled=true และ
tools.alsoAllow: ["browser"] ไม่สามารถใช้แทนการเป็นสมาชิกในรายการอนุญาตได้
ด้วยตัวเอง การนำ plugins.allow ออกทั้งหมดจะคืนค่าเริ่มต้นเช่นกัน
โปรไฟล์: openclaw, user, chrome
openclaw: เบราว์เซอร์ที่จัดการและแยกต่างหาก (ไม่ต้องใช้ส่วนขยาย)user: โปรไฟล์เชื่อมต่อ Chrome DevTools MCP ที่มาพร้อมระบบสำหรับเซสชัน Chrome จริง ที่ลงชื่อเข้าใช้อยู่ ของคุณ Chrome จะแสดงพรอมต์ "Allow remote debugging?" ที่ขัดขวางการทำงานในครั้งแรกที่ OpenClaw เชื่อมต่อ ดังนั้นต้องมีคนอยู่ที่คอมพิวเตอร์chrome: โปรไฟล์ส่วนขยาย Chromeที่มาพร้อมระบบสำหรับ เซสชัน Chrome จริงที่ลงชื่อเข้าใช้อยู่ ของคุณ ใช้งานจากโทรศัพท์ได้โดยไม่ต้องมีใครอยู่ที่ โต๊ะ เนื่องจากควบคุมแท็บผ่านส่วนขยายเบราว์เซอร์ OpenClaw แทน พอร์ตดีบักระยะไกล จึงไม่มีพรอมต์ "Allow remote debugging?"
สำหรับการเรียกใช้เครื่องมือเบราว์เซอร์ของเอเจนต์:
- ค่าเริ่มต้น: ใช้เบราว์เซอร์
openclawที่แยกต่างหาก - แนะนำให้ใช้
profile="chrome"(ส่วนขยาย) เมื่อเซสชันที่ลงชื่อเข้าใช้อยู่มีความสำคัญ และผู้ใช้ ไม่ได้อยู่ที่คอมพิวเตอร์ (Telegram, WhatsApp ฯลฯ) - แนะนำให้ใช้
profile="user"(Chrome MCP) เมื่อเซสชันที่ลงชื่อเข้าใช้อยู่มีความสำคัญ และผู้ใช้ อยู่ที่คอมพิวเตอร์ เพื่ออนุมัติพรอมต์การเชื่อมต่อ profileเป็นการเขียนทับอย่างชัดเจนเมื่อคุณต้องการโหมดเบราว์เซอร์เฉพาะ
ตั้งค่า browser.defaultProfile: "openclaw" หากต้องการให้โหมดที่จัดการเป็นค่าเริ่มต้น
การกำหนดค่า
การตั้งค่าเบราว์เซอร์อยู่ใน ~/.openclaw/openclaw.json
{ browser: { enabled: true, // ค่าเริ่มต้น: true evaluateEnabled: true, // ค่าเริ่มต้น: true; false ปิดใช้งาน act:evaluate (JS ใดๆ) ssrfPolicy: { // dangerouslyAllowPrivateNetwork: true, // เลือกใช้เฉพาะสำหรับการเข้าถึงเครือข่ายส่วนตัวที่เชื่อถือได้ // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, // cdpUrl: "http://127.0.0.1:18792", // การเขียนทับโปรไฟล์เดียวแบบเดิม tabCleanup: { enabled: true, // ค่าเริ่มต้น: true }, // snapshotDefaults: { mode: "efficient" }, // โหมดสแนปช็อตเริ่มต้นเมื่อผู้เรียกไม่ได้ระบุ defaultProfile: "openclaw", color: "#FF4500", headless: false, noSandbox: false, attachOnly: false, executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", profiles: { openclaw: { cdpPort: 18800, color: "#FF4500" }, work: { cdpPort: 18801, color: "#0066CC", headless: true, executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", }, user: { driver: "existing-session", attachOnly: true, color: "#00AA00", }, brave: { driver: "existing-session", attachOnly: true, userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", color: "#FB542B", }, remote: { cdpUrl: "http://10.0.0.42:9222", color: "#00AA00" }, }, },}browser.snapshotDefaults.mode: "efficient" เปลี่ยนโหมดการแยกข้อมูล snapshot เริ่มต้น
เมื่อผู้เรียกไม่ได้ส่ง snapshotFormat หรือ
mode ที่ระบุอย่างชัดเจน ดูตัวเลือกสแนปช็อตต่อการเรียกได้ที่ API ควบคุมเบราว์เซอร์
ความเป็นเจ้าของการล้างแท็บ
การล้างแท็บของเซสชันใช้กับแท็บที่สร้างโดยเครื่องมือเบราว์เซอร์ OpenClaw
ด้วย action: "open" เท่านั้น OpenClaw จะไม่รับแท็บที่เปิดอยู่ก่อนแล้ว,
เปิดโดยผู้ใช้ หรือมีความเป็นเจ้าของที่ไม่ทราบ บล็อก
browser.tabCleanup ควบคุมการกวาดตามระยะเมื่อไม่มีการใช้งานและเมื่อถึงขีดจำกัดสำหรับเซสชันหลัก
การปิดใช้งานบล็อกนี้ไม่ได้ปิดการล้างวงจรชีวิตของเซสชันที่ระบุอย่างชัดเจน
สำหรับการเปิดภายในโฮสต์ ความเป็นเจ้าของที่มีเป้าหมาย CDP แบบเนทีฟที่เสถียรและข้อมูลระบุ
เบราว์เซอร์จะถูกจัดเก็บในสถานะ SQLite ที่ใช้ร่วมกัน ระเบียนเหล่านั้นจะคงอยู่หลังจากรีสตาร์ต Gateway
และยังมีสิทธิ์สำหรับ /new และการล้างวงจรชีวิตของเซสชันอื่นๆ
การล้างวงจรชีวิตของเซสชันรวมถึงการสิ้นสุดเซสชันของเอเจนต์ย่อย, cron และ ACP
ระเบียนที่เป้าหมายซึ่งแสดงต่อเครื่องมือเป็นเป้าหมาย CDP แบบเนทีฟจะยังมีสิทธิ์
สำหรับการกวาดเมื่อไม่มีการใช้งานและเมื่อถึงขีดจำกัดต่อเซสชันหลังรีสตาร์ต แฮนเดิลเป้าหมาย Chrome MCP
เป็นแบบเฉพาะกระบวนการ ดังนั้นระเบียน existing-session ที่เริ่มจากสถานะปิดจึงรอการล้างวงจรชีวิต
แทนที่จะเสี่ยงต่อการกวาดเมื่อไม่มีการใช้งานต่อกิจกรรมที่ไม่สามารถระบุที่มา
ได้อย่างปลอดภัยหลังรีสตาร์ต เส้นทางแบบคงทนนี้ครอบคลุมโปรไฟล์ที่ OpenClaw จัดการ,
โปรไฟล์ CDP ระยะไกลทั่วไป และโปรไฟล์ existing-session ที่มี
cdpUrl ระบุไว้อย่างชัดเจนได้ หาก OpenClaw สามารถระบุทั้งเป้าหมายแบบเนทีฟและข้อมูลระบุ
เบราว์เซอร์ที่เสถียร ก่อนปิดระเบียนแบบคงทน OpenClaw จะตรวจสอบว่า
โปรไฟล์ที่กำหนดค่าและอินสแตนซ์เบราว์เซอร์ยังคงตรงกัน
Chrome MCP --autoConnect, ปลายทาง CDP ที่การตอบกลับ /json/version ไม่มี
ข้อมูลระบุเบราว์เซอร์ที่เสถียร และการเปิดที่ไม่สามารถระบุเป้าหมายแบบเนทีฟได้
จะยังคงเป็นการติดตามแบบพยายามอย่างดีที่สุดเฉพาะกระบวนการ รายการเหล่านี้สามารถล้างได้ขณะที่
กระบวนการ Gateway นั้นกำลังทำงาน แต่จะไม่ถูกปิดโดยอัตโนมัติหลังจาก
รีสตาร์ต Gateway แท็บที่เปิดค้างไว้ก่อนมีการติดตามแบบคงทนจะไม่ถูก
รับย้อนหลัง โปรดปิดแท็บเหล่านั้นด้วยตนเอง
การล้างเป็นแบบพยายามอย่างดีที่สุด ไม่ได้รับประกันว่าแท็บที่มีสิทธิ์ทั้งหมดจะปิด ทันที ความล้มเหลวชั่วคราวในการตรวจสอบความเป็นเจ้าของหรือการปิดจะปล่อยให้การล้าง แบบคงทนรอลองใหม่ในภายหลัง
การมองเห็นภาพหน้าจอ (รองรับโมเดลแบบข้อความเท่านั้น)
เมื่อโมเดลหลักเป็นแบบข้อความเท่านั้น (ไม่รองรับการมองเห็น/หลายรูปแบบ) ภาพหน้าจอ ของเบราว์เซอร์จะส่งคืนบล็อกรูปภาพที่โมเดลไม่สามารถอ่านได้ ภาพหน้าจอของเบราว์เซอร์ จะใช้การกำหนดค่าการทำความเข้าใจรูปภาพที่มีอยู่ร่วมกัน ดังนั้นโมเดลภาพ ที่กำหนดค่าสำหรับการทำความเข้าใจสื่อจึงสามารถอธิบายภาพหน้าจอเป็นข้อความได้โดยไม่ต้องมี การตั้งค่าโมเดลเฉพาะเบราว์เซอร์
{ tools: { media: { image: { models: [ { provider: "bytedance", model: "doubao-seed-2.0-pro" }, // เพิ่มตัวเลือกสำรอง; รายการแรกที่สำเร็จจะถูกใช้ { provider: "openai", model: "gpt-4o" }, ], }, // โมเดลสื่อที่ใช้ร่วมกันยังทำงานได้เมื่อติดแท็กว่ารองรับรูปภาพ // models: [{ provider: "openai", model: "gpt-4o", capabilities: ["image"] }], }, }, agents: { defaults: { // ค่าเริ่มต้นของโมเดลภาพที่มีอยู่จะถูกใช้เช่นกัน // imageModel: { primary: "openai/gpt-4o" }, }, },}วิธีการทำงาน:
- เอเจนต์เรียกใช้
browser screenshotและภาพจะถูกบันทึกลงดิสก์ตามปกติ - เครื่องมือเบราว์เซอร์จะสอบถามรันไทม์การทำความเข้าใจภาพที่มีอยู่ว่า สามารถอธิบายภาพหน้าจอโดยใช้โมเดลภาพสำหรับสื่อที่กำหนดค่าไว้ โมเดลสื่อ ที่ใช้ร่วมกัน ค่าเริ่มต้นของโมเดลภาพ หรือผู้ให้บริการภาพที่รองรับด้วยการยืนยันตัวตนได้หรือไม่
- โมเดลการมองเห็นส่งคืนคำอธิบายแบบข้อความ ซึ่งจะถูกครอบด้วย
wrapExternalContent(ตัวป้องกันการแทรกพรอมต์) และส่งคืนให้เอเจนต์ เป็นบล็อกข้อความแทนบล็อกภาพ - หากการทำความเข้าใจภาพไม่พร้อมใช้งาน ถูกข้าม หรือล้มเหลว เบราว์เซอร์จะ ย้อนกลับไปส่งคืนบล็อกภาพเดิม
บล็อกภาพหน้าจอเป็นผลลัพธ์ส่วนตัวของเครื่องมือ: เอเจนต์สามารถตรวจสอบได้ แต่ OpenClaw จะไม่แนบภาพเหล่านี้ไปกับการตอบกลับช่องทางโดยอัตโนมัติ หากต้องการแชร์ ภาพหน้าจอ ให้สั่งเอเจนต์ส่งภาพนั้นอย่างชัดเจนด้วยเครื่องมือข้อความ
ใช้ฟิลด์ tools.media.image / tools.media.models ที่มีอยู่สำหรับโมเดล
สำรอง ระยะหมดเวลา ขีดจำกัดไบต์ โปรไฟล์ และการตั้งค่าคำขอของผู้ให้บริการ
หากโมเดลหลักที่ใช้งานอยู่รองรับการมองเห็นแล้ว และไม่ได้กำหนดค่าโมเดล การทำความเข้าใจภาพไว้อย่างชัดเจน OpenClaw จะคงผลลัพธ์ภาพตามปกติไว้เพื่อให้ โมเดลหลักอ่านภาพหน้าจอได้โดยตรง
พอร์ตและการเข้าถึง
- บริการควบคุมผูกกับลูปแบ็กบนพอร์ตที่คำนวณจาก
gateway.port(ค่าเริ่มต้น18791= Gateway + 2)OPENCLAW_GATEWAY_PORTมีลำดับความสำคัญเหนือgateway.port; ทั้งสองค่าจะเลื่อนพอร์ตที่คำนวณในกลุ่มเดียวกัน - โปรไฟล์
openclawภายในเครื่องจะกำหนดcdpPort/cdpUrlโดยอัตโนมัติจากช่วงที่เริ่มต้นสูงกว่าพอร์ตควบคุม 9 พอร์ต (ค่าเริ่มต้น18800-18899); ให้ตั้งค่าเหล่านี้เฉพาะสำหรับ โปรไฟล์ CDP ระยะไกลหรือการแนบปลายทางของเซสชันที่มีอยู่เท่านั้น เมื่อไม่ได้ตั้งค่าcdpUrlจะมีค่าเริ่มต้นเป็น พอร์ต CDP ภายในเครื่องที่มีการจัดการ - การเข้าถึง CDP ระยะไกลและ
attachOnlyการแฮนด์เชก WebSocket และการเริ่มต้น Chrome ภายในเครื่องที่มีการจัดการ ใช้กำหนดเวลาสิ้นสุดในตัว - ความล้มเหลวซ้ำๆ ในการเปิดหรือเตรียมความพร้อมของ Chrome ที่มีการจัดการจะถูกตัดวงจรแยกตาม โปรไฟล์ หลังจากล้มเหลวติดต่อกันหลายครั้ง OpenClaw จะหยุดความพยายามเปิดใหม่ ชั่วครู่ แทนที่จะสร้าง Chromium ทุกครั้งที่เรียกใช้เครื่องมือเบราว์เซอร์ ให้แก้ไข ปัญหาการเริ่มต้น ปิดใช้งานเบราว์เซอร์หากไม่จำเป็น หรือรีสตาร์ต Gateway หลังจากแก้ไขแล้ว
นโยบาย SSRF
- คำขอนำทางของเบราว์เซอร์และเปิดแท็บจะได้รับการตรวจสอบล่วงหน้า ระหว่างการดำเนินการและช่วงผ่อนผันหลังการดำเนินการที่มีขอบเขต การโต้ตอบ Playwright ที่ได้รับการป้องกัน (คลิก คลิกตามพิกัด เลื่อนเมาส์ค้าง ลาก เลื่อน เลือก กด พิมพ์ กรอกแบบฟอร์ม และประเมินผล) จะสกัดกั้นการโหลดเอกสารระดับบนสุดและเฟรมย่อยที่นโยบายปฏิเสธก่อนส่งไบต์คำขอ HTTP จากนั้นจะตรวจสอบ URL
http(s)สุดท้ายซ้ำแบบพยายามให้ดีที่สุด - ก่อนเปิด Chrome ที่ OpenClaw จัดการใหม่ทุกครั้ง OpenClaw จะพยายามปิดใช้งานการคาดการณ์เครือข่าย เพื่อระงับการเชื่อมต่อล่วงหน้าเชิงคาดการณ์ของ Chromium ที่ตรวจพบสำหรับการโหลดที่ถูกปฏิเสธเหล่านั้น นี่คือการป้องกันหลายชั้น ไม่ใช่ขอบเขตของนโยบาย: เบราว์เซอร์ที่ถูกนำกลับมาใช้ซ้ำหลังรีสตาร์ตบริการควบคุมและแบ็กเอนด์เบราว์เซอร์อื่นๆ อาจไม่มีการเสริมความปลอดภัยแบบเดียวกัน การกำหนดเส้นทางของ Playwright ยังคงไม่ใช่ไฟร์วอลล์เครือข่าย และไม่สกัดกั้นการเปลี่ยนเส้นทางแต่ละช่วง คำขอแรกของป๊อปอัป ทราฟฟิก Service Worker โค้ดหน้าเว็บที่ทำงานหลังพ้นช่วงการป้องกันที่มีขอบเขต หรือทุกเส้นทางเบื้องหลัง/ทรัพยากรย่อย การแยกทราฟฟิกขาออกอย่างสมบูรณ์ต้องใช้การแยกฝั่งเจ้าของหรือพร็อกซีที่บังคับใช้นโยบาย
- ในโหมด SSRF แบบเข้มงวด การค้นหาปลายทาง CDP ระยะไกลและโพรบ
/json/version(cdpUrl) จะได้รับการตรวจสอบด้วย - ตัวแปรสภาพแวดล้อม
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYและNO_PROXYของ Gateway/ผู้ให้บริการจะไม่ทำให้เบราว์เซอร์ที่ OpenClaw จัดการใช้พร็อกซีโดยอัตโนมัติ Chrome ที่มีการจัดการจะเชื่อมต่อโดยตรงเป็นค่าเริ่มต้น เพื่อไม่ให้การตั้งค่าพร็อกซีของผู้ให้บริการลดทอนการตรวจสอบ SSRF ของเบราว์เซอร์ - โพรบตรวจความพร้อมของ CDP ภายในเครื่องที่ OpenClaw จัดการและการเชื่อมต่อ DevTools WebSocket จะข้ามพร็อกซีเครือข่ายที่มีการจัดการสำหรับปลายทางลูปแบ็กที่เปิดใช้งานนั้นโดยเฉพาะ ดังนั้น
openclaw browser startจึงยังทำงานได้เมื่อพร็อกซีของผู้ดูแลระบบปิดกั้นทราฟฟิกขาออกผ่านลูปแบ็ก - หากต้องการให้เบราว์เซอร์ที่มีการจัดการใช้พร็อกซี ให้ส่งแฟล็กพร็อกซีของ Chrome อย่างชัดเจนผ่าน
browser.extraArgsเช่น--proxy-server=...หรือ--proxy-pac-url=...โหมด SSRF แบบเข้มงวดจะปิดกั้นการกำหนดเส้นทางผ่านพร็อกซีของเบราว์เซอร์อย่างชัดเจน เว้นแต่จะเปิดใช้การเข้าถึงเครือข่ายส่วนตัวของเบราว์เซอร์โดยเจตนา browser.ssrfPolicy.dangerouslyAllowPrivateNetworkปิดอยู่โดยค่าเริ่มต้น; เปิดใช้เฉพาะเมื่อเชื่อถือการเข้าถึงเครือข่ายส่วนตัวของเบราว์เซอร์โดยเจตนาเท่านั้น- ยังคงรองรับ
browser.ssrfPolicy.allowPrivateNetworkในฐานะนามแฝงแบบเดิม
ลักษณะการทำงานของโปรไฟล์
attachOnly: trueหมายถึงห้ามเปิดเบราว์เซอร์ภายในเครื่องโดยเด็ดขาด; ให้แนบเฉพาะเมื่อมีเบราว์เซอร์ทำงานอยู่แล้ว- สามารถตั้งค่า
headlessแบบส่วนกลางหรือแยกตามโปรไฟล์ภายในเครื่องที่มีการจัดการได้ ค่าระดับโปรไฟล์จะแทนที่browser.headlessดังนั้นโปรไฟล์หนึ่งที่เปิดภายในเครื่องจึงทำงานแบบไม่มีส่วนติดต่อได้ ขณะที่อีกโปรไฟล์ยังคงแสดงผล POST /start?headless=trueและopenclaw browser start --headlessร้องขอการเปิดแบบไม่มีส่วนติดต่อ เพียงครั้งเดียวสำหรับโปรไฟล์ภายในเครื่องที่มีการจัดการ โดยไม่เขียนbrowser.headlessหรือการกำหนดค่าโปรไฟล์ใหม่ โปรไฟล์เซสชันที่มีอยู่ แบบแนบเท่านั้น และ CDP ระยะไกลจะปฏิเสธการแทนค่านี้ เนื่องจาก OpenClaw ไม่ได้เปิด กระบวนการเบราว์เซอร์เหล่านั้น- บนโฮสต์ Linux ที่ไม่มี
DISPLAYหรือWAYLAND_DISPLAYโปรไฟล์ภายในเครื่องที่มีการจัดการ จะใช้โหมดไม่มีส่วนติดต่อโดยอัตโนมัติเป็นค่าเริ่มต้น เมื่อทั้งสภาพแวดล้อมและการกำหนดค่า ระดับโปรไฟล์/ส่วนกลางไม่ได้เลือกโหมดมีส่วนติดต่อไว้อย่างชัดเจน ให้ใช้รูปแบบระดับเบราว์เซอร์ที่ไม่กำกวมopenclaw browser --json status;openclaw browser status --jsonที่ตามท้าย ก็ใช้ได้เช่นกัน เนื่องจากstatusไม่ได้กำหนด--jsonของตนเอง คำสั่งจะรายงานheadlessSourceเป็นenv,profile,config,request,linux-display-fallbackหรือdefault OPENCLAW_BROWSER_HEADLESS=1บังคับให้การเปิดโปรไฟล์ภายในเครื่องที่มีการจัดการเป็นแบบไม่มีส่วนติดต่อสำหรับ กระบวนการปัจจุบันOPENCLAW_BROWSER_HEADLESS=0บังคับใช้โหมดมีส่วนติดต่อสำหรับการเริ่มต้น ตามปกติ และส่งคืนข้อผิดพลาดที่มีแนวทางแก้ไขบนโฮสต์ Linux ที่ไม่มีเซิร์ฟเวอร์แสดงผล; คำขอstart --headlessที่ระบุชัดเจนยังคงมีลำดับความสำคัญสำหรับการเปิดครั้งนั้น- เส้นทางควบคุมเบราว์เซอร์และไคลเอนต์แบบโปรแกรมจะเก็บ
errorที่มนุษย์อ่านได้ของข้อผิดพลาดไม่มีจอแสดงผลไว้ และเปิดเผยเหตุผลที่เสถียรno_display_for_headed_profileโดยdetailsจะมีเพียงprofile,requestedHeadless,headlessSourceและdisplayPresentเพื่อให้ไคลเอนต์ API เลือกวิธีแก้ไขที่ถูกต้องได้โดยไม่ต้องจับคู่ข้อความ - สำหรับโปรไฟล์ภายในเครื่องที่มีการจัดการและกำลังทำงาน สถานะและ doctor จะสอบถาม
ปลายทาง CDP ระดับเบราว์เซอร์ของ Chrome เกี่ยวกับตัวเรนเดอร์ แบ็กเอนด์ อุปกรณ์/ไดรเวอร์ สถานะ
ฟีเจอร์ วิธีแก้ปัญหาเฉพาะหน้าของไดรเวอร์ และความสามารถวิดีโอแบบเร่งความเร็ว ผลลัพธ์จะ
ถูกแคชสำหรับกระบวนการเบราว์เซอร์นั้น และเปิดเผยโดยสมบูรณ์ผ่าน
openclaw browser --json statusการเรียกดูสถานะแบบพาสซีฟจะไม่เปิด Chrome เบราว์เซอร์แบบเซสชันที่มีอยู่ ส่วนขยาย CDP ระยะไกล และแซนด์บ็อกซ์จะยังคงแยกจากกัน และไม่ได้รับการตรวจสอบผ่านเส้นทางโฮสต์ที่มีการจัดการนี้ - Chrome ที่มีการจัดการแบบไม่มีส่วนติดต่อยังคงใช้ค่าเริ่มต้น
--disable-gpuที่ระมัดระวัง การวินิจฉัยจะไม่เปิดใช้การเร่งความเร็ว เพิ่มการตั้งค่าการเร่งความเร็วส่วนกลาง หรืออนุญาตให้เบราว์เซอร์แซนด์บ็อกซ์เข้าถึงอุปกรณ์ - สามารถตั้งค่า
executablePathแบบส่วนกลางหรือแยกตามโปรไฟล์ภายในเครื่องที่มีการจัดการได้ ค่าระดับโปรไฟล์จะแทนที่browser.executablePathดังนั้นโปรไฟล์ที่มีการจัดการแต่ละโปรไฟล์จึงสามารถเปิดเบราว์เซอร์ที่ใช้ Chromium คนละตัวได้ ทั้งสองรูปแบบรองรับ~สำหรับไดเรกทอรีเริ่มต้นของระบบปฏิบัติการ color(ทั้งระดับบนสุดและระดับโปรไฟล์) จะแต่งสี UI ของเบราว์เซอร์เพื่อให้เห็นว่าโปรไฟล์ใดกำลังทำงาน- โปรไฟล์เริ่มต้นคือ
openclaw(แบบสแตนด์อโลนที่มีการจัดการ) ใช้defaultProfile: "user"เพื่อเลือกใช้เบราว์เซอร์ของผู้ใช้ที่ลงชื่อเข้าใช้แล้ว - ลำดับการตรวจหาอัตโนมัติ: เบราว์เซอร์เริ่มต้นของระบบหากใช้ Chromium; มิฉะนั้นคือ Chrome, Brave, Edge, Chromium, Chrome Canary
driver: "existing-session"ใช้ Chrome DevTools MCP แทน CDP ดิบ โดยสามารถแนบผ่านการเชื่อมต่ออัตโนมัติของ Chrome MCP หรือผ่านcdpUrlเมื่อมีปลายทาง DevTools สำหรับเบราว์เซอร์ที่กำลังทำงานอยู่แล้วdriver: "extension"ควบคุม Chrome ที่ลงชื่อเข้าใช้แล้วผ่าน ส่วนขยาย Chrome ของ OpenClaw รีเลย์เป็นเจ้าของปลายทางลูปแบ็ก ดังนั้นโปรไฟล์เหล่านี้จึงไม่รองรับcdpUrlนี่เป็นโหมดเบราว์เซอร์ที่ลงชื่อเข้าใช้แล้วเพียงโหมดเดียวที่ทำงานได้โดยไม่มีผู้ใดอยู่หน้าเครื่อง- ตั้งค่า
browser.profiles.<name>.userDataDirเมื่อโปรไฟล์เซสชันที่มีอยู่ควรแนบกับโปรไฟล์ผู้ใช้ Chromium ที่ไม่ใช่ค่าเริ่มต้น (Brave, Edge เป็นต้น) เส้นทางนี้ยังรองรับ~สำหรับไดเรกทอรีเริ่มต้นของระบบปฏิบัติการ
ใช้ Brave หรือเบราว์เซอร์อื่นที่ใช้ Chromium
หากเบราว์เซอร์ เริ่มต้นของระบบ ใช้ Chromium (Chrome/Brave/Edge/ฯลฯ)
OpenClaw จะใช้เบราว์เซอร์นั้นโดยอัตโนมัติ ตั้งค่า browser.executablePath เพื่อแทนที่
การตรวจหาอัตโนมัติ ค่า executablePath ทั้งระดับบนสุดและระดับโปรไฟล์รองรับ ~
สำหรับไดเรกทอรีเริ่มต้นของระบบปฏิบัติการ:
openclaw config set browser.executablePath "/usr/bin/google-chrome"openclaw config set browser.profiles.work.executablePath "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"หรือตั้งค่าในการกำหนดค่าแยกตามแพลตฟอร์ม:
macOS
{browser: {executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",},}Windows
{browser: {executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe",},}Linux
{browser: {executablePath: "/usr/bin/brave-browser",},}executablePath ระดับโปรไฟล์มีผลเฉพาะกับโปรไฟล์ภายในเครื่องที่มีการจัดการซึ่ง OpenClaw
เป็นผู้เปิดเท่านั้น โปรไฟล์ existing-session จะแนบกับเบราว์เซอร์ที่ทำงานอยู่แล้ว
แทน และโปรไฟล์ CDP ระยะไกลจะใช้เบราว์เซอร์ที่อยู่เบื้องหลัง cdpUrl
การควบคุมภายในเครื่องเทียบกับระยะไกล
- การควบคุมภายในเครื่อง (ค่าเริ่มต้น): Gateway เริ่มบริการควบคุมแบบลูปแบ็กและสามารถเปิดเบราว์เซอร์ภายในเครื่องได้
- การควบคุมระยะไกล (โฮสต์ Node): เรียกใช้โฮสต์ Node บนเครื่องที่มีเบราว์เซอร์; Gateway จะส่งต่อการดำเนินการของเบราว์เซอร์ผ่านพร็อกซีไปยังเครื่องนั้น
- CDP ระยะไกล: ตั้งค่า
browser.profiles.<name>.cdpUrl(หรือbrowser.cdpUrl) เพื่อ แนบกับเบราว์เซอร์ระยะไกลที่ใช้ Chromium ในกรณีนี้ OpenClaw จะไม่เปิดเบราว์เซอร์ภายในเครื่อง - สำหรับบริการ CDP ที่จัดการจากภายนอกบนลูปแบ็ก (ตัวอย่างเช่น Browserless ใน
Docker ที่เผยแพร่ไปยัง
127.0.0.1) ให้ตั้งค่าattachOnly: trueด้วย CDP แบบลูปแบ็ก ที่ไม่มีattachOnlyจะถือว่าเป็นโปรไฟล์เบราว์เซอร์ภายในเครื่องที่ OpenClaw จัดการ headlessมีผลเฉพาะกับโปรไฟล์ภายในเครื่องที่มีการจัดการซึ่ง OpenClaw เป็นผู้เปิดเท่านั้น โดยจะไม่รีสตาร์ตหรือเปลี่ยนแปลงเบราว์เซอร์แบบเซสชันที่มีอยู่หรือ CDP ระยะไกลexecutablePathใช้กฎเดียวกันสำหรับโปรไฟล์ภายในเครื่องที่มีการจัดการ การเปลี่ยนค่านี้ใน โปรไฟล์ภายในเครื่องที่มีการจัดการและกำลังทำงาน จะทำเครื่องหมายโปรไฟล์นั้นเพื่อรีสตาร์ต/ปรับสถานะให้สอดคล้อง เพื่อให้ การเปิดครั้งถัดไปใช้ไบนารีใหม่
ลักษณะการหยุดทำงานจะแตกต่างกันตามโหมดโปรไฟล์:
- โปรไฟล์ภายในเครื่องที่มีการจัดการ:
openclaw browser stopจะหยุดกระบวนการเบราว์เซอร์ที่ OpenClaw เป็นผู้เปิด - โปรไฟล์แบบแนบเท่านั้นและ CDP ระยะไกล:
openclaw browser stopจะปิดเซสชัน ควบคุมที่ใช้งานอยู่และปล่อยการแทนค่าการจำลองของ Playwright/CDP (วิวพอร์ต รูปแบบสี โลเคล เขตเวลา โหมดออฟไลน์ และสถานะที่คล้ายกัน) แม้ว่า OpenClaw จะไม่ได้เปิดกระบวนการเบราว์เซอร์ก็ตาม
URL ของ CDP ระยะไกลสามารถมีข้อมูลยืนยันตัวตนได้:
- โทเค็นในคิวรี (เช่น
https://provider.example?token=<token>) - การยืนยันตัวตนแบบ HTTP Basic (เช่น
https://user:pass@provider.example)
OpenClaw จะคงข้อมูลการยืนยันตัวตนไว้เมื่อเรียกใช้ endpoint ของ /json/* และเมื่อเชื่อมต่อ
กับ CDP WebSocket ควรใช้ตัวแปรสภาพแวดล้อมหรือตัวจัดการข้อมูลลับสำหรับ
โทเค็นแทนการบันทึกโทเค็นลงในไฟล์การกำหนดค่า
พร็อกซีเบราว์เซอร์ของ Node (ค่าเริ่มต้นแบบไม่ต้องกำหนดค่า)
หากเรียกใช้ โฮสต์ Node บนเครื่องที่มีเบราว์เซอร์ OpenClaw สามารถ กำหนดเส้นทางการเรียกใช้เครื่องมือเบราว์เซอร์ไปยัง Node นั้นโดยอัตโนมัติ โดยไม่ต้องกำหนดค่าเบราว์เซอร์เพิ่มเติม นี่คือเส้นทางเริ่มต้นสำหรับ Gateway ระยะไกล
หมายเหตุ:
- โฮสต์ Node เปิดให้เข้าถึงเซิร์ฟเวอร์ควบคุมเบราว์เซอร์ภายในผ่าน คำสั่งพร็อกซี
- โปรไฟล์มาจากการกำหนดค่า
browser.profilesของ Node เอง (เหมือนกับแบบภายใน) - คำสั่งพร็อกซีไม่อนุญาตให้แก้ไขโปรไฟล์แบบถาวร (
create-profile,delete-profile,reset-profile) ไม่ว่าallowProfilesจะเป็นค่าใดก็ตาม ให้ทำการเปลี่ยนแปลงเหล่านั้นบน Node โดยตรง nodeHost.browserProxy.allowProfilesเป็นตัวเลือก หากเว้นว่างไว้ ระบบจะใช้พฤติกรรมเดิม/ค่าเริ่มต้น: โปรไฟล์ที่กำหนดค่าไว้ทั้งหมดจะยังคงเข้าถึงได้ผ่านพร็อกซี- หากตั้งค่า
nodeHost.browserProxy.allowProfilesOpenClaw จะถือว่าค่านี้เป็นขอบเขตสิทธิ์ขั้นต่ำที่จำกัดชื่อโปรไฟล์ซึ่งพร็อกซีสามารถกำหนดเป็นเป้าหมายได้ - ปิดใช้งานหากไม่ต้องการ:
- บน Node:
nodeHost.browserProxy.enabled=false - บน Gateway:
gateway.nodes.browser.mode="off"(รองรับ"auto"เพื่อเลือก Node เบราว์เซอร์ที่เชื่อมต่ออยู่เพียง Node เดียว หรือ"manual"เพื่อบังคับให้ระบุพารามิเตอร์ Node อย่างชัดเจนด้วย)
- บน Node:
Browserless (CDP ระยะไกลแบบโฮสต์)
Browserless เป็นบริการ Chromium แบบโฮสต์ที่เปิดเผย URL การเชื่อมต่อ CDP ผ่าน HTTPS และ WebSocket OpenClaw ใช้ได้ทั้งสองรูปแบบ แต่ สำหรับโปรไฟล์เบราว์เซอร์ระยะไกล ตัวเลือกที่ง่ายที่สุดคือ URL WebSocket โดยตรง จากเอกสารการเชื่อมต่อของ Browserless
ตัวอย่าง:
{ browser: { enabled: true, defaultProfile: "browserless", profiles: { browserless: { cdpUrl: "wss://production-sfo.browserless.io?token=<BROWSERLESS_API_KEY>", color: "#00AA00", }, }, },}หมายเหตุ:
- แทนที่
<BROWSERLESS_API_KEY>ด้วยโทเค็น Browserless จริง - เลือก endpoint ของภูมิภาคที่ตรงกับบัญชี Browserless (ดูเอกสารของ Browserless)
- หาก Browserless ให้ URL ฐานแบบ HTTPS สามารถแปลงเป็น
wss://สำหรับการเชื่อมต่อ CDP โดยตรง หรือคง URL แบบ HTTPS ไว้และให้ OpenClaw ค้นหา/json/version
Browserless Docker บนโฮสต์เดียวกัน
เมื่อโฮสต์ Browserless เองใน Docker และ OpenClaw ทำงานบนโฮสต์ ให้ถือว่า Browserless เป็นบริการ CDP ที่จัดการจากภายนอก:
{ browser: { enabled: true, defaultProfile: "browserless", profiles: { browserless: { cdpUrl: "ws://127.0.0.1:3000", attachOnly: true, color: "#00AA00", }, }, },}กระบวนการ OpenClaw ต้องเข้าถึงที่อยู่ใน browser.profiles.browserless.cdpUrl ได้
Browserless ต้องประกาศ endpoint ที่เข้าถึงได้และตรงกันด้วย
โดยตั้งค่า EXTERNAL ของ Browserless เป็นฐาน WebSocket ที่ OpenClaw เข้าถึงได้จากภายนอกเดียวกัน เช่น
ws://127.0.0.1:3000, ws://browserless:3000 หรือที่อยู่เครือข่าย Docker ส่วนตัว
ที่เสถียร หาก /json/version ส่งคืน webSocketDebuggerUrl ซึ่งชี้ไปยัง
ที่อยู่ที่ OpenClaw เข้าถึงไม่ได้ HTTP ของ CDP อาจดูเหมือนทำงานปกติ แต่การเชื่อมต่อ
WebSocket ยังคงล้มเหลว
อย่าปล่อยให้ attachOnly ไม่มีการตั้งค่าสำหรับโปรไฟล์ Browserless แบบลูปแบ็ก หากไม่มี
attachOnly OpenClaw จะถือว่าพอร์ตลูปแบ็กเป็นโปรไฟล์เบราว์เซอร์ภายใน
ที่ OpenClaw จัดการ และอาจรายงานว่าพอร์ตถูกใช้งานอยู่แต่ OpenClaw ไม่ได้เป็นเจ้าของ
ผู้ให้บริการ CDP ผ่าน WebSocket โดยตรง
บริการเบราว์เซอร์แบบโฮสต์บางรายการเปิดเผย endpoint แบบ WebSocket โดยตรง แทน
การค้นหา CDP ผ่าน HTTP มาตรฐาน (/json/version) OpenClaw รองรับรูปแบบ
URL ของ CDP 3 รูปแบบ และเลือกกลยุทธ์การเชื่อมต่อที่เหมาะสมโดยอัตโนมัติ:
- การค้นหาผ่าน HTTP(S) -
http://host[:port]หรือhttps://host[:port]OpenClaw เรียกใช้/json/versionเพื่อค้นหา URL ดีบักเกอร์ WebSocket แล้วจึง เชื่อมต่อ โดยไม่มีการย้อนกลับไปใช้ WebSocket - endpoint แบบ 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 โดยตรงที่รากเปล่า หาก endpoint WebSocket ที่ประกาศไว้ปฏิเสธการจับมือ CDP แต่รากเปล่าที่กำหนดค่าไว้ ยอมรับ OpenClaw จะย้อนกลับไปใช้รากนั้นด้วย วิธีนี้ทำให้ws://แบบเปล่า ที่ชี้ไปยัง Chrome ภายในยังคงเชื่อมต่อได้ เนื่องจาก Chrome ยอมรับการอัปเกรด WebSocket เฉพาะบนพาธรายเป้าหมายที่ระบุจาก/json/versionขณะที่ผู้ให้บริการแบบโฮสต์ ยังคงใช้ endpoint WebSocket ระดับรากได้ เมื่อ endpoint การค้นหาของผู้ให้บริการ ประกาศ URL อายุสั้นที่ไม่เหมาะสำหรับ Playwright CDP
openclaw browser doctor ใช้ตรรกะค้นหาก่อนและย้อนกลับไปใช้ WebSocket
แบบเดียวกับการเชื่อมต่อขณะรันไทม์ ดังนั้น URL รากเปล่าที่เชื่อมต่อสำเร็จจะไม่
ถูกรายงานว่าเข้าถึงไม่ได้ในการวินิจฉัย
Browserbase
Browserbase เป็นแพลตฟอร์มคลาวด์สำหรับเรียกใช้ เบราว์เซอร์แบบไม่มีส่วนหัว พร้อมการแก้ CAPTCHA โหมดซ่อนตัว และพร็อกซี สำหรับที่อยู่อาศัยในตัว
{ browser: { enabled: true, defaultProfile: "browserbase", profiles: { browserbase: { cdpUrl: "wss://connect.browserbase.com?apiKey=<BROWSERBASE_API_KEY>", color: "#F97316", }, }, },}หมายเหตุ:
- ลงทะเบียน และคัดลอก API Key จากแดชบอร์ด Overview
- แทนที่
<BROWSERBASE_API_KEY>ด้วยคีย์ API ของ Browserbase จริง - Browserbase สร้างเซสชันเบราว์เซอร์โดยอัตโนมัติเมื่อเชื่อมต่อ WebSocket จึงไม่ จำเป็นต้องสร้างเซสชันด้วยตนเอง
- ดูราคาสำหรับขีดจำกัดของระดับฟรีและแผนแบบชำระเงินในปัจจุบัน
- ดูเอกสาร Browserbaseสำหรับข้อมูลอ้างอิง API ฉบับเต็ม คู่มือ SDK และตัวอย่างการผสานรวม
Notte
Notte เป็นแพลตฟอร์มคลาวด์สำหรับเรียกใช้เบราว์เซอร์ แบบไม่มีส่วนหัว พร้อมโหมดซ่อนตัว พร็อกซีสำหรับที่อยู่อาศัย และ Gateway WebSocket ที่รองรับ CDP โดยตรงในตัว
{ browser: { enabled: true, defaultProfile: "notte", profiles: { notte: { cdpUrl: "wss://us-prod.notte.cc/sessions/connect?token=<NOTTE_API_KEY>", color: "#7C3AED", }, }, },}หมายเหตุ:
- ลงทะเบียน และคัดลอก API Key จาก หน้าการตั้งค่าคอนโซล
- แทนที่
<NOTTE_API_KEY>ด้วยคีย์ API ของ Notte จริง - Notte สร้างเซสชันเบราว์เซอร์โดยอัตโนมัติเมื่อเชื่อมต่อ WebSocket จึงไม่ จำเป็นต้องสร้างเซสชันด้วยตนเอง เซสชันจะถูกทำลายเมื่อ WebSocket ตัดการเชื่อมต่อ
- ดูราคาสำหรับขีดจำกัดของระดับฟรีและแผนแบบชำระเงินในปัจจุบัน
- ดูเอกสาร Notteสำหรับข้อมูลอ้างอิง API ฉบับเต็ม คู่มือ SDK และตัวอย่างการผสานรวม
ความปลอดภัย
แนวคิดสำคัญ:
- การควบคุมเบราว์เซอร์จำกัดเฉพาะลูปแบ็ก การเข้าถึงจะผ่านการยืนยันตัวตนของ Gateway หรือการจับคู่ Node
- API HTTP ของเบราว์เซอร์แบบลูปแบ็กแยกเดี่ยวใช้ การยืนยันตัวตนด้วยข้อมูลลับที่ใช้ร่วมกันเท่านั้น:
การยืนยันตัวตนแบบ bearer ด้วยโทเค็น Gateway,
x-openclaw-passwordหรือการยืนยันตัวตนแบบ HTTP Basic ด้วย รหัสผ่าน Gateway ที่กำหนดค่าไว้ - ส่วนหัวข้อมูลประจำตัวของ Tailscale Serve และ
gateway.auth.mode: "trusted-proxy"ไม่ ใช้ยืนยันตัวตนกับ API เบราว์เซอร์แบบลูปแบ็กแยกเดี่ยวนี้ - หากเปิดใช้การควบคุมเบราว์เซอร์และไม่ได้กำหนดค่าการยืนยันตัวตนด้วยข้อมูลลับที่ใช้ร่วมกัน OpenClaw
จะสร้างและบันทึกข้อมูลประจำตัวสำหรับควบคุมเบราว์เซอร์โดยอัตโนมัติเมื่อเริ่มต้น:
เป็นโทเค็นเมื่อ
gateway.auth.modeเป็นnoneหรือเป็นรหัสผ่านเมื่อเป็นtrusted-proxy(บันทึกผ่านgateway.auth.passwordเพื่อให้ไคลเอนต์ลูปแบ็ก นอกกระบวนการสามารถค้นหาค่าได้) ระบบจะข้ามการสร้างอัตโนมัติเมื่อมีการกำหนดค่า ข้อมูลประจำตัวแบบสตริงอย่างชัดเจนสำหรับโหมดนั้นอยู่แล้ว หรือเมื่อgateway.auth.modeเป็นpassword - กำหนดค่า
gateway.auth.token,gateway.auth.password,OPENCLAW_GATEWAY_TOKENหรือOPENCLAW_GATEWAY_PASSWORDอย่างชัดเจน หากต้องการข้อมูลลับที่เสถียรและควบคุมเอง แทนค่าที่ระบบสร้างขึ้น
เคล็ดลับ CDP ระยะไกล:
- ควรใช้ endpoint ที่เข้ารหัส (HTTPS หรือ WSS) และโทเค็นอายุสั้นเมื่อทำได้
- หลีกเลี่ยงการฝังโทเค็นอายุยาวลงในไฟล์การกำหนดค่าโดยตรง
- เก็บ Gateway และโฮสต์ Node ทั้งหมดไว้ในเครือข่ายส่วนตัว (Tailscale) และหลีกเลี่ยงการเปิดเผยต่อสาธารณะ
- ถือว่า URL/โทเค็น CDP ระยะไกลเป็นข้อมูลลับ และควรใช้ตัวแปรสภาพแวดล้อมหรือตัวจัดการข้อมูลลับ
โปรไฟล์ (หลายเบราว์เซอร์)
OpenClaw รองรับโปรไฟล์ที่มีชื่อหลายรายการ (การกำหนดค่าการกำหนดเส้นทาง) โปรไฟล์อาจเป็น:
- จัดการโดย OpenClaw: อินสแตนซ์เบราว์เซอร์ที่ใช้ Chromium โดยเฉพาะ พร้อมไดเรกทอรีข้อมูลผู้ใช้และพอร์ต CDP ของตนเอง
- ระยะไกล: URL CDP ที่ระบุอย่างชัดเจน (เบราว์เซอร์ที่ใช้ Chromium ซึ่งทำงานอยู่ที่อื่น)
- เซสชันที่มีอยู่: โปรไฟล์ Chrome ที่มีอยู่ผ่านการเชื่อมต่ออัตโนมัติของ Chrome DevTools MCP
ค่าเริ่มต้น:
- โปรไฟล์
openclawจะถูกสร้างโดยอัตโนมัติหากไม่มี - โปรไฟล์
userมีมาให้ในตัวสำหรับการเชื่อมต่อเซสชันที่มีอยู่ผ่าน Chrome MCP - โปรไฟล์เซสชันที่มีอยู่นอกเหนือจาก
userต้องเปิดใช้เอง โดยสร้างด้วย--driver existing-session - พอร์ต CDP ภายในจะจัดสรรจากช่วง 18800-18899 โดยค่าเริ่มต้น
- การลบโปรไฟล์จะย้ายไดเรกทอรีข้อมูลภายในของโปรไฟล์ไปยังถังขยะ
endpoint การควบคุมทั้งหมดรองรับ ?profile=<name>; CLI ใช้ --browser-profile
เซสชันที่มีอยู่ผ่าน Chrome DevTools MCP
OpenClaw ยังสามารถเชื่อมต่อกับโปรไฟล์เบราว์เซอร์ที่ใช้ Chromium ซึ่งกำลังทำงานอยู่ผ่าน เซิร์ฟเวอร์ Chrome DevTools MCP อย่างเป็นทางการได้ด้วย โดยจะใช้แท็บและสถานะการเข้าสู่ระบบ ที่เปิดอยู่แล้วในโปรไฟล์เบราว์เซอร์นั้นซ้ำ
ข้อมูลพื้นฐานและเอกสารอ้างอิงการตั้งค่าอย่างเป็นทางการ:
โปรไฟล์ในตัว: user สร้างโปรไฟล์เซสชันที่มีอยู่แบบกำหนดเองหาก
ต้องการชื่อ สี หรือไดเรกทอรีข้อมูลเบราว์เซอร์ที่ต่างออกไป
โดยค่าเริ่มต้น โปรไฟล์ user ในตัวจะใช้การเชื่อมต่ออัตโนมัติของ Chrome MCP ซึ่ง
กำหนดเป้าหมายไปยังโปรไฟล์ Google Chrome เริ่มต้นในเครื่อง ใช้ userDataDir สำหรับ Brave,
Edge, Chromium หรือโปรไฟล์ Chrome ที่ไม่ใช่ค่าเริ่มต้น ~ จะขยายเป็นไดเรกทอรีหลัก
ของระบบปฏิบัติการ:
{ browser: { profiles: { brave: { driver: "existing-session", attachOnly: true, userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", color: "#FB542B", }, }, },}จากนั้นในเบราว์เซอร์ที่ตรงกัน:
- เปิดหน้าตรวจสอบของเบราว์เซอร์นั้นสำหรับการดีบักระยะไกล
- เปิดใช้การดีบักระยะไกล
- เปิดเบราว์เซอร์ค้างไว้และอนุมัติข้อความแจ้งการเชื่อมต่อเมื่อ OpenClaw เชื่อมต่อ
หน้าตรวจสอบที่ใช้บ่อย:
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
การทดสอบเบื้องต้นสำหรับการเชื่อมต่อจริง:
openclaw browser --browser-profile user startopenclaw browser --browser-profile user statusopenclaw browser --browser-profile user tabsopenclaw browser --browser-profile user snapshot --format aiลักษณะเมื่อสำเร็จ:
statusแสดงdriver: existing-sessionstatusแสดงtransport: chrome-mcpstatusแสดงrunning: truetabsแสดงรายการแท็บเบราว์เซอร์ที่เปิดอยู่แล้วsnapshotส่งคืน refs จากแท็บที่ใช้งานอยู่ซึ่งเลือกไว้
สิ่งที่ควรตรวจสอบหากการแนบไม่ทำงาน:
- เบราว์เซอร์เป้าหมายที่ใช้ Chromium เป็นเวอร์ชัน
144+ - เปิดใช้การดีบักระยะไกลในหน้าตรวจสอบของเบราว์เซอร์นั้นแล้ว
- เบราว์เซอร์แสดงพรอมต์ขอความยินยอมในการแนบ และคุณได้ยอมรับแล้ว
- หากเริ่ม Chrome ด้วย
--remote-debugging-portที่ระบุอย่างชัดเจน ให้ตั้งค่าbrowser.profiles.<name>.cdpUrlเป็นปลายทาง DevTools นั้นแทนการพึ่งพา การเชื่อมต่ออัตโนมัติของ Chrome MCP openclaw doctorย้ายการกำหนดค่าเบราว์เซอร์แบบเก่าที่อิงส่วนขยาย และตรวจสอบว่า ติดตั้ง Chrome ไว้ในเครื่องสำหรับโปรไฟล์การเชื่อมต่ออัตโนมัติเริ่มต้น แต่ไม่สามารถ เปิดใช้การดีบักระยะไกลฝั่งเบราว์เซอร์ให้คุณได้
การใช้งานโดยเอเจนต์:
- ใช้
profile="user"เมื่อต้องการสถานะเบราว์เซอร์ที่ผู้ใช้เข้าสู่ระบบไว้ - หากใช้โปรไฟล์เซสชันที่มีอยู่แบบกำหนดเอง ให้ส่งชื่อโปรไฟล์นั้นอย่างชัดเจน
- เลือกโหมดนี้เฉพาะเมื่อผู้ใช้อยู่ที่คอมพิวเตอร์เพื่ออนุมัติพรอมต์ การแนบ
- โฮสต์ Gateway หรือ Node สามารถเรียกใช้
npx chrome-devtools-mcp@latest --autoConnectได้
หมายเหตุ:
- เส้นทางนี้มีความเสี่ยงสูงกว่าโปรไฟล์
openclawที่แยกออกจากกัน เนื่องจากสามารถ ดำเนินการภายในเซสชันเบราว์เซอร์ที่คุณเข้าสู่ระบบไว้ - OpenClaw ไม่ได้เปิดเบราว์เซอร์สำหรับไดรเวอร์นี้ แต่จะแนบเท่านั้น
- OpenClaw ใช้โฟลว์
--autoConnectอย่างเป็นทางการของ Chrome DevTools MCP ที่นี่ หาก ตั้งค่าuserDataDirระบบจะส่งผ่านค่านี้เพื่อกำหนดเป้าหมายไปยังไดเรกทอรีข้อมูลผู้ใช้นั้น - เซสชันที่มีอยู่สามารถแนบบนโฮสต์ที่เลือกหรือผ่าน Node เบราว์เซอร์ที่เชื่อมต่ออยู่ หาก Chrome อยู่ที่อื่นและไม่มี Node เบราว์เซอร์เชื่อมต่ออยู่ ให้ใช้ CDP ระยะไกลหรือโฮสต์ Node แทน
- เป้าหมาย Chrome MCP และ refs ของสแนปช็อตมีขอบเขตอยู่ภายในกระบวนการย่อย MCP เดียว หลังจาก
กระบวนการนั้นเริ่มใหม่ ให้เรียกใช้
browser tabsอีกครั้ง เลือกเป้าหมายใหม่อย่างชัดเจน ก่อนทำงานเฉพาะเป้าหมาย และสร้างสแนปช็อตใหม่ก่อนใช้ refs แต่ละ ref ใช้ได้เฉพาะกับเป้าหมายของตนและสแนปช็อตล่าสุดเท่านั้น นามแฝงเก่าจะไม่ถูก โอนไปยังแท็บทดแทน แม้ว่า URL จะตรงกัน - ปัจจุบัน Chrome DevTools MCP กำหนดเส้นทางเครื่องมือของหน้าด้วยรหัสหน้าแบบตัวเลข ภายในกระบวนการ แฮนเดิลที่มีขอบเขตระดับกระบวนการช่วยป้องกันการใช้ซ้ำระหว่างการแทนที่กระบวนการย่อย แต่ การแทนที่บริบทเบราว์เซอร์ภายในกระบวนการระหว่างการเรียกเครื่องมือที่ติดกันยังคงสามารถ เปลี่ยนเป้าหมายของการดำเนินการได้ การกำหนดเส้นทางแบบอะตอมอย่างสมบูรณ์ต้องอาศัยการรองรับจากเครื่องมือหน้าต้นทาง สำหรับรหัสเป้าหมายที่คงที่
การเปิดใช้ Chrome MCP แบบกำหนดเอง
เขียนทับเซิร์ฟเวอร์ Chrome DevTools MCP ที่ถูกเรียกใช้แยกตามโปรไฟล์ เมื่อโฟลว์
npx chrome-devtools-mcp@latest เริ่มต้นไม่ตรงตามที่ต้องการ (โฮสต์ออฟไลน์
เวอร์ชันที่ตรึงไว้ ไบนารีที่รวมไว้กับระบบ):
| ฟิลด์ | การทำงาน |
|---|---|
mcpCommand |
ไฟล์ปฏิบัติการที่จะเรียกใช้แทน npx โดยจะใช้ค่าตามที่ระบุ และรองรับพาธสัมบูรณ์ |
mcpArgs |
อาร์เรย์อาร์กิวเมนต์ที่ส่งตรงไปยัง mcpCommand โดยแทนที่อาร์กิวเมนต์ chrome-devtools-mcp@latest --autoConnect เริ่มต้น |
เมื่อตั้งค่า cdpUrl บนโปรไฟล์เซสชันที่มีอยู่ OpenClaw จะข้าม
--autoConnect และส่งต่อปลายทางไปยัง Chrome MCP โดยอัตโนมัติ:
http(s)://...→--browserUrl <url>(ปลายทางการค้นหา DevTools ผ่าน HTTP)ws(s)://...→--wsEndpoint <url>(CDP WebSocket โดยตรง)
ไม่สามารถใช้แฟล็กปลายทางร่วมกับ userDataDir ได้: เมื่อตั้งค่า cdpUrl
ระบบจะละเว้น userDataDir สำหรับการเปิดใช้ Chrome MCP เนื่องจาก Chrome MCP จะแนบกับ
เบราว์เซอร์ที่ทำงานอยู่หลังปลายทาง แทนการเปิดไดเรกทอรี
โปรไฟล์
ข้อจำกัดของฟีเจอร์เซสชันที่มีอยู่
เมื่อเทียบกับโปรไฟล์ openclaw ที่มีการจัดการ ไดรเวอร์เซสชันที่มีอยู่มีข้อจำกัดมากกว่า:
- ภาพหน้าจอ - การจับภาพหน้าและการจับภาพองค์ประกอบด้วย
--refใช้งานได้ แต่ตัวเลือก CSS--elementใช้งานไม่ได้ ไม่จำเป็นต้องใช้ Playwright สำหรับภาพหน้าจอของหน้าหรือองค์ประกอบที่อิง ref (--full-pageไม่สามารถใช้ร่วมกับ--refหรือ--elementในโปรไฟล์ใด ๆ ไม่ใช่เฉพาะเซสชันที่มีอยู่) - การดำเนินการ -
click,type,hover,scrollIntoView,dragและselectต้องใช้ refs ของสแนปช็อต (ไม่รองรับตัวเลือก CSS)click-coordsคลิกพิกัดที่มองเห็นได้ในวิวพอร์ตและไม่ต้องใช้ ref ของสแนปช็อตclickรองรับเฉพาะปุ่มซ้าย (ไม่รองรับการเขียนทับปุ่มหรือปุ่มปรับแต่ง)typeไม่รองรับslowly=true; ให้ใช้fillหรือpresspressไม่รองรับdelayMstype,hover,scrollIntoView,drag,selectและfillไม่รองรับการเขียนทับtimeoutMsต่อการเรียกแต่ละครั้ง แต่evaluateรองรับselectรับค่าเดียว ไม่รองรับbatch; ให้ส่งการดำเนินการทีละรายการ - การรอ / อัปโหลด / กล่องโต้ตอบ -
wait --urlรองรับรูปแบบตรงทั้งหมด สตริงย่อย และ glob (เหมือนกับแบบมีการจัดการ) ไม่รองรับwait --load networkidleบนโปรไฟล์เซสชันที่มีอยู่ (ใช้งานได้บนโปรไฟล์ CDP แบบมีการจัดการและแบบดิบ/ระยะไกล) ฮุกการอัปโหลดต้องใช้refหรือinputRefครั้งละหนึ่งไฟล์ และไม่มี CSSelementฮุกกล่องโต้ตอบไม่รองรับการเขียนทับระยะหมดเวลาหรือdialogId - การมองเห็นกล่องโต้ตอบ - การตอบกลับจากการดำเนินการของเบราว์เซอร์แบบมีการจัดการจะมี
blockedByDialogและbrowserState.dialogs.pendingเมื่อการดำเนินการเปิดกล่องโต้ตอบแบบโมดัล และสแนปช็อตจะมีสถานะกล่องโต้ตอบที่รอดำเนินการด้วย ให้ตอบกลับด้วยbrowser dialog --accept/--dismiss --dialog-id <id>ขณะที่มีกล่องโต้ตอบรอดำเนินการ กล่องโต้ตอบที่จัดการภายนอก OpenClaw จะปรากฏภายใต้browserState.dialogs.recent - ฟีเจอร์เฉพาะแบบมีการจัดการ - การส่งออก PDF การสกัดกั้นการดาวน์โหลด และ
responsebodyยังคงต้องใช้เส้นทางเบราว์เซอร์แบบมีการจัดการ
การรับประกันการแยกออกจากกัน
- ไดเรกทอรีข้อมูลผู้ใช้เฉพาะ: ไม่แตะต้องโปรไฟล์เบราว์เซอร์ส่วนตัวของคุณ
- พอร์ตเฉพาะ: หลีกเลี่ยง
9222เพื่อป้องกันการชนกับเวิร์กโฟลว์การพัฒนา - การควบคุมแท็บแบบกำหนดผลลัพธ์แน่นอน:
tabsส่งคืนsuggestedTargetIdก่อน จากนั้นจึงส่งคืน แฮนเดิลtabIdที่คงที่ เช่นt1ป้ายกำกับเสริม และtargetIdแบบดิบ เอเจนต์ควรใช้suggestedTargetIdซ้ำ ส่วนรหัสดิบยังคงพร้อมใช้งานสำหรับ การดีบักและความเข้ากันได้
การเลือกเบราว์เซอร์
เมื่อเปิดใช้ในเครื่อง OpenClaw จะเลือกตัวแรกที่พร้อมใช้งาน:
- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
สามารถเขียนทับได้ด้วย browser.executablePath
แพลตฟอร์ม:
- macOS: ตรวจสอบ
/Applicationsและ~/Applications - Linux: ตรวจสอบตำแหน่งทั่วไปของ Chrome/Brave/Edge/Chromium ภายใต้
/usr/bin,/snap/bin,/opt/google,/opt/brave.com,/usr/lib/chromiumและ/usr/lib/chromium-browserรวมถึง Chromium ที่ Playwright จัดการภายใต้PLAYWRIGHT_BROWSERS_PATHหรือ~/.cache/ms-playwright - Windows: ตรวจสอบตำแหน่งการติดตั้งทั่วไป
API ควบคุม (ไม่บังคับ)
สำหรับการเขียนสคริปต์และการดีบัก Gateway มี API ควบคุม HTTP
เฉพาะลูปแบ็ก ขนาดเล็ก พร้อม CLI openclaw browser ที่สอดคล้องกัน (สแนปช็อต, refs, ความสามารถเสริม
สำหรับการรอ, เอาต์พุต JSON, เวิร์กโฟลว์การดีบัก) ดูข้อมูลอ้างอิงฉบับเต็มที่
API ควบคุมเบราว์เซอร์
การแก้ไขปัญหา
สำหรับปัญหาเฉพาะ Linux (โดยเฉพาะ snap Chromium) โปรดดู การแก้ไขปัญหาเบราว์เซอร์
สำหรับการตั้งค่าแบบแยกโฮสต์ระหว่าง WSL2 Gateway กับ Windows Chrome โปรดดู การแก้ไขปัญหา WSL2 + Windows + Chrome CDP ระยะไกล
ความล้มเหลวในการเริ่มต้น CDP เทียบกับการบล็อก 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>Port <port> is in use for profile "<name>" but not by openclawเมื่อกำหนดค่า บริการ CDP ภายนอกแบบลูปแบ็กโดยไม่มีattachOnly: true
- การบล็อก SSRF ของการนำทาง:
- โฟลว์
open,navigate, สแนปช็อต หรือการเปิดแท็บล้มเหลวด้วยข้อผิดพลาดของนโยบายเบราว์เซอร์/เครือข่าย ขณะที่startและtabsยังคงทำงานได้
- โฟลว์
ใช้ลำดับขั้นต่ำนี้เพื่อแยกความแตกต่างระหว่างสองกรณี:
openclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw tabsopenclaw browser --browser-profile openclaw open https://example.comวิธีอ่านผลลัพธ์:
- หาก
startล้มเหลวด้วยnot reachable after startให้แก้ไขปัญหาความพร้อมของ CDP ก่อน - หาก
startสำเร็จ แต่tabsล้มเหลว ระนาบควบคุมยังคงไม่เป็นปกติ ให้ถือว่าเป็นปัญหาการเข้าถึง CDP ไม่ใช่ปัญหาการนำทางของหน้า - หาก
startและtabsสำเร็จ แต่openหรือnavigateล้มเหลว แสดงว่าระนาบควบคุมเบราว์เซอร์ทำงานแล้ว และความล้มเหลวอยู่ที่นโยบายการนำทางหรือหน้าเป้าหมาย - หาก
start,tabsและopenสำเร็จทั้งหมด แสดงว่าเส้นทางควบคุมเบราว์เซอร์แบบมีการจัดการพื้นฐานทำงานเป็นปกติ
รายละเอียดพฤติกรรมที่สำคัญ:
- การกำหนดค่าเบราว์เซอร์มีค่าเริ่มต้นเป็นออบเจ็กต์นโยบาย SSRF แบบปิดเมื่อเกิดข้อผิดพลาด แม้ไม่ได้กำหนดค่า
browser.ssrfPolicy - สำหรับโปรไฟล์แบบมีการจัดการ
openclawบนลูปแบ็กภายใน การตรวจสอบสถานะ CDP จะข้ามการบังคับใช้ความสามารถในการเข้าถึงตามนโยบาย SSRF ของเบราว์เซอร์โดยตั้งใจ สำหรับระนาบควบคุมภายในของ OpenClaw เอง - การป้องกันการนำทางเป็นคนละส่วนกัน ผลลัพธ์
startหรือtabsที่สำเร็จไม่ได้หมายความว่าเป้าหมายopenหรือnavigateในภายหลังจะได้รับอนุญาต
คำแนะนำด้านความปลอดภัย:
- อย่าผ่อนปรนนโยบาย SSRF ของเบราว์เซอร์โดยค่าเริ่มต้น
- ควรใช้ข้อยกเว้นโฮสต์แบบเฉพาะเจาะจง เช่น
hostnameAllowlistหรือallowedHostnamesแทนการอนุญาตการเข้าถึงเครือข่ายส่วนตัวแบบกว้าง - ใช้
dangerouslyAllowPrivateNetwork: trueเฉพาะในสภาพแวดล้อมที่เชื่อถือโดยเจตนา ซึ่งจำเป็นต้องเข้าถึงเครือข่ายส่วนตัวผ่านเบราว์เซอร์และผ่านการตรวจสอบแล้ว
เครื่องมือเอเจนต์ + วิธีการทำงานของการควบคุม
เอเจนต์ได้รับ เครื่องมือเดียว สำหรับการทำงานอัตโนมัติของเบราว์เซอร์:
browser- ตรวจสอบ/สถานะ/เริ่ม/หยุด/แท็บ/เปิด/โฟกัส/ปิด/สแนปช็อต/ภาพหน้าจอ/นำทาง/ดำเนินการ
การแมปการทำงาน:
browser snapshotส่งคืนโครงสร้าง UI ที่คงที่ (AI หรือ ARIA)browser actใช้ ID ของrefจากสแนปช็อตเพื่อคลิก/พิมพ์/ลาก/เลือกbrowser screenshotจับภาพพิกเซล (ทั้งหน้า องค์ประกอบ หรือการอ้างอิงที่มีป้ายกำกับ)browser doctorตรวจสอบความพร้อมของ Gateway, Plugin, โปรไฟล์, เบราว์เซอร์ และแท็บbrowserรองรับ:profileเพื่อเลือกโปรไฟล์เบราว์เซอร์ที่มีชื่อ (openclaw, chrome หรือ CDP ระยะไกล)target(sandbox|host|node) เพื่อเลือกตำแหน่งที่เบราว์เซอร์ทำงานอยู่- ในเซสชันแบบแซนด์บ็อกซ์
target: "host"ต้องใช้agents.defaults.sandbox.browser.allowHostControl=true - หากละเว้น
target: เซสชันแบบแซนด์บ็อกซ์จะใช้sandboxเป็นค่าเริ่มต้น ส่วนเซสชันที่ไม่ใช่แซนด์บ็อกซ์จะใช้hostเป็นค่าเริ่มต้น - หากมี Node ที่รองรับเบราว์เซอร์เชื่อมต่ออยู่ เครื่องมืออาจกำหนดเส้นทางไปยัง Node นั้นโดยอัตโนมัติ เว้นแต่จะตรึง
target="host"หรือtarget="node"
วิธีนี้ช่วยให้เอเจนต์ทำงานได้อย่างกำหนดแน่นอนและหลีกเลี่ยงตัวเลือกองค์ประกอบที่เปราะบาง
เนื้อหาที่เกี่ยวข้อง
- ภาพรวมเครื่องมือ - เครื่องมือทั้งหมดที่เอเจนต์สามารถใช้ได้
- การทำงานแบบแซนด์บ็อกซ์ - การควบคุมเบราว์เซอร์ในสภาพแวดล้อมแบบแซนด์บ็อกซ์
- ความปลอดภัย - ความเสี่ยงและการเสริมความปลอดภัยสำหรับการควบคุมเบราว์เซอร์