المتصفح (بإدارة openclaw)
يمكن لـ OpenClaw تشغيل ملف تعريف مخصص لـ Chrome/Brave/Edge/Chromium يتحكم فيه الوكيل. وهو معزول عن متصفحك الشخصي ويُدار من خلال خدمة تحكم محلية صغيرة داخل Gateway (على local loopback فقط). عرض مبسط للمبتدئين:- فكّر فيه على أنه متصفح منفصل مخصص للوكيل فقط.
- لا يلمس ملف تعريف
openclawملف تعريف متصفحك الشخصي. - يمكن للوكيل فتح علامات التبويب وقراءة الصفحات والنقر والكتابة ضمن مسار آمن.
- يتصل ملف التعريف المدمج
userبجلسة Chrome الحقيقية المسجّل دخولك فيها عبر Chrome MCP.
ما الذي ستحصل عليه
- ملف تعريف متصفح منفصل باسم openclaw (بتمييز برتقالي افتراضيًا).
- تحكم حتمي في علامات التبويب (عرض/فتح/تركيز/إغلاق).
- إجراءات الوكيل (نقر/كتابة/سحب/تحديد)، ولقطات snapshot، ولقطات شاشة، وPDF.
- دعم اختياري لعدة ملفات تعريف (
openclawوworkوremoteو…).
البدء السريع
openclaw browser مفقودًا بالكامل، أو قال الوكيل إن أداة المتصفح
غير متاحة، فانتقل إلى أمر المتصفح أو الأداة مفقود.
التحكم عبر plugin
أصبحت أداةbrowser الافتراضية الآن plugin مجمّعًا يُشحن ممكّنًا
افتراضيًا. وهذا يعني أنه يمكنك تعطيله أو استبداله من دون إزالة بقية
نظام plugin في OpenClaw:
browser نفسه. تتطلب تجربة المتصفح الافتراضية كليهما:
- ألا يكون
plugins.entries.browser.enabledمعطّلًا - وأن تكون
browser.enabled=true
openclaw browser)،
وطريقة gateway (browser.request)، وأداة الوكيل، وخدمة التحكم الافتراضية بالمتصفح.
وستبقى تهيئة browser.* كما هي ليُعاد استخدامها من قِبل plugin
بديل.
يمتلك plugin المتصفح المجمّع الآن أيضًا تنفيذ runtime الخاص بالمتصفح.
ويحتفظ core فقط بمساعدات Plugin SDK المشتركة بالإضافة إلى إعادة تصدير
للتوافق مع مسارات الاستيراد الداخلية الأقدم. عمليًا، تؤدي إزالة أو استبدال
حزمة plugin المتصفح إلى إزالة مجموعة ميزات المتصفح بدلًا من ترك runtime
ثانٍ مملوكًا لـ core في الخلف.
لا تزال تغييرات تهيئة المتصفح تتطلب إعادة تشغيل Gateway حتى يتمكن plugin المجمّع
من إعادة تسجيل خدمة المتصفح بالإعدادات الجديدة.
أمر المتصفح أو الأداة مفقود
إذا أصبحopenclaw browser فجأة أمرًا غير معروف بعد الترقية، أو
أبلغ الوكيل أن أداة المتصفح مفقودة، فالسبب الأكثر شيوعًا هو وجود قائمة
plugins.allow مقيّدة لا تتضمن browser.
مثال على تهيئة معطلة:
browser إلى قائمة السماح الخاصة بـ plugin:
- لا تكفي
browser.enabled=trueوحدها عند تعيينplugins.allow. - لا تكفي
plugins.entries.browser.enabled=trueوحدها أيضًا عند تعيينplugins.allow. - لا تقوم
tools.alsoAllow: ["browser"]بتحميل plugin المتصفح المجمّع. بل تضبط سياسة الأدوات فقط بعد تحميل plugin بالفعل. - إذا لم تكن بحاجة إلى قائمة سماح مقيّدة لـ plugin، فإن إزالة
plugins.allowتعيد أيضًا سلوك المتصفح المجمّع الافتراضي.
openclaw browserأمر غير معروف.browser.requestمفقود.- يبلّغ الوكيل أن أداة المتصفح غير متاحة أو مفقودة.
ملفات التعريف: openclaw مقابل user
openclaw: متصفح مُدار ومعزول (لا يحتاج إلى extension).user: ملف تعريف مدمج للاتصال بجلسة Chrome MCP الخاصة بجلسة Chrome الحقيقية المسجّل دخولك فيها.
- الافتراضي: استخدام متصفح
openclawالمعزول. - يُفضَّل
profile="user"عندما تكون جلسات تسجيل الدخول الحالية مهمة ويكون المستخدم أمام الكمبيوتر للنقر/الموافقة على أي مطالبة اتصال. profileهو التجاوز الصريح عندما تريد وضع متصفح محددًا.
browser.defaultProfile: "openclaw" إذا أردت الوضع المُدار افتراضيًا.
التهيئة
توجد إعدادات المتصفح في~/.openclaw/openclaw.json.
- ترتبط خدمة التحكم بالمتصفح بعنوان local loopback على منفذ مشتق من
gateway.port(الافتراضي:18791، أي gateway + 2). - إذا تجاوزت منفذ Gateway (
gateway.portأوOPENCLAW_GATEWAY_PORT)، فإن منافذ المتصفح المشتقة تتغير لتبقى ضمن “العائلة” نفسها. - تكون القيمة الافتراضية لـ
cdpUrlهي منفذ CDP المحلي المُدار عندما لا يتم تعيينها. - ينطبق
remoteCdpTimeoutMsعلى فحوصات الوصول إلى CDP البعيد (غير local loopback). - ينطبق
remoteCdpHandshakeTimeoutMsعلى فحوصات الوصول إلى WebSocket الخاص بـ CDP البعيد. - تكون عملية التنقل/فتح علامة التبويب في المتصفح محمية من SSRF قبل التنقل ويُعاد التحقق منها قدر الإمكان على عنوان
http(s)النهائي بعد التنقل. - في وضع SSRF الصارم، يتم أيضًا التحقق من اكتشاف/فحص نقاط نهاية CDP البعيدة (
cdpUrl، بما في ذلك عمليات البحث في/json/version). - تكون القيمة الافتراضية لـ
browser.ssrfPolicy.dangerouslyAllowPrivateNetworkهيtrue(نموذج الشبكة الموثوقة). عيّنها إلىfalseللتصفح العام الصارم فقط. - لا يزال
browser.ssrfPolicy.allowPrivateNetworkمدعومًا كاسم بديل قديم للتوافق. - تعني
attachOnly: true“عدم تشغيل متصفح محلي مطلقًا؛ والاتصال فقط إذا كان يعمل بالفعل.” - يلوّن
colorوcolorلكل ملف تعريف واجهة المتصفح لتتمكن من معرفة أي ملف تعريف نشط. - ملف التعريف الافتراضي هو
openclaw(متصفح مستقل مُدار من OpenClaw). استخدمdefaultProfile: "user"للاشتراك في متصفح المستخدم المسجّل دخوله. - ترتيب الاكتشاف التلقائي: متصفح النظام الافتراضي إذا كان قائمًا على Chromium؛ وإلا Chrome ← Brave ← Edge ← Chromium ← Chrome Canary.
- تقوم ملفات تعريف
openclawالمحلية بتعيينcdpPort/cdpUrlتلقائيًا — عيّن هذه القيم فقط لـ CDP البعيد. - يستخدم
driver: "existing-session"Chrome DevTools MCP بدلًا من CDP الخام. لا تعيّنcdpUrlلهذا المشغّل. - عيّن
browser.profiles.<name>.userDataDirعندما يجب على ملف تعريف existing-session الاتصال بملف تعريف مستخدم Chromium غير افتراضي مثل Brave أو Edge.
استخدام Brave (أو متصفح آخر قائم على Chromium)
إذا كان متصفحك الافتراضي للنظام قائمًا على Chromium (Chrome/Brave/Edge/إلخ)، فإن OpenClaw يستخدمه تلقائيًا. عيّنbrowser.executablePath لتجاوز
الاكتشاف التلقائي:
مثال CLI:
التحكم المحلي مقابل البعيد
- التحكم المحلي (الافتراضي): يبدأ Gateway خدمة التحكم على local loopback ويمكنه تشغيل متصفح محلي.
- التحكم البعيد (مضيف node): شغّل مضيف node على الجهاز الذي يحتوي على المتصفح؛ وسيقوم Gateway بتمرير إجراءات المتصفح إليه.
- CDP البعيد: عيّن
browser.profiles.<name>.cdpUrl(أوbrowser.cdpUrl) من أجل الاتصال بمتصفح بعيد قائم على Chromium. في هذه الحالة، لن يشغّل OpenClaw متصفحًا محليًا.
- ملفات التعريف المحلية المُدارة: يقوم
openclaw browser stopبإيقاف عملية المتصفح التي شغّلها OpenClaw - ملفات attach-only وCDP البعيدة: يقوم
openclaw browser stopبإغلاق جلسة التحكم النشطة وتحرير تجاوزات محاكاة Playwright/CDP (منفذ العرض، ونظام الألوان، واللغة، والمنطقة الزمنية، ووضع عدم الاتصال، والحالة المشابهة)، حتى لو لم يُشغّل OpenClaw أي عملية متصفح
- رموز استعلام (مثل
https://provider.example?token=<token>) - مصادقة HTTP Basic (مثل
https://user:pass@provider.example)
/json/* وعند الاتصال
بـ WebSocket الخاص بـ CDP. فضّل استخدام متغيرات البيئة أو مديري الأسرار للرموز
بدلًا من تسجيلها في ملفات التهيئة.
وكيل متصفح node (افتراضي بلا تهيئة)
إذا شغّلت مضيف node على الجهاز الذي يحتوي على متصفحك، فيمكن لـ OpenClaw توجيه استدعاءات أداة المتصفح تلقائيًا إلى ذلك الـ node من دون أي تهيئة إضافية للمتصفح. وهذا هو المسار الافتراضي لـ gatewayات البعيدة. ملاحظات:- يكشف مضيف node عن خادم التحكم المحلي في المتصفح عبر أمر وكيل.
- تأتي ملفات التعريف من تهيئة
browser.profilesالخاصة بالـ node نفسه (كما في الوضع المحلي). nodeHost.browserProxy.allowProfilesاختياري. اتركه فارغًا للحصول على السلوك القديم/الافتراضي: تظل جميع ملفات التعريف المهيأة قابلة للوصول عبر الوكيل، بما في ذلك مسارات إنشاء/حذف ملفات التعريف.- إذا عيّنت
nodeHost.browserProxy.allowProfiles، فإن OpenClaw يتعامل معه كحد أقل الامتيازات: لا يمكن استهداف إلا ملفات التعريف الموجودة في قائمة السماح، وتُحظر مسارات إنشاء/حذف ملفات التعريف الدائمة على سطح الوكيل. - عطّله إذا كنت لا تريده:
- على الـ node:
nodeHost.browserProxy.enabled=false - على الـ gateway:
gateway.nodes.browser.mode="off"
- على الـ node:
Browserless (CDP بعيد مستضاف)
Browserless خدمة Chromium مستضافة تكشف عناوين اتصال CDP عبر HTTPS وWebSocket. يمكن لـ OpenClaw استخدام أيٍّ من الشكلين، ولكن بالنسبة إلى ملف تعريف متصفح بعيد، فإن أبسط خيار هو عنوان WebSocket المباشر من وثائق الاتصال الخاصة بـ Browserless. مثال:- استبدل
<BROWSERLESS_API_KEY>برمز Browserless الحقيقي الخاص بك. - اختر نقطة نهاية المنطقة التي تطابق حساب Browserless الخاص بك (راجع وثائقهم).
- إذا منحك Browserless عنوان HTTPS أساسيًا، فيمكنك إما تحويله إلى
wss://لاتصال CDP مباشر أو الاحتفاظ بعنوان HTTPS وترك OpenClaw يكتشف/json/version.
موفرو WebSocket CDP المباشر
تكشف بعض خدمات المتصفح المستضافة نقطة نهاية WebSocket مباشرة بدلًا من آلية اكتشاف CDP القياسية المعتمدة على HTTP (/json/version). يدعم OpenClaw كلاهما:
- نقاط النهاية HTTP(S) — يستدعي OpenClaw
/json/versionلاكتشاف عنوان WebSocket debugger، ثم يتصل به. - نقاط النهاية WebSocket (
ws:///wss://) — يتصل OpenClaw مباشرة، متجاوزًا/json/version. استخدم هذا لخدمات مثل Browserless، وBrowserbase، أو أي موفر يزوّدك بعنوان WebSocket.
Browserbase
Browserbase منصة سحابية لتشغيل المتصفحات headless مع حل CAPTCHA مدمج، ووضع التخفي، ووكلاء سكنيين.- أنشئ حسابًا وانسخ API Key من لوحة معلومات Overview.
- استبدل
<BROWSERBASE_API_KEY>بمفتاح API الحقيقي الخاص بـ Browserbase. - ينشئ Browserbase جلسة متصفح تلقائيًا عند الاتصال عبر WebSocket، لذا لا حاجة إلى خطوة إنشاء جلسة يدويًا.
- تتيح الخطة المجانية جلسة متزامنة واحدة وساعة متصفح واحدة شهريًا. راجع الأسعار لمعرفة حدود الخطط المدفوعة.
- راجع وثائق Browserbase للحصول على المرجع الكامل لـ API، وأدلة SDK، وأمثلة التكامل.
الأمان
الأفكار الأساسية:- التحكم بالمتصفح متاح على local loopback فقط؛ ويعبر الوصول من خلال مصادقة Gateway أو إقران node.
- يستخدم HTTP API المستقل للمتصفح على local loopback مصادقة السر المشترك فقط:
مصادقة bearer لرمز gateway، أو
x-openclaw-password، أو HTTP Basic auth مع كلمة مرور gateway المهيأة. - لا تقوم رؤوس هوية Tailscale Serve و
gateway.auth.mode: "trusted-proxy"بمصادقة HTTP API المستقل هذا للمتصفح على local loopback. - إذا كان التحكم بالمتصفح ممكّنًا ولم تُهيأ أي مصادقة بالسر المشترك، فسيقوم OpenClaw
بإنشاء
gateway.auth.tokenتلقائيًا عند بدء التشغيل وحفظه في التهيئة. - لا ينشئ OpenClaw هذا الرمز تلقائيًا عندما يكون
gateway.auth.modeمضبوطًا بالفعل علىpasswordأوnoneأوtrusted-proxy. - أبقِ Gateway وأي مضيفات node على شبكة خاصة (Tailscale)؛ وتجنب تعريضها للعامة.
- تعامل مع عناوين/رموز CDP البعيدة باعتبارها أسرارًا؛ وفضّل متغيرات البيئة أو مدير أسرار.
- فضّل نقاط النهاية المشفرة (HTTPS أو WSS) والرموز قصيرة العمر حيثما أمكن.
- تجنّب تضمين الرموز طويلة العمر مباشرة في ملفات التهيئة.
ملفات التعريف (متصفحات متعددة)
يدعم OpenClaw عدة ملفات تعريف مسماة (تهيئات توجيه). يمكن أن تكون ملفات التعريف:- بإدارة OpenClaw: مثيل متصفح مخصص قائم على Chromium مع دليل بيانات مستخدم ومنفذ CDP خاصين به
- بعيد: عنوان CDP صريح (متصفح قائم على Chromium يعمل في مكان آخر)
- جلسة موجودة: ملف تعريف Chrome الحالي لديك عبر الاتصال التلقائي بـ Chrome DevTools MCP
- يُنشأ ملف التعريف
openclawتلقائيًا إذا كان مفقودًا. - ملف التعريف
userمدمج للاتصال بـ Chrome MCP existing-session. - تكون ملفات تعريف existing-session اختيارية فيما عدا
user؛ أنشئها باستخدام--driver existing-session. - تخصص منافذ CDP المحلية من 18800–18899 افتراضيًا.
- يؤدي حذف ملف تعريف إلى نقل دليل بياناته المحلي إلى سلة المهملات.
?profile=<name>؛ ويستخدم CLI --browser-profile.
existing-session عبر Chrome DevTools MCP
يمكن لـ OpenClaw أيضًا الاتصال بملف تعريف متصفح قائم على Chromium يعمل بالفعل من خلال خادم Chrome DevTools MCP الرسمي. وهذا يعيد استخدام علامات التبويب وحالة تسجيل الدخول المفتوحة أصلًا في ملف تعريف المتصفح هذا. مراجع الخلفية والإعداد الرسمية: ملف التعريف المدمج:user
- يستخدم ملف التعريف المدمج
userالاتصال التلقائي عبر Chrome MCP، والذي يستهدف ملف تعريف Google Chrome المحلي الافتراضي.
userDataDir مع Brave أو Edge أو Chromium أو ملف تعريف Chrome غير افتراضي:
- افتح صفحة inspect الخاصة بذلك المتصفح للتصحيح عن بُعد.
- فعّل التصحيح عن بُعد.
- أبقِ المتصفح قيد التشغيل ووافق على مطالبة الاتصال عندما يتصل OpenClaw.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
- يعرض
statusالقيمةdriver: existing-session - يعرض
statusالقيمةtransport: chrome-mcp - يعرض
statusالقيمةrunning: true - يسرد
tabsعلامات التبويب المفتوحة بالفعل في متصفحك - يعيد
snapshotمراجع refs من علامة التبويب الحية المحددة
- أن يكون إصدار المتصفح المستهدف القائم على Chromium هو
144+ - أن يكون التصحيح عن بُعد ممكّنًا في صفحة inspect لذلك المتصفح
- أن يكون المتصفح قد أظهر مطالبة موافقة الاتصال وأنك قبلتها
- ينقل
openclaw doctorتهيئة المتصفح القديمة المعتمدة على extension ويتحقق من تثبيت Chrome محليًا لملفات تعريف الاتصال التلقائي الافتراضية، لكنه لا يستطيع تمكين التصحيح عن بُعد من جهة المتصفح نيابةً عنك
- استخدم
profile="user"عندما تحتاج إلى حالة المتصفح المسجّل دخول المستخدم فيها. - إذا كنت تستخدم ملف تعريف existing-session مخصصًا، فمرر اسم ملف التعريف هذا صراحةً.
- اختر هذا الوضع فقط عندما يكون المستخدم أمام الكمبيوتر للموافقة على مطالبة الاتصال.
- يمكن لـ Gateway أو مضيف node تشغيل
npx chrome-devtools-mcp@latest --autoConnect
- هذا المسار أعلى خطورة من ملف التعريف المعزول
openclawلأنه يمكنه العمل داخل جلسة المتصفح المسجّل دخولك فيها. - لا يشغّل OpenClaw المتصفح لهذا المشغّل؛ بل يتصل بجلسة موجودة فقط.
- يستخدم OpenClaw هنا تدفق
--autoConnectالرسمي لـ Chrome DevTools MCP. إذا تم تعيينuserDataDir، فسيقوم OpenClaw بتمريره لاستهداف دليل بيانات مستخدم Chromium الصريح هذا. - تدعم لقطات شاشة existing-session التقاط الصفحات والتقاط العناصر باستخدام
--refمن مخرجات snapshot، ولكنها لا تدعم محددات CSS --element. - تعمل لقطات شاشة الصفحات في existing-session من دون Playwright عبر Chrome MCP.
كما تعمل هناك أيضًا لقطات شاشة العناصر المستندة إلى ref (
--ref)، لكن لا يمكن دمج--full-pageمع--refأو--element. - لا تزال إجراءات existing-session أكثر محدودية من مسار المتصفح
المُدار:
- تتطلب
clickوtypeوhoverوscrollIntoViewوdragوselectمراجع snapshot بدلًا من محددات CSS - تدعم
clickالزر الأيسر فقط (من دون تجاوزات للأزرار أو modifiers) - لا تدعم
typeالخيارslowly=true؛ استخدمfillأوpress - لا تدعم
pressالخيارdelayMs - لا تدعم
hoverوscrollIntoViewوdragوselectوfillوevaluateتجاوزات المهلة لكل استدعاء - تدعم
selectحاليًا قيمة واحدة فقط
- تتطلب
- يدعم
wait --urlفي existing-session الأنماط المطابقة التامة، والجزئية، وglob مثل بقية مشغّلات المتصفح. لا يزالwait --load networkidleغير مدعوم. - تتطلب خطافات الرفع في existing-session استخدام
refأوinputRef، وتدعم ملفًا واحدًا في كل مرة، ولا تدعم الاستهداف عبر CSS element. - لا تدعم خطافات مربعات الحوار في existing-session تجاوزات المهلة.
- لا تزال بعض الميزات تتطلب مسار المتصفح المُدار، بما في ذلك إجراءات
الدفعات، وتصدير PDF، واعتراض التنزيلات، و
responsebody. - يكون existing-session محليًا على المضيف. إذا كان Chrome موجودًا على جهاز مختلف أو ضمن مساحة اسم شبكة مختلفة، فاستخدم CDP البعيد أو مضيف node بدلًا من ذلك.
ضمانات العزل
- دليل بيانات مستخدم مخصص: لا يلمس ملف تعريف متصفحك الشخصي مطلقًا.
- منافذ مخصصة: يتجنب
9222لمنع التعارض مع مسارات عمل التطوير. - تحكم حتمي في علامات التبويب: استهدف علامات التبويب عبر
targetId، وليس “آخر علامة تبويب”.
اختيار المتصفح
عند التشغيل محليًا، يختار OpenClaw أول متصفح متاح:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
المنصات:
- macOS: يتحقق من
/Applicationsو~/Applications. - Linux: يبحث عن
google-chromeوbraveوmicrosoft-edgeوchromiumوغيرها. - Windows: يتحقق من مواقع التثبيت الشائعة.
Control API (اختياري)
بالنسبة إلى عمليات التكامل المحلية فقط، يكشف Gateway عن HTTP API صغير على local loopback:- الحالة/البدء/الإيقاف:
GET /،POST /start،POST /stop - علامات التبويب:
GET /tabs،POST /tabs/open،POST /tabs/focus،DELETE /tabs/:targetId - snapshot/لقطة الشاشة:
GET /snapshot،POST /screenshot - الإجراءات:
POST /navigate،POST /act - الخطافات:
POST /hooks/file-chooser،POST /hooks/dialog - التنزيلات:
POST /download،POST /wait/download - التصحيح:
GET /console،POST /pdf - التصحيح:
GET /errors،GET /requests،POST /trace/start،POST /trace/stop،POST /highlight - الشبكة:
POST /response/body - الحالة:
GET /cookies،POST /cookies/set،POST /cookies/clear - الحالة:
GET /storage/:kind،POST /storage/:kind/set،POST /storage/:kind/clear - الإعدادات:
POST /set/offline،POST /set/headers،POST /set/credentials،POST /set/geolocation،POST /set/media،POST /set/timezone،POST /set/locale،POST /set/device
?profile=<name>.
إذا كانت مصادقة gateway بالسر المشترك مهيأة، فإن مسارات HTTP الخاصة بالمتصفح تتطلب مصادقة أيضًا:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>أو HTTP Basic auth باستخدام كلمة المرور نفسها
- لا يستهلك HTTP API المستقل للمتصفح على local loopback أوضاع trusted-proxy أو رؤوس هوية Tailscale Serve.
- إذا كانت قيمة
gateway.auth.modeهيnoneأوtrusted-proxy، فإن مسارات المتصفح هذه على local loopback لا ترث أوضاع الهوية الحاملة هذه؛ لذا أبقها على local loopback فقط.
متطلب Playwright
تتطلب بعض الميزات (navigate/act/AI snapshot/role snapshot، ولقطات شاشة العناصر، وPDF) وجود Playwright. وإذا لم يكن Playwright مثبتًا، فستعيد نقاط النهاية هذه خطأ 501 واضحًا. ما الذي لا يزال يعمل من دون Playwright:- لقطات ARIA
- لقطات شاشة الصفحات لمتصفح
openclawالمُدار عندما يكون WebSocket CDP لكل علامة تبويب متاحًا - لقطات شاشة الصفحات لملفات تعريف
existing-session/ Chrome MCP - لقطات شاشة existing-session المعتمدة على ref (
--ref) من مخرجات snapshot
navigateact- AI snapshots / role snapshots
- لقطات شاشة العناصر بمحددات CSS (
--element) - تصدير PDF الكامل للمتصفح
--full-page؛ حيث تعيد المسارات الرسالة fullPage is not supported for element screenshots.
إذا ظهرت لك الرسالة Playwright is not available in this gateway build، فثبّت
حزمة Playwright الكاملة (وليس playwright-core) وأعد تشغيل gateway، أو أعد تثبيت
OpenClaw مع دعم المتصفح.
تثبيت Playwright في Docker
إذا كان Gateway يعمل داخل Docker، فتجنبnpx playwright (تعارضات npm override).
استخدم CLI المجمّع بدلًا من ذلك:
PLAYWRIGHT_BROWSERS_PATH (على سبيل المثال،
/home/node/.cache/ms-playwright) وتأكد من الاحتفاظ بـ /home/node عبر
OPENCLAW_HOME_VOLUME أو bind mount. راجع Docker.
كيف يعمل (داخليًا)
التدفق عالي المستوى:- يقبل خادم تحكم صغير طلبات HTTP.
- ويتصل بالمتصفحات القائمة على Chromium (Chrome/Brave/Edge/Chromium) عبر CDP.
- وللإجراءات المتقدمة (النقر/الكتابة/snapshot/PDF)، فإنه يستخدم Playwright فوق CDP.
- وعند غياب Playwright، لا تتوفر إلا العمليات التي لا تعتمد على Playwright.
مرجع CLI سريع
تقبل جميع الأوامر--browser-profile <name> لاستهداف ملف تعريف محدد.
كما تقبل جميع الأوامر --json للحصول على مخرجات قابلة للقراءة آليًا (حمولات مستقرة).
الأساسيات:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- بالنسبة إلى ملفات التعريف attach-only وCDP البعيدة، يظل
openclaw browser stopهو أمر التنظيف الصحيح بعد الاختبارات. فهو يغلق جلسة التحكم النشطة ويمسح تجاوزات المحاكاة المؤقتة بدلًا من قتل المتصفح الأساسي. openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
- إن
uploadوdialogهما استدعاءا تجهيز مسبق؛ شغّلهما قبل النقر/الضغط الذي يطلق أداة اختيار الملف/مربع الحوار. - تُقيّد مسارات إخراج التنزيل والتتبع بجذور مجلدات OpenClaw المؤقتة:
- التتبعات:
/tmp/openclaw(البديل:${os.tmpdir()}/openclaw) - التنزيلات:
/tmp/openclaw/downloads(البديل:${os.tmpdir()}/openclaw/downloads)
- التتبعات:
- تُقيّد مسارات الرفع بجذر OpenClaw المؤقت الخاص بالرفع:
- عمليات الرفع:
/tmp/openclaw/uploads(البديل:${os.tmpdir()}/openclaw/uploads)
- عمليات الرفع:
- يمكن لـ
uploadأيضًا تعيين مدخلات الملفات مباشرة عبر--input-refأو--element. snapshot:--format ai(الافتراضي عند تثبيت Playwright): يعيد AI snapshot مع مراجع رقمية (aria-ref="<n>").--format aria: يعيد شجرة إمكانية الوصول (من دون مراجع؛ للفحص فقط).--efficient(أو--mode efficient): إعداد مسبق مضغوط لـ role snapshot (interactive + compact + depth + maxChars أقل).- الإعداد الافتراضي في التهيئة (للأداة/CLI فقط): عيّن
browser.snapshotDefaults.mode: "efficient"لاستخدام snapshots الفعّالة عندما لا يمرر المستدعي وضعًا (راجع تهيئة Gateway). - تفرض خيارات role snapshot (
--interactiveو--compactو--depthو--selector) لقطة قائمة على الأدوار مع مراجع مثلref=e12. - يقيّد
--frame "<iframe selector>"role snapshots إلى iframe محدد (ويقترن بمراجع أدوار مثلe12). - ينتج
--interactiveقائمة مسطحة وسهلة الاختيار للعناصر التفاعلية (الأفضل لتوجيه الإجراءات). - يضيف
--labelsلقطة شاشة لمنفذ العرض فقط مع تراكب تسميات المراجع (ويطبعMEDIA:<path>).
- تتطلب
click/type/إلخrefمنsnapshot(إما رقميًا12أو مرجع دورe12). لا تُدعم محددات CSS عمدًا للإجراءات.
snapshots والمراجع
يدعم OpenClaw نمطين من “snapshot”:-
AI snapshot (مراجع رقمية):
openclaw browser snapshot(الافتراضي؛--format ai)- الإخراج: لقطة نصية تتضمن مراجع رقمية.
- الإجراءات:
openclaw browser click 12، openclaw browser type 23 "hello". - داخليًا، يتم حل المرجع عبر
aria-refالخاص بـ Playwright.
-
Role snapshot (مراجع أدوار مثل
e12): openclaw browser snapshot --interactive(أو--compactأو--depthأو--selectorأو--frame)- الإخراج: قائمة/شجرة قائمة على الأدوار تتضمن
[ref=e12](ومع[nth=1]اختياريًا). - الإجراءات:
openclaw browser click e12، openclaw browser highlight e12. - داخليًا، يُحل المرجع عبر
getByRole(...)(معnth()للتكرارات). - أضف
--labelsلتضمين لقطة شاشة لمنفذ العرض مع تراكب تسمياتe12.
- الإخراج: قائمة/شجرة قائمة على الأدوار تتضمن
- لا تكون المراجع مستقرة عبر عمليات التنقل؛ إذا فشل شيء ما، فأعد تشغيل
snapshotواستخدم مرجعًا جديدًا. - إذا أُخذ role snapshot باستخدام
--frame، فستُقيّد مراجع الأدوار إلى ذلك iframe حتى role snapshot التالي.
تحسينات الانتظار
يمكنك الانتظار لأكثر من مجرد الوقت/النص:- الانتظار لعنوان URL (مع دعم glob من Playwright):
openclaw browser wait --url "**/dash"
- الانتظار لحالة التحميل:
openclaw browser wait --load networkidle
- الانتظار لمُسند JS:
openclaw browser wait --fn "window.ready===true"
- الانتظار حتى يصبح محدد مرئيًا:
openclaw browser wait "#main"
مسارات عمل التصحيح
عندما يفشل إجراء ما (مثل “not visible” أو “strict mode violation” أو “covered”):openclaw browser snapshot --interactive- استخدم
click <ref>/type <ref>(فضّل مراجع الأدوار في الوضع interactive) - إذا استمر الفشل: استخدم
openclaw browser highlight <ref>لمعرفة ما الذي يستهدفه Playwright - إذا كان سلوك الصفحة غريبًا:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- للتصحيح العميق: سجّل تتبعًا:
openclaw browser trace start- أعد إنتاج المشكلة
openclaw browser trace stop(يطبعTRACE:<path>)
إخراج JSON
يُستخدم--json في السكربتات والأدوات المنظمة.
أمثلة:
refs بالإضافة إلى كتلة stats صغيرة (lines/chars/refs/interactive) لكي تتمكن الأدوات من الاستدلال على حجم الحمولة وكثافتها.
مفاتيح الحالة والبيئة
هذه مفيدة لمسارات العمل من نوع “اجعل الموقع يتصرف كما لو كان 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:
set credentials user pass(أو--clear) - الموقع الجغرافي:
set geo <lat> <lon> --origin "https://example.com"(أو--clear) - الوسائط:
set media dark|light|no-preference|none - المنطقة الزمنية / اللغة المحلية:
set timezone ...، set locale ... - الجهاز / منفذ العرض:
set device "iPhone 14"(إعدادات أجهزة Playwright المسبقة)set viewport 1280 720
الأمان والخصوصية
- قد يحتوي ملف تعريف متصفح openclaw على جلسات مسجّل دخولها؛ لذا تعامل معه على أنه حساس.
- ينفذ
browser act kind=evaluate/openclaw browser evaluateوwait --fnJavaScript عشوائيًا في سياق الصفحة. ويمكن لحقن prompt توجيه هذا السلوك. عطّله باستخدامbrowser.evaluateEnabled=falseإذا لم تكن بحاجة إليه. - لملاحظات تسجيل الدخول ومكافحة الروبوتات (X/Twitter، إلخ)، راجع تسجيل الدخول إلى المتصفح + النشر على X/Twitter.
- أبقِ Gateway/مضيف node خاصًا (على local loopback أو داخل tailnet فقط).
- نقاط نهاية CDP البعيدة قوية التأثير؛ قم بتمريرها عبر نفق واحمها.
استكشاف الأخطاء وإصلاحها
للمشكلات الخاصة بـ Linux (خصوصًا snap Chromium)، راجع استكشاف أخطاء المتصفح وإصلاحها. لإعدادات WSL2 Gateway + Windows Chrome ذات المضيف المنفصل، راجع استكشاف أخطاء WSL2 + Windows + remote Chrome CDP وإصلاحها.أدوات الوكيل + كيفية عمل التحكم
يحصل الوكيل على أداة واحدة لأتمتة المتصفح:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
- يعيد
browser snapshotشجرة UI مستقرة (AI أو ARIA). - يستخدم
browser actمعرّفاتrefمن snapshot من أجل النقر/الكتابة/السحب/التحديد. - يلتقط
browser screenshotالبكسلات (صفحة كاملة أو عنصر). - يقبل
browser:profileلاختيار ملف تعريف متصفح مسمى (openclaw أو chrome أو remote CDP).target(sandbox|host|node) لتحديد مكان وجود المتصفح.- في الجلسات المعزولة، يتطلب
target: "host"أن تكونagents.defaults.sandbox.browser.allowHostControl=true. - إذا لم يتم تحديد
target: تستخدم الجلسات المعزولة القيمة الافتراضيةsandbox، وتستخدم الجلسات غير المعزولة القيمة الافتراضيةhost. - إذا كان node قادر على تشغيل المتصفح متصلًا، فقد تُوجَّه الأداة إليه تلقائيًا ما لم تثبّت
target="host"أوtarget="node".
ذو صلة
- نظرة عامة على الأدوات — جميع أدوات الوكيل المتاحة
- العزل — التحكم بالمتصفح في البيئات المعزولة
- الأمان — مخاطر التحكم بالمتصفح ووسائل التقوية