Tools
مرورگر (مدیریتشده توسط OpenClaw)
OpenClaw میتواند یک پروفایل اختصاصی Chrome/Brave/Edge/Chromium اجرا کند که عامل آن را کنترل میکند. این پروفایل از طریق یک سرویس کنترل محلی کوچک درون Gateway (فقط loopback) اجرا میشود و از مرورگر شخصی شما جدا است.
- آن را یک مرورگر جداگانه و مخصوص عامل در نظر بگیرید. پروفایل
openclawهرگز با پروفایل مرورگر شخصی شما تماس ندارد. - عامل در این محیط جداشده زبانهها را باز میکند، صفحهها را میخواند، کلیک میکند و متن وارد میکند.
- در عوض، پروفایل داخلی
userاز طریق Chrome DevTools MCP به نشست واقعی و واردشده شما در Chrome متصل میشود.
آنچه دریافت میکنید
- یک پروفایل مرورگر جداگانه با نام openclaw (با رنگ تأکیدی نارنجی بهصورت پیشفرض).
- کنترل قطعی زبانهها (فهرستکردن/بازکردن/متمرکزکردن/بستن).
- کنشهای عامل (کلیک/تایپ/کشیدن/انتخاب)، عکسهای لحظهای، اسکرینشاتها و PDFها.
- پروفایلهای مبتنی بر Playwright، پیمایشهای مستقیم به پیوستها را در پوشه دانلودهای مدیریتشده ذخیره میکنند و پس از اعتبارسنجی خطمشی URL نهایی، فراداده
{ url, suggestedFilename, path }را بازمیگردانند. - کنشهای عامل مبتنی بر Playwright، هنگامی که کنش بلافاصله یک یا چند دانلود را آغاز کند، یک آرایه
downloadsبا همان فراداده مدیریتشده بازمیگردانند. - یک skill همراه
browser-automationکه هنگام فعالبودن Plugin مرورگر، چرخه بازیابی عکس لحظهای، زبانه پایدار، ارجاع منقضی و مانع نیازمند اقدام دستی را به عاملها آموزش میدهد. - پشتیبانی اختیاری از چند پروفایل (
openclaw،work،remote، ...).
این مرورگر، مرورگر روزمره شما نیست. این یک محیط امن و جداشده برای خودکارسازی و تأیید توسط عامل است.
در macOS میتوانید کوکیها را بهصراحت از یک پروفایل سیستمی خانواده Chrome به یک پروفایل مدیریتشده جداگانه کپی کنید. مرورگر مدیریتشده همچنان از پوشه داده کاربر خودش استفاده میکند؛ فقط کوکیهای انتخابشده کپی میشوند و حافظه محلی و 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 را شامل نمیشود. برای اینکه عامل یا یک
عامل فرعی ایجادشده بتواند از خودکارسازی مرورگر استفاده کند، مرورگر را در مرحله
پروفایل اضافه کنید:
{ tools: { profile: "coding", alsoAllow: ["browser"], },}برای یک عامل منفرد، از agents.entries.*.tools.alsoAllow: ["browser"] استفاده کنید.
tools.subagents.tools.allow: ["browser"] بهتنهایی کافی نیست، زیرا خطمشی عامل فرعی
پس از پالایش پروفایل اعمال میشود.
Plugin مرورگر با دو سطح راهنمای عامل ارائه میشود:
- شرح ابزار
browserقرارداد فشرده و همیشهفعال را دربر دارد: پروفایل درست را انتخاب کنید، ارجاعها را در همان زبانه نگه دارید، ازtabId/برچسبها برای هدفگیری زبانه استفاده کنید و برای کار چندمرحلهای، skill مرورگر را بارگذاری کنید. - skill همراه
browser-automationچرخه عملیاتی طولانیتر را دربر دارد: ابتدا وضعیت/زبانهها را بررسی کنید، زبانههای کار را برچسب بزنید، پیش از اقدام عکس لحظهای بگیرید، پس از تغییرات رابط کاربری دوباره عکس لحظهای بگیرید، ارجاعهای منقضی را یکبار بازیابی کنید و ورود/2FA/captcha یا موانع دوربین/میکروفون را بهجای حدسزدن، بهعنوان اقدام دستی گزارش دهید.
هنگامی که Plugin فعال باشد، skillهای همراه آن در فهرست skillهای در دسترس عامل نمایش داده میشوند. دستورالعملهای کامل skill در صورت نیاز بارگذاری میشوند؛ بنابراین نوبتهای عادی هزینه کامل توکن را متحمل نمیشوند.
نبودن فرمان یا ابزار مرورگر
اگر پس از ارتقا، openclaw browser ناشناخته است، browser.request وجود ندارد، یا عامل ابزار مرورگر را در دسترس نمیداند، علت معمول یک فهرست plugins.allow است که browser را دربر ندارد و هیچ بلوک پیکربندی ریشه browser نیز وجود ندارد. آن را اضافه کنید:
{ plugins: { allow: ["telegram", "browser"], },}یک بلوک صریح ریشه browser (هر کلیدی زیر browser، مانند
browser.enabled=true یا browser.profiles.<name>) حتی با وجود plugins.allow محدودکننده،
Plugin همراه مرورگر را فعال میکند و با رفتار پیکربندی کانال همراه مطابقت دارد. plugins.entries.browser.enabled=true و
tools.alsoAllow: ["browser"] بهتنهایی جای عضویت در فهرست مجاز را
نمیگیرند. حذف کامل plugins.allow نیز حالت پیشفرض را بازمیگرداند.
پروفایلها: openclaw، user، chrome
openclaw: مرورگر مدیریتشده و جداشده (بدون نیاز به افزونه).user: پروفایل داخلی اتصال Chrome DevTools MCP برای نشست واقعی و واردشده Chrome شما. نخستین باری که OpenClaw متصل میشود، Chrome اعلان مسدودکننده «Allow remote debugging?» را نشان میدهد؛ بنابراین باید کسی پشت رایانه باشد.chrome: پروفایل داخلی افزونه Chrome برای نشست واقعی و واردشده Chrome شما. حتی بدون حضور کسی پشت میز از طریق تلفن کار میکند، زیرا بهجای درگاه اشکالزدایی از راه دور، زبانهها را از طریق افزونه مرورگر OpenClaw کنترل میکند؛ بنابراین اعلان «Allow remote debugging?» وجود ندارد.
برای فراخوانی ابزار مرورگر توسط عامل:
- پیشفرض: از مرورگر جداشده
openclawاستفاده کنید. - وقتی نشستهای واردشده موجود اهمیت دارند و کاربر از رایانه دور است
(Telegram، WhatsApp و غیره)،
profile="chrome"(افزونه) را ترجیح دهید. - وقتی نشستهای واردشده موجود اهمیت دارند و کاربر پشت رایانه است تا
اعلان اتصال را تأیید کند،
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
محلیِ فرایند هستند؛ بنابراین رکوردهای سرد نشست موجود، بهجای بهخطرانداختن یک
جاروب بیکاری بر فعالیتی که پس از راهاندازی مجدد نمیتوان آن را با اطمینان منتسب کرد،
منتظر پاکسازی چرخه عمر میمانند. این مسیر پایدار میتواند پروفایلهای مدیریتشده OpenClaw،
پروفایلهای عادی CDP راه دور و پروفایلهای نشست موجود با cdpUrl صریح را
پوشش دهد، مشروط بر اینکه OpenClaw بتواند هم هدف بومی و هم هویت پایدار مرورگر را
تشخیص دهد. پیش از بستن یک رکورد پایدار، OpenClaw بررسی میکند که پروفایل پیکربندیشده
و نمونه مرورگر همچنان مطابقت دارند.
--autoConnect مربوط به Chrome MCP، نقاط پایانی 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 نتیجه عادی تصویر را نگه میدارد تا مدل اصلی بتواند نماگرفت را مستقیماً بخواند.
درگاهها و دسترسیپذیری
- سرویس کنترل روی loopback و در درگاهی مشتقشده از
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، این سامانه در حد توان پیشبینی شبکه را غیرفعال میکند تا پیشاتصال حدسی مشاهدهشده 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 برای نقطه پایانی دقیق loopback راهاندازیشده، پروکسی شبکه مدیریتشده را دور میزنند؛ بنابراین وقتی پروکسی اپراتور خروجی loopback را مسدود میکند،
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 راهدور و sandbox جدا باقی میمانند و از طریق این مسیر میزبان مدیریتشده بررسی نمیشوند. - Chrome مدیریتشده بدون رابط گرافیکی همچنان از پیشفرض محافظهکارانه
--disable-gpuاستفاده میکند. عیبیابیها شتابدهی را فعال نمیکنند، تنظیم سراسری شتابدهی اضافه نمیکنند و به مرورگر sandbox دسترسی دستگاه نمیدهند. executablePathرا میتوان بهصورت سراسری یا برای هر پروفایل مدیریتشده محلی تنظیم کرد. مقادیر هر پروفایل،browser.executablePathرا بازنویسی میکنند؛ بنابراین پروفایلهای مدیریتشده مختلف میتوانند مرورگرهای مبتنی بر Chromium متفاوتی را راهاندازی کنند. هر دو فرم،~را برای پوشه خانگی سیستمعامل میپذیرند.color(در سطح بالا و هر پروفایل) رابط کاربری مرورگر را رنگآمیزی میکند تا بتوانید ببینید کدام پروفایل فعال است.- پروفایل پیشفرض
openclawاست (مستقل مدیریتشده). برای استفاده از مرورگر کاربرِ واردشده،defaultProfile: "user"را انتخاب کنید. - ترتیب تشخیص خودکار: اگر مرورگر پیشفرض سیستم مبتنی بر Chromium باشد، همان؛ در غیر این صورت Chrome، Brave، Edge، Chromium، Chrome Canary.
driver: "existing-session"بهجای CDP خام از Chrome DevTools MCP استفاده میکند. میتواند از طریق اتصال خودکار Chrome MCP، یا وقتی از قبل یک نقطه پایانی DevTools برای مرورگر در حال اجرا دارید از طریقcdpUrl، متصل شود.driver: "extension"مرورگر Chrome واردشده شما را از طریق افزونه Chrome متعلق به OpenClaw کنترل میکند. رله مالک نقطه پایانی loopback خود است؛ بنابراین این پروفایلهاcdpUrlرا نمیپذیرند. این تنها حالت مرورگر واردشدهای است که بدون حضور کسی پای رایانه کار میکند.- وقتی یک پروفایل نشست موجود باید به پروفایل کاربری غیراستاندارد Chromium (Brave، Edge و غیره) متصل شود،
browser.profiles.<name>.userDataDirرا تنظیم کنید. این مسیر همچنین~را برای پوشه خانگی سیستمعامل میپذیرد.
استفاده از 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 سرویس کنترل loopback را راهاندازی میکند و میتواند یک مرورگر محلی را اجرا کند.
- کنترل راهدور (میزبان Node): یک میزبان Node را روی دستگاهی که مرورگر دارد اجرا کنید؛ Gateway عملیات مرورگر را از طریق آن پروکسی میکند.
- CDP راهدور: مقدار
browser.profiles.<name>.cdpUrl(یاbrowser.cdpUrl) را تنظیم کنید تا به یک مرورگر راهدور مبتنی بر Chromium متصل شوید. در این حالت، OpenClaw مرورگر محلی را راهاندازی نمیکند. - برای سرویسهای CDP مدیریتشده خارجی روی loopback (برای مثال Browserless در
Docker که روی
127.0.0.1منتشر شده است)،attachOnly: trueرا نیز تنظیم کنید. CDP روی loopback بدونattachOnlyبهعنوان پروفایل مرورگر محلی مدیریتشده توسط OpenClaw در نظر گرفته میشود. headlessفقط بر پروفایلهای مدیریتشده محلی که OpenClaw راهاندازی میکند اثر دارد. این گزینه مرورگرهای نشست موجود یا CDP راهدور را بازراهاندازی یا تغییر نمیدهد.executablePathاز همان قاعده پروفایل مدیریتشده محلی پیروی میکند. تغییر آن در یک پروفایل مدیریتشده محلی در حال اجرا، آن پروفایل را برای بازراهاندازی/همگامسازی علامتگذاری میکند تا راهاندازی بعدی از فایل اجرایی جدید استفاده کند.
رفتار توقف بر اساس حالت پروفایل متفاوت است:
- پروفایلهای مدیریتشده محلی:
openclaw browser stopفرایند مرورگری را که OpenClaw راهاندازی کرده است متوقف میکند - پروفایلهای صرفاً اتصال و CDP راهدور:
openclaw browser stopنشست کنترل فعال را میبندد و بازنویسیهای شبیهسازی Playwright/CDP (ناحیه دید، طرح رنگ، منطقه زبانی، منطقه زمانی، حالت آفلاین و وضعیتهای مشابه) را آزاد میکند، حتی اگر OpenClaw هیچ فرایند مرورگری را راهاندازی نکرده باشد
نشانیهای CDP راهدور میتوانند شامل احراز هویت باشند:
- توکنهای پرسوجو (برای مثال،
https://provider.example?token=<token>) - احراز هویت HTTP Basic (برای مثال،
https://user:pass@provider.example)
OpenClaw هنگام فراخوانی نقاط پایانی /json/* و هنگام اتصال
به WebSocket مربوط به CDP، احراز هویت را حفظ میکند. برای توکنها، بهجای ثبت آنها در فایلهای پیکربندی،
متغیرهای محیطی یا مدیرهای اسرار را ترجیح دهید.
پراکسی مرورگر Node (پیشفرض بدون نیاز به پیکربندی)
اگر روی دستگاهی که مرورگرتان در آن قرار دارد یک میزبان Node اجرا کنید، OpenClaw میتواند فراخوانیهای ابزار مرورگر را بدون هیچ پیکربندی اضافی مرورگر، بهطور خودکار به آن Node هدایت کند. این مسیر پیشفرض برای Gatewayهای راه دور است.
نکات:
- میزبان Node، سرور محلی کنترل مرورگر خود را از طریق یک فرمان پراکسی ارائه میکند.
- پروفایلها از پیکربندی
browser.profilesخود Node میآیند (همانند حالت محلی). - فرمان پراکسی، صرفنظر از
allowProfiles، هرگز تغییرات پایدار پروفایل (create-profile،delete-profile،reset-profile) را مجاز نمیکند؛ این تغییرات را مستقیماً روی Node انجام دهید. nodeHost.browserProxy.allowProfilesاختیاری است. برای رفتار قدیمی/پیشفرض، آن را خالی بگذارید: همه پروفایلهای پیکربندیشده از طریق پراکسی قابل دسترسی باقی میمانند.- اگر
nodeHost.browserProxy.allowProfilesرا تنظیم کنید، OpenClaw آن را مرز حداقل سطح دسترسی در نظر میگیرد که نام پروفایلهای قابل هدفگیری توسط پراکسی را محدود میکند. - اگر آن را نمیخواهید، غیرفعالش کنید:
- روی Node:
nodeHost.browserProxy.enabled=false - روی Gateway:
gateway.nodes.browser.mode="off"(همچنین برای انتخاب یک Node مرورگر متصل،"auto"و برای الزامیکردن پارامتر صریح Node،"manual"را میپذیرد)
- روی Node:
Browserless (CDP راه دور میزبانیشده)
Browserless یک سرویس میزبانیشده Chromium است که نشانیهای اتصال CDP را از طریق HTTPS و WebSocket ارائه میکند. OpenClaw میتواند از هر دو شکل استفاده کند، اما برای یک پروفایل مرورگر راه دور، سادهترین گزینه نشانی مستقیم 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 خود جایگزین کنید.- نقطه پایانی منطقهای منطبق با حساب Browserless خود را انتخاب کنید (مستندات آنها را ببینید).
- اگر Browserless یک نشانی پایه HTTPS به شما میدهد، میتوانید آن را برای
اتصال مستقیم CDP به
wss://تبدیل کنید یا نشانی 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", }, }, },}نشانی موجود در browser.profiles.browserless.cdpUrl باید از فرایند
OpenClaw قابل دسترسی باشد. Browserless همچنین باید یک نقطه پایانی منطبق و قابل دسترسی را اعلام کند؛
مقدار EXTERNAL در Browserless را روی همان پایه WebSocket عمومی نسبت به OpenClaw تنظیم کنید،
مانند ws://127.0.0.1:3000، ws://browserless:3000، یا یک نشانی پایدار در شبکه خصوصی
Docker. اگر /json/version مقدار webSocketDebuggerUrl را بازگرداند که به
نشانی غیرقابل دسترسی برای OpenClaw اشاره میکند، ممکن است CDP HTTP سالم به نظر برسد، درحالیکه
پیوست WebSocket همچنان ناموفق است.
برای یک پروفایل Browserless حلقهبازگشت، attachOnly را تنظیمنشده رها نکنید. بدون
attachOnly، OpenClaw پورت حلقهبازگشت را یک پروفایل مرورگر محلی مدیریتشده
در نظر میگیرد و ممکن است گزارش دهد پورت در حال استفاده است، اما در مالکیت OpenClaw نیست.
ارائهدهندگان CDP با WebSocket مستقیم
برخی سرویسهای مرورگر میزبانیشده، بهجای
کشف استاندارد CDP مبتنی بر HTTP (/json/version)، یک نقطه پایانی WebSocket مستقیم ارائه میکنند. OpenClaw سه
شکل نشانی CDP را میپذیرد و راهبرد اتصال مناسب را بهطور خودکار انتخاب میکند:
- کشف HTTP(S) -
http://host[:port]یاhttps://host[:port]. OpenClaw برای کشف نشانی اشکالزدایی WebSocket،/json/versionرا فراخوانی میکند و سپس متصل میشود. هیچ جایگزین 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 در ریشه بدون مسیر بازمیگردد. اگر نقطه پایانی WebSocket اعلامشده دستدهی CDP را رد کند، اما ریشه بدون مسیر پیکربندیشده آن را بپذیرد، OpenClaw به آن ریشه نیز بازمیگردد. این کار اجازه میدهد یکws://بدون مسیر که به Chrome محلی اشاره میکند همچنان متصل شود، زیرا Chrome ارتقای WebSocket را فقط در مسیر مشخص هر هدف از/json/versionمیپذیرد، درحالیکه ارائهدهندگان میزبانیشده همچنان میتوانند از نقطه پایانی WebSocket ریشه خود استفاده کنند، زمانی که نقطه پایانی کشف آنها نشانی کوتاهعمری را اعلام میکند که برای CDP در Playwright مناسب نیست.
openclaw browser doctor از همان منطق ابتدا کشف و سپس جایگزینی WebSocket
مانند پیوست زمان اجرا استفاده میکند؛ بنابراین نشانی ریشه بدون مسیری که با موفقیت متصل میشود،
در عیبیابی بهعنوان غیرقابل دسترسی گزارش نمیشود.
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 بهطور خودکار یک نشست مرورگر ایجاد میکند؛ بنابراین به مرحله ایجاد دستی نشست نیازی نیست.
- برای محدودیتهای فعلی سطح رایگان و طرحهای پولی، قیمتگذاری را ببینید.
- برای مرجع کامل API، راهنماهای SDK و مثالهای یکپارچهسازی، مستندات Browserbase را ببینید.
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، نشست از بین میرود.
- برای محدودیتهای فعلی سطح رایگان و طرحهای پولی، قیمتگذاری را ببینید.
- برای مرجع کامل API، راهنماهای SDK و مثالهای یکپارچهسازی، مستندات Notte را ببینید.
امنیت
نکات کلیدی:
- کنترل مرورگر فقط روی حلقهبازگشت در دسترس است؛ دسترسی از طریق احراز هویت 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 راه دور:
- در صورت امکان، نقاط پایانی رمزگذاریشده (HTTPS یا WSS) و توکنهای کوتاهعمر را ترجیح دهید.
- از قراردادن مستقیم توکنهای بلندمدت در فایلهای پیکربندی خودداری کنید.
- Gateway و همه میزبانهای Node را در یک شبکه خصوصی (Tailscale) نگه دارید؛ از دسترسی عمومی اجتناب کنید.
- نشانیها/توکنهای CDP راه دور را راز در نظر بگیرید؛ متغیرهای محیطی یا یک مدیر اسرار را ترجیح دهید.
پروفایلها (چندمرورگری)
OpenClaw از چند پروفایل نامگذاریشده (پیکربندیهای مسیریابی) پشتیبانی میکند. پروفایلها میتوانند از این نوعها باشند:
- مدیریتشده توسط OpenClaw: یک نمونه اختصاصی مرورگر مبتنی بر Chromium با پوشه داده کاربر و پورت CDP مخصوص خود
- راه دور: یک نشانی صریح CDP (مرورگر مبتنی بر Chromium که در جای دیگری اجرا میشود)
- نشست موجود: پروفایل موجود Chrome شما از طریق اتصال خودکار Chrome DevTools MCP
پیشفرضها:
- پروفایل
openclawدر صورت نبودن، بهطور خودکار ایجاد میشود. - پروفایل
userبرای پیوست به نشست موجود Chrome MCP داخلی است. - پروفایلهای نشست موجود، بهجز
user، نیازمند فعالسازی صریح هستند؛ آنها را با--driver existing-sessionایجاد کنید. - پورتهای محلی CDP بهطور پیشفرض از محدوده 18800-18899 تخصیص مییابند.
- حذف یک پروفایل، پوشه داده محلی آن را به سطل زباله منتقل میکند.
همه نقاط پایانی کنترل، ?profile=<name> را میپذیرند؛ CLI از --browser-profile استفاده میکند.
نشست موجود از طریق Chrome DevTools MCP
OpenClaw همچنین میتواند از طریق سرور رسمی Chrome DevTools MCP به یک پروفایل در حال اجرای مرورگر مبتنی بر Chromium متصل شود. در این حالت، برگهها و وضعیت ورود که از قبل در آن پروفایل مرورگر باز هستند، دوباره استفاده میشوند.
منابع رسمی پیشزمینه و راهاندازی:
- Chrome for Developers: استفاده از Chrome DevTools MCP با نشست مرورگر خود
- README مربوط به Chrome DevTools MCP
پروفایل داخلی: user. اگر نام، رنگ یا پوشه داده مرورگر متفاوتی
میخواهید، پروفایل سفارشی نشست موجود خود را ایجاد کنید.
بهطور پیشفرض، پروفایل داخلی user از اتصال خودکار Chrome MCP استفاده میکند که
پروفایل محلی پیشفرض Google Chrome را هدف میگیرد. برای Brave،
Edge، Chromium یا پروفایل غیراصلی Chrome از userDataDir استفاده کنید. ~ به پوشه خانه
سیستمعامل شما بسط مییابد:
{ 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-sessionرا نمایش میدهدstatus،transport: chrome-mcpرا نمایش میدهدstatus،running: trueرا نمایش میدهدtabsزبانههای از پیش بازشدهٔ مرورگر را فهرست میکندsnapshotارجاعهای زبانهٔ زندهٔ انتخابشده را برمیگرداند
اگر پیوستکردن کار نمیکند، این موارد را بررسی کنید:
- نسخهٔ مرورگر هدف مبتنی بر 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 و ارجاعهای اسنپشات به یک زیرفرایند MCP محدود میشوند. پس از
راهاندازی مجدد آن فرایند، دوباره
browser tabsرا اجرا کنید، پیش از کار مختص هدف صراحتاً یک هدف تازه انتخاب کنید و پیش از استفاده از ارجاعها اسنپشات جدیدی بگیرید. هر ارجاع فقط برای هدف خود و جدیدترین اسنپشات معتبر است. نامهای مستعار قدیمی به زبانهٔ جایگزین منتقل نمیشوند، حتی اگر URL آن یکسان باشد. - Chrome DevTools MCP در حال حاضر ابزارهای صفحه را بر اساس یک شناسهٔ عددی صفحه و محلی به فرایند مسیریابی میکند. دستگیرههای محدود به فرایند از استفادهٔ مجدد میان جایگزینی زیرفرایندها جلوگیری میکنند، اما جایگزینی زمینهٔ مرورگر درون همان فرایند میان دو فراخوانی متوالی ابزار همچنان میتواند یک کنش را به هدف دیگری هدایت کند. مسیریابی کاملاً اتمی به پشتیبانی بالادستی ابزار صفحه از شناسههای پایدار هدف نیاز دارد.
راهاندازی سفارشی Chrome MCP
وقتی جریان پیشفرض
npx chrome-devtools-mcp@latest مطلوب نیست (میزبانهای آفلاین،
نسخههای سنجاقشده، فایلهای اجرایی عرضهشده همراه محصول)، سرور Chrome DevTools MCP راهاندازیشده را برای هر پروفایل بازنویسی کنید:
| فیلد | کاری که انجام میدهد |
|---|---|
mcpCommand |
فایل اجراییای که بهجای npx راهاندازی میشود. همانگونه که هست برطرف میشود؛ مسیرهای مطلق رعایت میشوند. |
mcpArgs |
آرایهٔ آرگومانهایی که عیناً به mcpCommand ارسال میشود. جایگزین آرگومانهای پیشفرض chrome-devtools-mcp@latest --autoConnect میشود. |
وقتی cdpUrl روی یک پروفایل نشست موجود تنظیم شده باشد، OpenClaw از
--autoConnect صرفنظر میکند و نقطهٔ پایانی را بهطور خودکار به Chrome MCP میفرستد:
http(s)://...←--browserUrl <url>(نقطهٔ پایانی کشف HTTP در DevTools).ws(s)://...←--wsEndpoint <url>(WebSocket مستقیم CDP).
پرچمهای نقطهٔ پایانی و userDataDir را نمیتوان ترکیب کرد: وقتی cdpUrl تنظیم شده باشد،
userDataDir برای راهاندازی Chrome MCP نادیده گرفته میشود، زیرا Chrome MCP بهجای بازکردن
دایرکتوری پروفایل، به مرورگر در حال اجرا پشت نقطهٔ پایانی پیوست میشود.
محدودیتهای قابلیت نشست موجود
در مقایسه با پروفایل مدیریتشدهٔ openclaw، درایورهای نشست موجود محدودتر هستند:
- نماگرفتها - ثبت صفحه و ثبت عنصر با
--refکار میکند؛ انتخابگرهای CSS از نوع--elementکار نمیکنند. برای نماگرفت صفحه یا عنصر مبتنی بر ارجاع، Playwright لازم نیست. (--full-pageدر هیچ پروفایلی، نه فقط نشست موجود، نمیتواند با--refیا--elementترکیب شود.) - کنشها -
click،type،hover،scrollIntoView،dragوselectبه ارجاعهای اسنپشات نیاز دارند (بدون انتخابگر CSS).click-coordsروی مختصات قابلمشاهدهٔ ناحیهٔ دید کلیک میکند و به ارجاع اسنپشات نیاز ندارد.clickفقط با دکمهٔ چپ کار میکند (بدون بازنویسی دکمه یا کلیدهای تغییردهنده).typeازslowly=trueپشتیبانی نمیکند؛ ازfillیاpressاستفاده کنید.pressازdelayMsپشتیبانی نمیکند.type،hover،scrollIntoView،drag،selectوfillاز بازنویسیهایtimeoutMsبرای هر فراخوانی پشتیبانی نمیکنند؛evaluateپشتیبانی میکند.selectیک مقدار واحد میپذیرد.batchپشتیبانی نمیشود؛ کنشها را جداگانه ارسال کنید. - انتظار / بارگذاری / گفتوگو -
wait --urlاز الگوهای دقیق، زیررشتهای و glob پشتیبانی میکند (همانند حالت مدیریتشده)؛wait --load networkidleدر پروفایلهای نشست موجود پشتیبانی نمیشود (در پروفایلهای مدیریتشده و CDP خام/راهدور کار میکند). قلابهای بارگذاری بهrefیاinputRefنیاز دارند، هر بار یک فایل، بدونelementاز نوع CSS. قلابهای گفتوگو از بازنویسی مهلت زمانی یا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 محدود به loopback
کوچک بههمراه یک CLI متناظر openclaw browser ارائه میکند (اسنپشاتها، ارجاعها، قابلیتهای تقویتشدهٔ انتظار،
خروجی JSON، جریانهای کاری اشکالزدایی). برای مرجع کامل، به
API کنترل مرورگر مراجعه کنید.
عیبیابی
برای مشکلات مختص Linux (بهویژه Chromium مبتنی بر snap)، به عیبیابی مرورگر مراجعه کنید.
برای پیکربندیهای میزبان تفکیکشدهٔ WSL2 Gateway و Windows Chrome، به عیبیابی WSL2 + Windows + CDP راهدور Chrome مراجعه کنید.
شکست راهاندازی 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 روی loopback بدون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همگی موفق شدند، مسیر پایهٔ کنترل مرورگر مدیریتشده سالم است.
جزئیات مهم رفتار:
- پیکربندی مرورگر، حتی اگر
browser.ssrfPolicyرا پیکربندی نکنید، بهطور پیشفرض از یک شیء سیاست SSRF با حالت شکستِ بسته استفاده میکند. - برای پروفایل مدیریتشدهٔ محلی و loopback با نام
openclaw، بررسیهای سلامت CDP عمداً اعمال دسترسیپذیری SSRF مرورگر را برای صفحهٔ کنترل محلی خود OpenClaw نادیده میگیرند. - محافظت ناوبری جداگانه است. موفقیت نتیجهٔ
startیاtabsبه این معنا نیست که یک هدف بعدیopenیاnavigateمجاز است.
راهنمای امنیتی:
- سیاست SSRF مرورگر را بهطور پیشفرض کاهش ندهید.
- استثناهای محدود میزبان مانند
hostnameAllowlistیاallowedHostnamesرا به دسترسی گسترده به شبکهٔ خصوصی ترجیح دهید. - از
dangerouslyAllowPrivateNetwork: trueفقط در محیطهای عمداً مورداعتماد استفاده کنید که دسترسی مرورگر به شبکهٔ خصوصی در آنها لازم و بازبینی شده است.
ابزارهای عامل + نحوهٔ کار کنترل
عامل برای خودکارسازی مرورگر یک ابزار دریافت میکند:
browser- doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
نگاشت آن:
browser snapshotیک درخت پایدار رابط کاربری (AI یا ARIA) برمیگرداند.browser actاز شناسههای اسنپشاتrefبرای کلیک/تایپ/کشیدن/انتخاب استفاده میکند.browser screenshotپیکسلها را ثبت میکند (کل صفحه، عنصر یا ارجاعهای برچسبدار).browser doctorآمادهبودن Gateway، افزونه، پروفایل، مرورگر و زبانه را بررسی میکند.browserموارد زیر را میپذیرد:profileبرای انتخاب یک پروفایل نامگذاریشده مرورگر (openclaw، chrome یا CDP راهدور).target(sandbox|host|node) برای انتخاب محل اجرای مرورگر.- در نشستهای سندباکسشده،
target: "host"بهagents.defaults.sandbox.browser.allowHostControl=trueنیاز دارد. - اگر
targetحذف شده باشد: نشستهای سندباکسشده بهطور پیشفرض ازsandboxو نشستهای غیرسندباکسشده بهطور پیشفرض ازhostاستفاده میکنند. - اگر یک Node دارای قابلیت مرورگر متصل باشد، ابزار ممکن است بهطور خودکار به آن مسیریابی کند، مگر اینکه
target="host"یاtarget="node"را ثابت کنید.
این کار رفتار عامل را قطعی نگه میدارد و از انتخابگرهای شکننده جلوگیری میکند.
مرتبط
- نمای کلی ابزارها - همه ابزارهای عاملِ دردسترس
- سندباکسسازی - کنترل مرورگر در محیطهای سندباکسشده
- امنیت - خطرات کنترل مرورگر و مقاومسازی