From 3d62afca089ed0ec17eead2a2a4cd16be11eb5fc Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Tue, 14 Apr 2026 13:06:59 +0000 Subject: [PATCH] chore(i18n): refresh ar translations --- docs/ar/tools/browser.md | 658 +++++++++++++++++++++------------------ 1 file changed, 361 insertions(+), 297 deletions(-) diff --git a/docs/ar/tools/browser.md b/docs/ar/tools/browser.md index a3c5c6c97..f9fb84e1e 100644 --- a/docs/ar/tools/browser.md +++ b/docs/ar/tools/browser.md @@ -3,41 +3,41 @@ read_when: - إضافة أتمتة متصفح يتحكم بها الوكيل - تصحيح سبب تداخل openclaw مع Chrome الخاص بك - تنفيذ إعدادات المتصفح + دورة الحياة في تطبيق macOS -summary: خدمة التحكم المدمجة في المتصفح + أوامر الإجراءات -title: المتصفح (بإدارة OpenClaw) +summary: خدمة التحكم المتكاملة في المتصفح + أوامر الإجراءات +title: المتصفح (تحت إدارة OpenClaw) x-i18n: - generated_at: "2026-04-11T02:48:31Z" + generated_at: "2026-04-14T13:04:27Z" model: gpt-5.4 provider: openai - source_hash: da6fed36a6f40a50e825f90e5616778954545bd7e52397f7e088b85251ee024f + source_hash: ae9ef725f544d4236d229f498c7187871c69bd18d31069b30a7e67fac53166a2 source_path: tools/browser.md workflow: 15 --- -# المتصفح (بإدارة openclaw) +# المتصفح (تحت إدارة openclaw) يمكن لـ OpenClaw تشغيل **ملف تعريف مخصص لـ Chrome/Brave/Edge/Chromium** يتحكم فيه الوكيل. وهو معزول عن متصفحك الشخصي وتتم إدارته عبر خدمة تحكم محلية صغيرة -داخل Gateway (على local loopback فقط). +داخل Gateway (حلقة محلية فقط). -عرض للمبتدئين: +عرض المبتدئين: -- فكّر فيه على أنه **متصفح منفصل خاص بالوكيل فقط**. -- لا يلمس ملف التعريف `openclaw` ملف تعريف متصفحك الشخصي. -- يمكن للوكيل **فتح علامات تبويب وقراءة الصفحات والنقر والكتابة** ضمن مسار آمن. -- يرتبط ملف التعريف المدمج `user` بجلسة Chrome الحقيقية المسجّل الدخول فيها عبر Chrome MCP. +- فكّر فيه على أنه **متصفح منفصل مخصص للوكيل فقط**. +- ملف تعريف `openclaw` **لا** يلمس ملف تعريف متصفحك الشخصي. +- يمكن للوكيل **فتح علامات التبويب وقراءة الصفحات والنقر والكتابة** ضمن مسار آمن. +- يرتبط ملف تعريف `user` المدمج بجلسة Chrome الحقيقية المسجل الدخول إليها عبر Chrome MCP. -## ما الذي تحصل عليه +## ما الذي ستحصل عليه -- ملف تعريف متصفح منفصل باسم **openclaw** (بلون برتقالي افتراضيًا). -- تحكم حتمي بعلامات التبويب (عرض/فتح/تركيز/إغلاق). -- إجراءات الوكيل (النقر/الكتابة/السحب/الاختيار)، وsnapshots، ولقطات الشاشة، وملفات PDF. -- دعم اختياري لملفات تعريف متعددة (`openclaw` و`work` و`remote` ...). +- ملف تعريف متصفح منفصل باسم **openclaw** (بلمسة برتقالية افتراضيًا). +- تحكم حتمي بعلامات التبويب (إدراج/فتح/تركيز/إغلاق). +- إجراءات الوكيل (النقر/الكتابة/السحب/التحديد)، واللقطات، ولقطات الشاشة، وملفات PDF. +- دعم اختياري لملفات تعريف متعددة (`openclaw` و`work` و`remote` و...). -هذا المتصفح **ليس** متصفحك اليومي. بل هو سطح آمن ومعزول +هذا المتصفح **ليس** متصفحك اليومي. إنه مساحة آمنة ومعزولة لأتمتة الوكيل والتحقق. -## بدء سريع +## البدء السريع ```bash openclaw browser --browser-profile openclaw status @@ -46,17 +46,17 @@ openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` -إذا ظهرت لك رسالة “Browser disabled”، ففعّله في الإعدادات (انظر أدناه) ثم أعد تشغيل +إذا ظهرت لك رسالة “Browser disabled”، فقم بتمكينه في الإعدادات (انظر أدناه) ثم أعد تشغيل Gateway. -إذا كان `openclaw browser` مفقودًا بالكامل، أو إذا أخبرك الوكيل بأن أداة المتصفح +إذا كان `openclaw browser` مفقودًا بالكامل، أو إذا قال الوكيل إن أداة المتصفح غير متاحة، فانتقل إلى [أمر أو أداة المتصفح المفقودة](/ar/tools/browser#missing-browser-command-or-tool). -## التحكم عبر plugin +## التحكم في Plugin -أصبحت أداة `browser` الافتراضية الآن plugin مجمّعًا يُشحن -مفعّلًا افتراضيًا. وهذا يعني أنه يمكنك تعطيله أو استبداله من دون إزالة بقية -نظام plugin في OpenClaw: +أداة `browser` الافتراضية أصبحت الآن Plugin مدمجًا ويأتي مفعّلًا +افتراضيًا. وهذا يعني أنه يمكنك تعطيله أو استبداله دون إزالة بقية +نظام Plugin في OpenClaw: ```json5 { @@ -70,29 +70,33 @@ Gateway. } ``` -عطّل plugin المجمّع قبل تثبيت plugin آخر يوفّر اسم الأداة `browser` -نفسه. تتطلب تجربة المتصفح الافتراضية الأمرين التاليين: +قم بتعطيل Plugin المدمج قبل تثبيت Plugin آخر يوفّر +اسم الأداة `browser` نفسه. تتطلب تجربة المتصفح الافتراضية كلا الأمرين: -- ألا تكون `plugins.entries.browser.enabled` معطلة -- وأن تكون `browser.enabled=true` +- `plugins.entries.browser.enabled` غير معطّل +- `browser.enabled=true` -إذا عطّلت plugin فقط، فسيختفي معًا CLI المتصفح المجمّع (`openclaw browser`)، -وطريقة gateway (`browser.request`)، وأداة الوكيل، وخدمة التحكم الافتراضية في المتصفح. -وستبقى إعدادات `browser.*` كما هي كي يعيد plugin بديل استخدامها. +إذا عطّلت الـ Plugin فقط، فإن CLI المتصفح المدمج (`openclaw browser`) +وطريقة gateway (`browser.request`) وأداة الوكيل وخدمة التحكم الافتراضية في المتصفح +ستختفي كلها معًا. ستبقى إعدادات `browser.*` كما هي +ليعيد Plugin بديل استخدامها. -يملك plugin المتصفح المجمّع الآن أيضًا تنفيذ وقت تشغيل المتصفح. -وتحتفظ النواة فقط بمساعدات Plugin SDK المشتركة بالإضافة إلى إعادة تصدير توافقية لمسارات الاستيراد الداخلية القديمة. عمليًا، فإن إزالة حزمة plugin المتصفح أو استبدالها يزيل مجموعة ميزات المتصفح بدلًا من ترك تنفيذ ثانٍ مملوكًا للنواة. +يمتلك Plugin المتصفح المدمج الآن أيضًا تنفيذ وقت تشغيل المتصفح. +ويحتفظ Core فقط بمساعدات Plugin SDK المشتركة بالإضافة إلى عمليات إعادة تصدير +توافقية لمسارات الاستيراد الداخلية الأقدم. عمليًا، تؤدي إزالة +حزمة Plugin المتصفح أو استبدالها إلى إزالة مجموعة ميزات المتصفح بدلًا +من ترك وقت تشغيل ثانٍ يملكه Core. -ما تزال تغييرات إعدادات المتصفح تتطلب إعادة تشغيل Gateway حتى يتمكن plugin المجمّع -من إعادة تسجيل خدمة المتصفح بإعداداته الجديدة. +لا تزال تغييرات إعدادات المتصفح تتطلب إعادة تشغيل Gateway حتى يتمكن Plugin +المدمج من إعادة تسجيل خدمة المتصفح الخاصة به باستخدام الإعدادات الجديدة. ## أمر أو أداة المتصفح المفقودة -إذا أصبح `openclaw browser` فجأة أمرًا غير معروف بعد ترقية، أو -أبلغ الوكيل أن أداة المتصفح مفقودة، فالسبب الأكثر شيوعًا هو وجود قائمة -`plugins.allow` تقييدية لا تتضمن `browser`. +إذا أصبح `openclaw browser` فجأة أمرًا غير معروف بعد الترقية، أو +أبلغ الوكيل أن أداة المتصفح مفقودة، فالسبب الأكثر شيوعًا هو وجود +قائمة `plugins.allow` مقيّدة لا تتضمن `browser`. -مثال على إعداد معطّل: +مثال على إعدادات معطّلة: ```json5 { @@ -102,7 +106,7 @@ Gateway. } ``` -أصلحه بإضافة `browser` إلى قائمة السماح الخاصة بالـ plugin: +أصلح ذلك بإضافة `browser` إلى قائمة السماح الخاصة بـ Plugin: ```json5 { @@ -114,30 +118,31 @@ Gateway. ملاحظات مهمة: -- لا يكفي `browser.enabled=true` وحده عند ضبط `plugins.allow`. -- ولا يكفي `plugins.entries.browser.enabled=true` وحده أيضًا عند ضبط `plugins.allow`. -- إن `tools.alsoAllow: ["browser"]` **لا** يحمّل plugin المتصفح المجمّع. فهو يضبط فقط سياسة الأدوات بعد أن يكون plugin قد حُمّل بالفعل. -- إذا لم تكن بحاجة إلى قائمة سماح تقييدية للـ plugin، فإن إزالة `plugins.allow` تعيد أيضًا سلوك المتصفح المجمّع الافتراضي. +- `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 browser` أمر غير معروف. +- `browser.request` مفقود. +- يبلّغ الوكيل أن أداة المتصفح غير متاحة أو مفقودة. ## ملفات التعريف: `openclaw` مقابل `user` -- `openclaw`: متصفح مُدار ومعزول (لا يحتاج إلى إضافة). -- `user`: ملف تعريف مدمج للارتباط بـ Chrome MCP لجلسة **Chrome الحقيقية المسجّل الدخول فيها**. +- `openclaw`: متصفح مُدار ومعزول (لا يتطلب أي إضافة). +- `user`: ملف تعريف إرفاق Chrome MCP مدمج لجلسة **Chrome الحقيقية المسجل الدخول إليها** + الخاصة بك. -بالنسبة إلى استدعاءات أداة المتصفح من الوكيل: +بالنسبة لاستدعاءات أداة متصفح الوكيل: -- الافتراضي: استخدام المتصفح المعزول `openclaw`. -- فضّل `profile="user"` عندما تكون الجلسات الحالية المسجّل الدخول فيها مهمة ويكون المستخدم - موجودًا أمام الكمبيوتر للنقر/الموافقة على أي مطالبة ارتباط. +- الافتراضي: استخدم متصفح `openclaw` المعزول. +- فضّل `profile="user"` عندما تكون الجلسات الحالية المسجل الدخول إليها مهمة ويكون المستخدم + موجودًا أمام الجهاز للنقر/الموافقة على أي مطالبة إرفاق. - `profile` هو التجاوز الصريح عندما تريد وضع متصفح محددًا. -اضبط `browser.defaultProfile: "openclaw"` إذا أردت الوضع المُدار افتراضيًا. +عيّن `browser.defaultProfile: "openclaw"` إذا كنت تريد الوضع المُدار افتراضيًا. ## الإعدادات @@ -148,14 +153,14 @@ Gateway. browser: { enabled: true, // الافتراضي: true ssrfPolicy: { - // dangerouslyAllowPrivateNetwork: true, // فعّل هذا فقط عند الثقة المتعمدة في الوصول إلى الشبكة الخاصة - // allowPrivateNetwork: true, // اسم مستعار قديم + // dangerouslyAllowPrivateNetwork: true, // فعّل هذا فقط عند الاشتراك المقصود في الوصول إلى شبكة خاصة موثوقة + // allowPrivateNetwork: true, // اسم بديل قديم // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, - // cdpUrl: "http://127.0.0.1:18792", // تجاوز قديم أحادي الملف التعريفي - remoteCdpTimeoutMs: 1500, // مهلة HTTP لـ CDP البعيد (بالملي ثانية) - remoteCdpHandshakeTimeoutMs: 3000, // مهلة مصافحة WebSocket لـ CDP البعيد (بالملي ثانية) + // cdpUrl: "http://127.0.0.1:18792", // تجاوز قديم لملف تعريف واحد + remoteCdpTimeoutMs: 1500, // مهلة HTTP لـ CDP البعيد (مللي ثانية) + remoteCdpHandshakeTimeoutMs: 3000, // مهلة مصافحة WebSocket لـ CDP البعيد (مللي ثانية) defaultProfile: "openclaw", color: "#FF4500", headless: false, @@ -184,31 +189,31 @@ Gateway. ملاحظات: -- ترتبط خدمة التحكم في المتصفح بـ local loopback على منفذ مشتق من `gateway.port` +- ترتبط خدمة التحكم في المتصفح بحلقة محلية على منفذ مشتق من `gateway.port` (الافتراضي: `18791`، أي gateway + 2). - إذا تجاوزت منفذ Gateway (`gateway.port` أو `OPENCLAW_GATEWAY_PORT`)، - فإن منافذ المتصفح المشتقة تتحرك للحفاظ على البقاء ضمن “العائلة” نفسها. -- تكون القيمة الافتراضية لـ `cdpUrl` هي منفذ CDP المحلي المُدار عند عدم ضبطه. -- ينطبق `remoteCdpTimeoutMs` على فحوصات الوصول إلى CDP البعيد (غير local loopback). -- ينطبق `remoteCdpHandshakeTimeoutMs` على فحوصات الوصول إلى WebSocket الخاصة بـ CDP البعيد. -- يخضع التنقل/فتح علامة تبويب في المتصفح لحماية SSRF قبل التنقل، ويُعاد التحقق منه بأفضل جهد على عنوان URL النهائي لـ `http(s)` بعد التنقل. -- في وضع SSRF الصارم، تُفحَص أيضًا عمليات اكتشاف/استطلاع نقاط نهاية CDP البعيدة (`cdpUrl`، بما في ذلك عمليات البحث عن `/json/version`). -- تكون `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` معطلة افتراضيًا. اضبطها على `true` فقط عندما تثق عمدًا في الوصول إلى المتصفح عبر الشبكة الخاصة. -- ما يزال `browser.ssrfPolicy.allowPrivateNetwork` مدعومًا كاسم مستعار قديم للتوافق. -- تعني `attachOnly: true`: “لا تطلق متصفحًا محليًا مطلقًا؛ ارتبط به فقط إذا كان يعمل بالفعل.” -- تضفي `color` و`color` الخاصة بكل ملف تعريف لونًا على UI المتصفح حتى تتمكن من معرفة الملف التعريفي النشط. -- ملف التعريف الافتراضي هو `openclaw` (متصفح مستقل مُدار بواسطة OpenClaw). استخدم `defaultProfile: "user"` لاختيار متصفح المستخدم المسجّل الدخول فيه. -- ترتيب الاكتشاف التلقائي: متصفح النظام الافتراضي إذا كان مبنيًا على Chromium؛ وإلا فـ Chrome → Brave → Edge → Chromium → Chrome Canary. -- تعيّن ملفات تعريف `openclaw` المحلية `cdpPort`/`cdpUrl` تلقائيًا — لا تضبطهما إلا لـ CDP البعيد. + فإن منافذ المتصفح المشتقة تتغيّر للحفاظ على بقائها ضمن "العائلة" نفسها. +- يستخدم `cdpUrl` منفذ CDP المحلي المُدار افتراضيًا عند عدم تعيينه. +- ينطبق `remoteCdpTimeoutMs` على فحوصات الوصول إلى CDP البعيد (غير الخاص بالحلقة المحلية). +- ينطبق `remoteCdpHandshakeTimeoutMs` على فحوصات الوصول إلى WebSocket لـ CDP البعيد. +- تتم حماية التنقل/فتح علامة تبويب في المتصفح من SSRF قبل التنقل، وتُعاد محاولة التحقق بأفضل جهد على عنوان URL النهائي من نوع `http(s)` بعد التنقل. +- في وضع SSRF الصارم، يتم أيضًا التحقق من اكتشاف/فحص نقطة نهاية CDP البعيدة (`cdpUrl`، بما في ذلك عمليات البحث `/json/version`). +- يكون `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` معطّلًا افتراضيًا. اضبطه على `true` فقط عندما تثق عمدًا في الوصول إلى المتصفح عبر شبكة خاصة. +- لا يزال `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..userDataDir` عندما يجب على ملف تعريف existing-session + تقم بتعيين `cdpUrl` لهذا المشغل. +- عيّن `browser.profiles..userDataDir` عندما ينبغي لملف تعريف existing-session الارتباط بملف تعريف مستخدم Chromium غير افتراضي مثل Brave أو Edge. -## استخدام Brave (أو متصفح آخر مبني على Chromium) +## استخدام Brave (أو أي متصفح آخر مستند إلى Chromium) -إذا كان متصفحك **الافتراضي في النظام** مبنيًا على Chromium (Chrome/Brave/Edge/إلخ)، -فسيستخدمه OpenClaw تلقائيًا. اضبط `browser.executablePath` لتجاوز +إذا كان متصفح **النظام الافتراضي** لديك مستندًا إلى Chromium (Chrome/Brave/Edge/إلخ)، +فإن OpenClaw يستخدمه تلقائيًا. عيّن `browser.executablePath` لتجاوز الاكتشاف التلقائي: مثال CLI: @@ -240,52 +245,52 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" } ``` -## التحكم المحلي مقابل البعيد +## التحكم المحلي مقابل التحكم البعيد -- **التحكم المحلي (الافتراضي):** يبدأ Gateway خدمة التحكم على local loopback ويمكنه تشغيل متصفح محلي. +- **التحكم المحلي (الافتراضي):** يبدأ Gateway خدمة التحكم عبر الحلقة المحلية ويمكنه تشغيل متصفح محلي. - **التحكم البعيد (مضيف node):** شغّل مضيف node على الجهاز الذي يحتوي على المتصفح؛ وسيقوم Gateway بتمرير إجراءات المتصفح إليه. -- **CDP البعيد:** اضبط `browser.profiles..cdpUrl` (أو `browser.cdpUrl`) من أجل - الارتباط بمتصفح بعيد مبني على Chromium. في هذه الحالة، لن يقوم OpenClaw بتشغيل متصفح محلي. +- **CDP البعيد:** عيّن `browser.profiles..cdpUrl` (أو `browser.cdpUrl`) من أجل + الارتباط بمتصفح بعيد مستند إلى Chromium. في هذه الحالة، لن يقوم OpenClaw بتشغيل متصفح محلي. يختلف سلوك الإيقاف حسب وضع ملف التعريف: -- ملفات التعريف المحلية المُدارة: يؤدي `openclaw browser stop` إلى إيقاف عملية المتصفح التي +- ملفات التعريف المحلية المُدارة: يقوم `openclaw browser stop` بإيقاف عملية المتصفح التي شغّلها OpenClaw -- ملفات attach-only وCDP البعيدة: يؤدي `openclaw browser stop` إلى إغلاق - جلسة التحكم النشطة وتحرير تجاوزات محاكاة Playwright/CDP (منفذ العرض، - ونظام الألوان، والإعدادات المحلية، والمنطقة الزمنية، ووضع عدم الاتصال، وما شابه - ذلك من الحالة)، رغم أن OpenClaw لم يشغّل أي عملية متصفح +- ملفات تعريف attach-only وCDP البعيدة: يقوم `openclaw browser stop` بإغلاق جلسة + التحكم النشطة وتحرير تجاوزات محاكاة Playwright/CDP (منفذ العرض، + ونظام الألوان، واللغة المحلية، والمنطقة الزمنية، ووضع عدم الاتصال، وحالات مشابهة)، حتى + لو لم يتم تشغيل أي عملية متصفح بواسطة OpenClaw -يمكن أن تتضمن عناوين URL لـ CDP البعيد مصادقة: +يمكن أن تتضمن عناوين URL الخاصة بـ CDP البعيد مصادقة: -- رموزًا مميزة في الاستعلام (مثل `https://provider.example?token=`) +- رموز استعلام (مثل `https://provider.example?token=`) - مصادقة HTTP Basic (مثل `https://user:pass@provider.example`) -يحافظ OpenClaw على بيانات المصادقة عند استدعاء نقاط نهاية `/json/*` وعند الاتصال -بـ WebSocket الخاص بـ CDP. ويفضَّل استخدام متغيرات البيئة أو مديري الأسرار للرموز -بدلًا من حفظها في ملفات الإعدادات. +يحافظ OpenClaw على المصادقة عند استدعاء نقاط النهاية `/json/*` وعند الاتصال +بـ CDP WebSocket. فضّل استخدام متغيرات البيئة أو مديري الأسرار للرموز +بدلًا من تضمينها في ملفات الإعدادات. -## وكيل متصفح node (إعداد صفري افتراضي) +## وكيل متصفح Node (إعداد صفري افتراضي) -إذا كنت تشغّل **مضيف node** على الجهاز الذي يحتوي على متصفحك، فيمكن لـ OpenClaw -توجيه استدعاءات أداة المتصفح تلقائيًا إلى ذلك المضيف من دون أي إعدادات متصفح إضافية. -وهذا هو المسار الافتراضي للـ gateways البعيدة. +إذا كنت تشغّل **مضيف node** على الجهاز الذي يحتوي على متصفحك، يمكن لـ OpenClaw +توجيه استدعاءات أداة المتصفح تلقائيًا إلى ذلك الـ Node بدون أي إعدادات متصفح إضافية. +هذا هو المسار الافتراضي لـ Gateways البعيدة. ملاحظات: -- يعرض مضيف node خادم التحكم المحلي في المتصفح عبر **أمر وكيل**. -- تأتي ملفات التعريف من إعدادات `browser.profiles` الخاصة بالعقدة نفسها (كما في الوضع المحلي). -- `nodeHost.browserProxy.allowProfiles` اختياري. اتركه فارغًا للحصول على السلوك القديم/الافتراضي: تبقى جميع ملفات التعريف المهيأة قابلة للوصول عبر الوكيل، بما في ذلك مسارات إنشاء/حذف ملفات التعريف. -- إذا ضبطت `nodeHost.browserProxy.allowProfiles`، فإن OpenClaw يعامله كحد أقل الصلاحيات: لا يمكن استهداف إلا ملفات التعريف المدرجة في قائمة السماح، كما تُحظر مسارات إنشاء/حذف ملفات التعريف الدائمة على سطح الوكيل. -- عطّله إذا لم تكن تريده: +- يعرّض مضيف node خادم التحكم المحلي في المتصفح الخاص به عبر **أمر وكيل**. +- تأتي ملفات التعريف من إعدادات `browser.profiles` الخاصة بالعقدة نفسها (مثل المحلي). +- `nodeHost.browserProxy.allowProfiles` اختياري. اتركه فارغًا للحصول على السلوك القديم/الافتراضي: ستظل جميع ملفات التعريف المضبوطة قابلة للوصول عبر الوكيل، بما في ذلك مسارات إنشاء/حذف ملفات التعريف. +- إذا قمت بتعيين `nodeHost.browserProxy.allowProfiles`، فسيتعامل OpenClaw معه على أنه حدّ أقل الامتيازات: لا يمكن استهداف سوى ملفات التعريف الموجودة في قائمة السماح، وتُحظر مسارات إنشاء/حذف ملفات التعريف الدائمة على سطح الوكيل. +- عطّله إذا كنت لا تريده: - على العقدة: `nodeHost.browserProxy.enabled=false` - - على gateway: `gateway.nodes.browser.mode="off"` + - على الـ gateway: `gateway.nodes.browser.mode="off"` ## Browserless (CDP بعيد مستضاف) -[Browserless](https://browserless.io) خدمة Chromium مستضافة تكشف -عناوين اتصال CDP عبر HTTPS وWebSocket. ويمكن لـ OpenClaw استخدام أي من الشكلين، لكن -بالنسبة إلى ملف تعريف متصفح بعيد فإن أبسط خيار هو عنوان WebSocket المباشر +[Browserless](https://browserless.io) هي خدمة Chromium مستضافة تعرض +عناوين URL لاتصال CDP عبر HTTPS وWebSocket. يمكن لـ OpenClaw استخدام أي من الشكلين، لكن +بالنسبة لملف تعريف متصفح بعيد فإن أبسط خيار هو عنوان WebSocket المباشر من وثائق الاتصال الخاصة بـ Browserless. مثال: @@ -310,28 +315,29 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" ملاحظات: - استبدل `` برمز Browserless الحقيقي الخاص بك. -- اختر نقطة نهاية المنطقة التي تطابق حساب Browserless الخاص بك (راجع وثائقهم). -- إذا منحك Browserless عنوان HTTPS أساسيًا، فيمكنك إما تحويله إلى - `wss://` لاتصال CDP مباشر أو الإبقاء على عنوان HTTPS ودع OpenClaw +- اختر نقطة نهاية المنطقة التي تطابق حساب Browserless الخاص بك (انظر وثائقهم). +- إذا منحك Browserless عنوان URL أساسيًا من نوع HTTPS، فيمكنك إما تحويله إلى + `wss://` لاتصال CDP مباشر أو الاحتفاظ بعنوان HTTPS ودع OpenClaw يكتشف `/json/version`. -## مزودو CDP عبر WebSocket المباشر +## مزودو WebSocket CDP المباشر -تكشف بعض خدمات المتصفح المستضافة نقطة نهاية **WebSocket مباشرة** بدلًا من -اكتشاف CDP القياسي المعتمد على HTTP (`/json/version`). يدعم OpenClaw كلاهما: +تكشف بعض خدمات المتصفح المستضافة عن نقطة نهاية **WebSocket مباشرة** +بدلًا من اكتشاف CDP القياسي المعتمد على HTTP (`/json/version`). يدعم OpenClaw كلا الخيارين: -- **نقاط نهاية HTTP(S)** — يستدعي OpenClaw المسار `/json/version` لاكتشاف +- **نقاط نهاية HTTP(S)** — يستدعي OpenClaw ‎`/json/version` لاكتشاف عنوان WebSocket الخاص بالمصحح، ثم يتصل به. -- **نقاط نهاية WebSocket** (`ws://` / `wss://`) — يتصل OpenClaw مباشرةً، - متجاوزًا `/json/version`. استخدم هذا مع خدمات مثل +- **نقاط نهاية WebSocket** (`ws://` / `wss://`) — يتصل OpenClaw مباشرة، + متجاوزًا ‎`/json/version`. استخدم هذا لخدمات مثل [Browserless](https://browserless.io)، - و[Browserbase](https://www.browserbase.com)، أو أي مزود يمنحك - عنوان WebSocket. + [Browserbase](https://www.browserbase.com)، أو أي مزود يزوّدك + بعنوان URL لـ WebSocket. ### Browserbase -[Browserbase](https://www.browserbase.com) منصة سحابية لتشغيل -المتصفحات عديمة الواجهة مع حل CAPTCHA مدمج، ووضع التخفي، ووكلاء residential. +[Browserbase](https://www.browserbase.com) هي منصة سحابية لتشغيل +المتصفحات بدون واجهة مع دعم مدمج لحل CAPTCHA ووضع التخفي +ووكلاء سكنيين. ```json5 { @@ -352,63 +358,63 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" ملاحظات: -- [أنشئ حسابًا](https://www.browserbase.com/sign-up) وانسخ **مفتاح API** - من [لوحة Overview](https://www.browserbase.com/overview). -- استبدل `` بمفتاح Browserbase API الحقيقي. +- [سجّل](https://www.browserbase.com/sign-up) ثم انسخ **مفتاح API** + الخاص بك من [لوحة Overview](https://www.browserbase.com/overview). +- استبدل `` بمفتاح Browserbase API الحقيقي الخاص بك. - ينشئ Browserbase جلسة متصفح تلقائيًا عند الاتصال عبر WebSocket، لذلك لا حاجة إلى خطوة إنشاء جلسة يدويًا. -- تسمح الخطة المجانية بجلسة متزامنة واحدة وساعة متصفح واحدة شهريًا. +- تتيح الخطة المجانية جلسة متزامنة واحدة وساعة متصفح واحدة شهريًا. راجع [الأسعار](https://www.browserbase.com/pricing) لمعرفة حدود الخطط المدفوعة. -- راجع [وثائق Browserbase](https://docs.browserbase.com) للاطلاع على مرجع API - الكامل، وأدلة SDK، وأمثلة التكامل. +- راجع [وثائق Browserbase](https://docs.browserbase.com) للاطلاع على + مرجع API الكامل، وأدلة SDK، وأمثلة التكامل. ## الأمان الأفكار الأساسية: -- التحكم في المتصفح يقتصر على local loopback؛ ويمر الوصول عبر مصادقة Gateway أو اقتران العقدة. -- يستخدم HTTP API المستقل للمتصفح على local loopback **مصادقة السر المشترك فقط**: +- التحكم في المتصفح يقتصر على الحلقة المحلية فقط؛ ويجري الوصول عبر مصادقة Gateway أو اقتران العقدة. +- تستخدم واجهة HTTP المستقلة للمتصفح على الحلقة المحلية **مصادقة secret مشترك فقط**: مصادقة 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` + كلمة مرور gateway المضبوطة. +- ترويسات هوية Tailscale Serve و`gateway.auth.mode: "trusted-proxy"` **لا** + تقوم بمصادقة واجهة المتصفح المستقلة هذه على الحلقة المحلية. +- إذا كان التحكم في المتصفح مفعّلًا ولم يتم إعداد مصادقة secret مشترك، فإن OpenClaw + ينشئ `gateway.auth.token` تلقائيًا عند بدء التشغيل ويحفظه في الإعدادات. +- لا ينشئ OpenClaw هذا الرمز تلقائيًا عندما يكون `gateway.auth.mode` مضبوطًا بالفعل على `password` أو `none` أو `trusted-proxy`. -- أبقِ Gateway وأي مضيفات عقد على شبكة خاصة (Tailscale)؛ وتجنب تعريضها للعامة. -- تعامل مع عناوين URL/الرموز الخاصة بـ CDP البعيد باعتبارها أسرارًا؛ ويفضل استخدام متغيرات البيئة أو مدير أسرار. +- أبقِ Gateway وأي مضيفي عقد على شبكة خاصة (Tailscale)؛ وتجنب تعريضها للعامة. +- تعامل مع عناوين URL/الرموز الخاصة بـ CDP البعيد على أنها أسرار؛ وفضّل متغيرات البيئة أو مدير الأسرار. نصائح CDP البعيد: -- فضّل نقاط النهاية المشفّرة (HTTPS أو WSS) والرموز قصيرة العمر متى أمكن. +- فضّل نقاط النهاية المشفرة (HTTPS أو WSS) والرموز قصيرة العمر حيثما أمكن. - تجنب تضمين الرموز طويلة العمر مباشرةً في ملفات الإعدادات. ## ملفات التعريف (متصفحات متعددة) -يدعم OpenClaw ملفات تعريف مسماة متعددة (إعدادات التوجيه). ويمكن أن تكون ملفات التعريف: +يدعم OpenClaw ملفات تعريف متعددة مسماة (إعدادات توجيه). يمكن أن تكون ملفات التعريف: -- **بإدارة openclaw**: نسخة متصفح مخصصة مبنية على Chromium مع دليل بيانات مستخدم خاص بها + منفذ CDP -- **بعيدة**: عنوان URL صريح لـ CDP (متصفح مبني على Chromium يعمل في مكان آخر) -- **جلسة موجودة**: ملف تعريف Chrome الحالي الخاص بك عبر الاتصال التلقائي لـ Chrome DevTools MCP +- **تحت إدارة openclaw**: مثيل متصفح مستقل مستند إلى Chromium له دليل بيانات مستخدم خاص + منفذ CDP +- **بعيد**: عنوان CDP URL صريح (متصفح مستند إلى Chromium يعمل في مكان آخر) +- **جلسة موجودة**: ملف Chrome الحالي الخاص بك عبر الاتصال التلقائي لـ Chrome DevTools MCP الإعدادات الافتراضية: - يتم إنشاء ملف التعريف `openclaw` تلقائيًا إذا كان مفقودًا. -- ملف التعريف `user` مدمج للارتباط بجلسة موجودة عبر Chrome MCP. -- ملفات تعريف الجلسة الموجودة اختيارية بخلاف `user`؛ أنشئها باستخدام `--driver existing-session`. -- تُخصَّص منافذ CDP المحلية من **18800–18899** افتراضيًا. +- ملف التعريف `user` مدمج لإرفاق جلسة موجودة عبر Chrome MCP. +- ملفات تعريف الجلسات الموجودة اختيارية بخلاف `user`؛ أنشئها باستخدام `--driver existing-session`. +- يتم تخصيص منافذ CDP المحلية من **18800–18899** افتراضيًا. - يؤدي حذف ملف تعريف إلى نقل دليل بياناته المحلي إلى سلة المهملات. تقبل جميع نقاط نهاية التحكم `?profile=`؛ ويستخدم CLI الخيار `--browser-profile`. ## الجلسة الموجودة عبر Chrome DevTools MCP -يمكن لـ OpenClaw أيضًا الارتباط بملف تعريف متصفح Chromium-based قيد التشغيل عبر -خادم Chrome DevTools MCP الرسمي. ويؤدي هذا إلى إعادة استخدام علامات التبويب وحالة تسجيل الدخول +يمكن لـ OpenClaw أيضًا الارتباط بملف تعريف متصفح مستند إلى Chromium قيد التشغيل من خلال +خادم Chrome DevTools MCP الرسمي. يتيح ذلك إعادة استخدام علامات التبويب وحالة تسجيل الدخول المفتوحة بالفعل في ملف تعريف المتصفح هذا. -مراجع الخلفية والإعداد الرسمية: +مراجع رسمية للخلفية والإعداد: - [Chrome for Developers: Use Chrome DevTools MCP with your browser session](https://developer.chrome.com/blog/chrome-devtools-mcp-debug-your-browser-session) - [Chrome DevTools MCP README](https://github.com/ChromeDevTools/chrome-devtools-mcp) @@ -417,12 +423,12 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" - `user` -اختياري: أنشئ ملف تعريف existing-session مخصصًا خاصًا بك إذا كنت تريد -اسمًا مختلفًا أو لونًا مختلفًا أو دليل بيانات متصفح مختلفًا. +اختياري: أنشئ ملف تعريف existing-session مخصصًا إذا كنت تريد +اسمًا أو لونًا أو دليل بيانات متصفح مختلفًا. السلوك الافتراضي: -- يستخدم ملف التعريف المدمج `user` الاتصال التلقائي عبر Chrome MCP، والذي يستهدف +- يستخدم ملف التعريف `user` المدمج الاتصال التلقائي لـ Chrome MCP، والذي يستهدف ملف تعريف Google Chrome المحلي الافتراضي. استخدم `userDataDir` مع Brave أو Edge أو Chromium أو ملف تعريف Chrome غير افتراضي: @@ -454,7 +460,7 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" - Brave: `brave://inspect/#remote-debugging` - Edge: `edge://inspect/#remote-debugging` -اختبار smoke للارتباط المباشر: +اختبار دخاني للارتباط المباشر: ```bash openclaw browser --browser-profile user start @@ -463,69 +469,69 @@ openclaw browser --browser-profile user tabs openclaw browser --browser-profile user snapshot --format ai ``` -كيف يبدو النجاح: +شكل النجاح: -- يعرض `status` القيمة `driver: existing-session` -- يعرض `status` القيمة `transport: chrome-mcp` -- يعرض `status` القيمة `running: true` -- يعرض `tabs` علامات التبويب المفتوحة بالفعل في المتصفح -- يعرض `snapshot` مراجع من علامة التبويب الحية المحددة +- يُظهر `status` القيمة `driver: existing-session` +- يُظهر `status` القيمة `transport: chrome-mcp` +- يُظهر `status` القيمة `running: true` +- يعرض `tabs` علامات التبويب المفتوحة بالفعل في متصفحك +- يُرجع `snapshot` مراجع من علامة التبويب المباشرة المحددة -ما الذي يجب التحقق منه إذا لم يعمل الارتباط: +ما الذي يجب التحقق منه إذا لم ينجح الارتباط: -- أن يكون المتصفح المستهدف المبني على Chromium بالإصدار `144+` +- أن يكون إصدار المتصفح المستهدف المستند إلى Chromium هو `144+` - أن يكون تصحيح الأخطاء عن بُعد مفعّلًا في صفحة الفحص الخاصة بذلك المتصفح -- أن المتصفح عرض مطالبة موافقة الارتباط وأنك قبلتها -- يقوم `openclaw doctor` بترحيل إعدادات المتصفح القديمة المعتمدة على الإضافة ويتحقق من +- أن يكون المتصفح قد عرض مطالبة موافقة الارتباط وقمت بقبولها +- يقوم `openclaw doctor` بترحيل إعدادات المتصفح القديمة المستندة إلى الإضافات ويتحقق من أن Chrome مثبت محليًا لملفات تعريف الاتصال التلقائي الافتراضية، لكنه لا يستطيع تفعيل تصحيح الأخطاء عن بُعد من جهة المتصفح نيابةً عنك استخدام الوكيل: -- استخدم `profile="user"` عندما تحتاج إلى حالة المتصفح الخاصة بالمستخدم والمسجّل الدخول فيها. +- استخدم `profile="user"` عندما تحتاج إلى حالة المتصفح المسجل دخول المستخدم فيه. - إذا كنت تستخدم ملف تعريف existing-session مخصصًا، فمرر اسم ملف التعريف الصريح هذا. -- اختر هذا الوضع فقط عندما يكون المستخدم أمام الكمبيوتر للموافقة على +- اختر هذا الوضع فقط عندما يكون المستخدم أمام الجهاز للموافقة على مطالبة الارتباط. - يمكن لـ Gateway أو مضيف العقدة تشغيل `npx chrome-devtools-mcp@latest --autoConnect` ملاحظات: -- هذا المسار أعلى خطورة من ملف التعريف المعزول `openclaw` لأنه يمكن أن - يتصرف داخل جلسة المتصفح المسجّل الدخول فيها. -- لا يشغّل OpenClaw المتصفح لهذا المشغّل؛ بل يرتبط بجلسة - موجودة فقط. -- يستخدم OpenClaw هنا تدفق `--autoConnect` الرسمي لـ Chrome DevTools MCP. وإذا - كان `userDataDir` مضبوطًا، فإن OpenClaw يمرره لاستهداف - دليل بيانات مستخدم Chromium الصريح ذلك. -- تدعم لقطات الشاشة في existing-session التقاط الصفحة والتقاط العناصر عبر `--ref` - من snapshots، لكنها لا تدعم محددات CSS عبر `--element`. -- تعمل لقطات شاشة الصفحة في existing-session من دون Playwright عبر Chrome MCP. - كما تعمل لقطات العناصر المرجعية (`--ref`) هناك أيضًا، لكن لا يمكن الجمع بين `--full-page` - و`--ref` أو `--element`. -- ما تزال إجراءات existing-session أكثر محدودية من +- هذا المسار أعلى خطورة من ملف التعريف `openclaw` المعزول لأنه يمكنه + العمل داخل جلسة المتصفح المسجل الدخول إليها الخاصة بك. +- لا يقوم OpenClaw بتشغيل المتصفح لهذا المشغل؛ بل يرتبط + بجلسة موجودة فقط. +- يستخدم OpenClaw تدفق `--autoConnect` الرسمي من Chrome DevTools MCP هنا. إذا + تم تعيين `userDataDir`، فإن OpenClaw يمرره لاستهداف + دليل بيانات مستخدم Chromium الصريح هذا. +- تدعم لقطات الشاشة في existing-session التقاط الصفحة ولقطات العناصر باستخدام `--ref` + من مخرجات اللقطة، لكن ليس محددات CSS `--element`. +- تعمل لقطات شاشة الصفحة في existing-session بدون Playwright عبر Chrome MCP. + كما تعمل لقطات عناصر `--ref` هناك أيضًا، لكن لا يمكن دمج `--full-page` + مع `--ref` أو `--element`. +- لا تزال إجراءات existing-session أكثر محدودية من مسار المتصفح المُدار: - تتطلب `click` و`type` و`hover` و`scrollIntoView` و`drag` و`select` مراجع snapshot بدلًا من محددات CSS - - `click` يقتصر على الزر الأيسر فقط (من دون تجاوزات للأزرار أو modifiers) + - `click` يقتصر على الزر الأيسر فقط (من دون تجاوزات للأزرار أو المعدّلات) - `type` لا يدعم `slowly=true`؛ استخدم `fill` أو `press` - `press` لا يدعم `delayMs` - لا تدعم `hover` و`scrollIntoView` و`drag` و`select` و`fill` و`evaluate` تجاوزات المهلة لكل استدعاء - يدعم `select` حاليًا قيمة واحدة فقط -- يدعم `wait --url` في existing-session الأنماط الدقيقة والجزئية وأنماط glob - مثل برامج تشغيل المتصفح الأخرى. أما `wait --load networkidle` فغير مدعوم بعد. -- تتطلب hooks الرفع في existing-session `ref` أو `inputRef`، وتدعم ملفًا واحدًا - في كل مرة، ولا تدعم استهداف CSS عبر `element`. -- لا تدعم hooks مربعات الحوار في existing-session تجاوزات المهلة. -- ما تزال بعض الميزات تتطلب مسار المتصفح المُدار، بما في ذلك - إجراءات الدُفعات، وتصدير PDF، واعتراض التنزيلات، و`responsebody`. -- إن existing-session محلي للمضيف. فإذا كان Chrome موجودًا على جهاز آخر أو +- يدعم `wait --url` في existing-session الأنماط المطابقة التامة والجزئية وglob + مثل بقية مشغلات المتصفح. أمّا `wait --load networkidle` فغير مدعوم بعد. +- تتطلب خطافات الرفع في existing-session `ref` أو `inputRef`، وتدعم ملفًا واحدًا في كل مرة، + ولا تدعم الاستهداف عبر CSS `element`. +- لا تدعم خطافات الحوارات في existing-session تجاوزات المهلة. +- لا تزال بعض الميزات تتطلب مسار المتصفح المُدار، بما في ذلك + الإجراءات المجمعة، وتصدير PDF، واعتراض التنزيلات، و`responsebody`. +- إن existing-session محلي على المضيف. إذا كان Chrome موجودًا على جهاز آخر أو ضمن مساحة اسم شبكة مختلفة، فاستخدم CDP البعيد أو مضيف عقدة بدلًا من ذلك. ## ضمانات العزل -- **دليل بيانات مستخدم مخصص**: لا يلمس ملف تعريف متصفحك الشخصي مطلقًا. -- **منافذ مخصصة**: يتجنب `9222` لمنع التعارض مع تدفقات العمل التطويرية. +- **دليل بيانات مستخدم مخصص**: لا يلمس أبدًا ملف تعريف متصفحك الشخصي. +- **منافذ مخصصة**: يتجنب `9222` لمنع التعارض مع سير عمل التطوير. - **تحكم حتمي بعلامات التبويب**: استهدف علامات التبويب عبر `targetId`، وليس “آخر علامة تبويب”. ## اختيار المتصفح @@ -543,18 +549,18 @@ openclaw browser --browser-profile user snapshot --format ai المنصات: - macOS: يتحقق من `/Applications` و`~/Applications`. -- Linux: يبحث عن `google-chrome` و`brave` و`microsoft-edge` و`chromium` وغيرها. +- Linux: يبحث عن `google-chrome` و`brave` و`microsoft-edge` و`chromium` وما إلى ذلك. - Windows: يتحقق من مواقع التثبيت الشائعة. ## Control API (اختياري) -للتكاملات المحلية فقط، يعرّض Gateway HTTP API صغيرًا على local loopback: +لأغراض التكامل المحلي فقط، يوفّر Gateway واجهة HTTP صغيرة على الحلقة المحلية: - الحالة/البدء/الإيقاف: `GET /` و`POST /start` و`POST /stop` - علامات التبويب: `GET /tabs` و`POST /tabs/open` و`POST /tabs/focus` و`DELETE /tabs/:targetId` -- snapshot/لقطة الشاشة: `GET /snapshot` و`POST /screenshot` +- اللقطة/لقطة الشاشة: `GET /snapshot` و`POST /screenshot` - الإجراءات: `POST /navigate` و`POST /act` -- hooks: `POST /hooks/file-chooser` و`POST /hooks/dialog` +- الخطافات: `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` @@ -565,79 +571,80 @@ openclaw browser --browser-profile user snapshot --format ai تقبل جميع نقاط النهاية `?profile=`. -إذا كانت مصادقة gateway بالسر المشترك مهيأة، فإن مسارات HTTP الخاصة بالمتصفح تتطلب المصادقة أيضًا: +إذا كانت مصادقة gateway ذات secret المشترك مهيأة، فإن مسارات HTTP الخاصة بالمتصفح تتطلب المصادقة أيضًا: - `Authorization: Bearer ` - `x-openclaw-password: ` أو HTTP Basic auth باستخدام كلمة المرور هذه ملاحظات: -- لا يستهلك Browser API المستقل هذا على local loopback وضع trusted-proxy أو - رؤوس هوية Tailscale Serve. -- إذا كانت قيمة `gateway.auth.mode` هي `none` أو `trusted-proxy`، فإن مسارات المتصفح هذه على local loopback - لا ترث أوضاع الهوية تلك؛ لذا أبقها على local loopback فقط. +- واجهة المتصفح المستقلة هذه على الحلقة المحلية **لا** تستخدم trusted-proxy أو + ترويسات هوية Tailscale Serve. +- إذا كانت قيمة `gateway.auth.mode` هي `none` أو `trusted-proxy`، فإن مسارات المتصفح + هذه على الحلقة المحلية لا ترث أوضاع الهوية تلك؛ أبقِها مقتصرة على الحلقة المحلية فقط. ### عقد أخطاء `/act` -يستخدم `POST /act` استجابة خطأ منظمة لإخفاقات التحقق والسياسات -على مستوى المسار: +يستخدم `POST /act` استجابة خطأ مهيكلة لأخطاء التحقق على مستوى المسار +وأعطال السياسة: ```json { "error": "", "code": "ACT_*" } ``` -القيم الحالية لـ `code`: +قيم `code` الحالية: -- `ACT_KIND_REQUIRED` ‏(HTTP 400): الحقل `kind` مفقود أو غير معروف. -- `ACT_INVALID_REQUEST` ‏(HTTP 400): فشل تطبيع حمولة الإجراء أو التحقق منها. -- `ACT_SELECTOR_UNSUPPORTED` ‏(HTTP 400): استُخدم `selector` مع نوع إجراء غير مدعوم. -- `ACT_EVALUATE_DISABLED` ‏(HTTP 403): تم تعطيل `evaluate` (أو `wait --fn`) عبر الإعدادات. -- `ACT_TARGET_ID_MISMATCH` ‏(HTTP 403): يتعارض `targetId` ذي المستوى الأعلى أو المجمع مع هدف الطلب. -- `ACT_EXISTING_SESSION_UNSUPPORTED` ‏(HTTP 501): الإجراء غير مدعوم لملفات تعريف existing-session. +- `ACT_KIND_REQUIRED` (HTTP 400): القيمة `kind` مفقودة أو غير معروفة. +- `ACT_INVALID_REQUEST` (HTTP 400): فشل تطبيع حمولة الإجراء أو التحقق منها. +- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): تم استخدام `selector` مع نوع إجراء غير مدعوم. +- `ACT_EVALUATE_DISABLED` (HTTP 403): تم تعطيل `evaluate` (أو `wait --fn`) عبر الإعدادات. +- `ACT_TARGET_ID_MISMATCH` (HTTP 403): يوجد تعارض بين `targetId` الأعلى مستوى أو المجمّع وهدف الطلب. +- `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): الإجراء غير مدعوم لملفات تعريف existing-session. -قد تعيد إخفاقات وقت التشغيل الأخرى أيضًا `{ "error": "" }` من دون +قد تُرجع أعطال وقت التشغيل الأخرى أيضًا `{ "error": "" }` من دون حقل `code`. ### متطلب Playwright -تتطلب بعض الميزات Playwright. إذا لم يكن Playwright مثبتًا، فستعيد -نقاط النهاية تلك خطأ 501 واضحًا. +تتطلب بعض الميزات (navigate/act/AI snapshot/role snapshot ولقطات العناصر، +وPDF) وجود Playwright. إذا لم يكن Playwright مثبتًا، فستُرجع نقاط النهاية تلك +خطأ 501 واضحًا. -ما الذي ما يزال يعمل من دون Playwright: +ما الذي لا يزال يعمل بدون Playwright: -- ARIA snapshots +- لقطات ARIA - لقطات شاشة الصفحة لمتصفح `openclaw` المُدار عندما يكون WebSocket - الخاص بـ CDP لكل علامة تبويب متاحًا + CDP لكل علامة تبويب متاحًا - لقطات شاشة الصفحة لملفات تعريف `existing-session` / Chrome MCP -- لقطات الشاشة المستندة إلى `--ref` في `existing-session` من ناتج snapshot +- لقطات الشاشة المعتمدة على `--ref` في `existing-session` من مخرجات snapshot -ما الذي ما يزال يحتاج إلى Playwright: +ما الذي لا يزال يحتاج إلى Playwright: - `navigate` - `act` - AI snapshots / role snapshots -- لقطات شاشة العناصر عبر محددات CSS (`--element`) +- لقطات عناصر محددات CSS (`--element`) - تصدير PDF الكامل للمتصفح -كما ترفض لقطات شاشة العناصر أيضًا `--full-page`؛ إذ يعيد المسار الرسالة `fullPage is +ترفض لقطات العناصر أيضًا `--full-page`؛ إذ يعيد المسار الرسالة `fullPage is not supported for element screenshots`. -إذا ظهرت لك الرسالة `Playwright is not available in this gateway build`، فثبّت +إذا ظهرت لك الرسالة `Playwright is not available in this gateway build`، فقم بتثبيت حزمة Playwright الكاملة (وليس `playwright-core`) ثم أعد تشغيل gateway، أو أعد تثبيت OpenClaw مع دعم المتصفح. #### تثبيت Playwright في Docker -إذا كان Gateway يعمل داخل Docker، فتجنب `npx playwright` (بسبب تعارضات npm override). -واستخدم CLI المضمن بدلًا من ذلك: +إذا كان Gateway يعمل في Docker، فتجنب `npx playwright` (تعارضات تجاوز npm). +استخدم CLI المدمج بدلًا من ذلك: ```bash docker compose run --rm openclaw-cli \ node /app/node_modules/playwright-core/cli.js install chromium ``` -للاحتفاظ بتنزيلات المتصفح، اضبط `PLAYWRIGHT_BROWSERS_PATH` (مثلًا، -`/home/node/.cache/ms-playwright`) وتأكد من أن `/home/node` محفوظ عبر +للاحتفاظ بتنزيلات المتصفح، عيّن `PLAYWRIGHT_BROWSERS_PATH` (على سبيل المثال، +`/home/node/.cache/ms-playwright`) وتأكد من حفظ `/home/node` عبر `OPENCLAW_HOME_VOLUME` أو bind mount. راجع [Docker](/ar/install/docker). ## كيف يعمل (داخليًا) @@ -645,18 +652,18 @@ docker compose run --rm openclaw-cli \ التدفق عالي المستوى: - يقبل **خادم تحكم** صغير طلبات HTTP. -- ويتصل بالمتصفحات المبنية على Chromium (Chrome/Brave/Edge/Chromium) عبر **CDP**. -- وللإجراءات المتقدمة (النقر/الكتابة/snapshot/PDF)، يستخدم **Playwright** فوق +- ويتصل بالمتصفحات المستندة إلى Chromium (Chrome/Brave/Edge/Chromium) عبر **CDP**. +- وللإجراءات المتقدمة (النقر/الكتابة/اللقطة/PDF)، يستخدم **Playwright** فوق CDP. -- وعندما يكون Playwright مفقودًا، لا تتوفر إلا العمليات التي لا تعتمد على Playwright. +- وعندما لا يكون Playwright موجودًا، لا تتوفر سوى العمليات التي لا تعتمد على Playwright. -يبقي هذا التصميم الوكيل على واجهة مستقرة وحتمية مع السماح لك -بتبديل المتصفحات والملفات التعريفية المحلية/البعيدة. +يبقي هذا التصميم الوكيل على واجهة مستقرة وحتمية مع السماح +لك بتبديل المتصفحات وملفات التعريف المحلية/البعيدة. ## مرجع CLI السريع تقبل جميع الأوامر `--browser-profile ` لاستهداف ملف تعريف محدد. -كما تقبل جميع الأوامر `--json` للحصول على مخرجات قابلة للقراءة آليًا (بحمولات مستقرة). +وتقبل جميع الأوامر أيضًا `--json` للحصول على مخرجات قابلة للقراءة آليًا (حِمولات مستقرة). الأساسيات: @@ -687,11 +694,11 @@ docker compose run --rm openclaw-cli \ - `openclaw browser snapshot --frame "iframe#main" --interactive` - `openclaw browser console --level error` -ملاحظة حول دورة الحياة: +ملاحظة دورة الحياة: -- بالنسبة إلى ملفات التعريف attach-only وCDP البعيدة، يظل `openclaw browser stop` - هو أمر التنظيف الصحيح بعد الاختبارات. فهو يغلق جلسة التحكم النشطة - ويمسح تجاوزات المحاكاة المؤقتة بدلًا من إنهاء +- بالنسبة إلى ملفات تعريف attach-only وCDP البعيدة، يظل `openclaw browser stop` هو + أمر التنظيف الصحيح بعد الاختبارات. فهو يغلق جلسة التحكم النشطة ويمسح + تجاوزات المحاكاة المؤقتة بدلًا من إنهاء المتصفح الأساسي. - `openclaw browser errors --clear` - `openclaw browser requests --filter api --clear` @@ -743,60 +750,60 @@ docker compose run --rm openclaw-cli \ ملاحظات: -- إن `upload` و`dialog` استدعاءات **تهيئة مسبقة**؛ شغّلهما قبل النقر/الضغط - الذي يؤدي إلى فتح محدد الملفات/مربع الحوار. -- تُقيَّد مسارات إخراج التنزيل والتتبع بجذور temp الخاصة بـ OpenClaw: - - التتبعات: `/tmp/openclaw` (الرجوع إلى: `${os.tmpdir()}/openclaw`) - - التنزيلات: `/tmp/openclaw/downloads` (الرجوع إلى: `${os.tmpdir()}/openclaw/downloads`) -- تُقيَّد مسارات الرفع بجذر رفع temp خاص بـ OpenClaw: - - الرفع: `/tmp/openclaw/uploads` (الرجوع إلى: `${os.tmpdir()}/openclaw/uploads`) -- يمكن لـ `upload` أيضًا ضبط مدخلات الملفات مباشرةً عبر `--input-ref` أو `--element`. +- `upload` و`dialog` هما استدعاءان من نوع **arming**؛ شغّلهما قبل النقر/الضغط + الذي يفعّل أداة الاختيار/الحوار. +- تكون مسارات مخرجات التنزيل والتتبع مقيّدة بجذور مؤقتة خاصة بـ 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=""`). + - `--format ai` (الافتراضي عند تثبيت Playwright): يعيد لقطة AI بمراجع رقمية (`aria-ref=""`). - `--format aria`: يعيد شجرة إمكانية الوصول (من دون مراجع؛ للفحص فقط). - - `--efficient` (أو `--mode efficient`): إعداد مسبق مضغوط لـ role snapshot (تفاعلي + مضغوط + عمق + `maxChars` أقل). - - الإعداد الافتراضي في التهيئة (للأداة/CLI فقط): اضبط `browser.snapshotDefaults.mode: "efficient"` لاستخدام snapshots الفعّالة عندما لا يمرر المستدعي وضعًا (راجع [إعدادات Gateway](/ar/gateway/configuration-reference#browser)). - - تفرض خيارات role snapshot (`--interactive` و`--compact` و`--depth` و`--selector`) role snapshot مع مراجع مثل `ref=e12`. - - يقيّد `--frame "