اختر وضع المتصفح الصحيح أولًا
الخيار 1: اتصال CDP خام عن بُعد من WSL2 إلى Windows
استخدم ملف تعريف لمتصفح بعيد يشير من WSL2 إلى نقطة نهاية CDP في Chrome على Windows. اختر هذا عندما يبقى Gateway داخل WSL2، ويعمل Chrome على Windows، ويحتاج التحكم في المتصفح إلى عبور حدود WSL2/Windows.الخيار 2: Chrome MCP محلي على المضيف
استخدم برنامج التشغيلexisting-session (ملف التعريف user) فقط عندما يعمل Gateway
على المضيف نفسه الذي يعمل عليه Chrome، وتريد حالة المتصفح المحلي المسجّل دخوله، ولا
تحتاج إلى نقل المتصفح عبر المضيفين، ولا تحتاج إلى responsebody،
أو تصدير PDF، أو اعتراض التنزيلات، أو الإجراءات الدفعية (ملفات تعريف Chrome MCP لا
تدعم هذه الميزات).
عند استخدام Gateway داخل WSL2 مع Chrome على Windows، استخدم CDP الخام عن بُعد. يعمل Chrome MCP
محليًا على المضيف، وليس جسرًا من WSL2 إلى Windows.
البنية العاملة
- يشغّل WSL2 Gateway على
127.0.0.1:18789 - يفتح Windows Control UI في متصفح عادي على
http://127.0.0.1:18789/ - يعرض Chrome على Windows نقطة نهاية CDP على المنفذ
9222 - يستطيع WSL2 الوصول إلى نقطة نهاية CDP تلك على Windows
- يوجّه OpenClaw ملف تعريف للمتصفح إلى العنوان الذي يمكن الوصول إليه من WSL2
قاعدة بالغة الأهمية لـ Control UI
عند فتح واجهة المستخدم من Windows، استخدم المضيف المحلي لـ Windows ما لم يكن لديك إعداد HTTPS مقصود:التحقق حسب الطبقات
اعمل من الأعلى إلى الأسفل؛ ولا تتجاوز أي طبقة. قد يؤدي إصلاح طبقة واحدة إلى بقاء خطأ مختلف ظاهرًا من طبقة أدنى.الطبقة 1: تحقق من أن Chrome يقدّم CDP على Windows
شخّص IPv4 وIPv6 قبل تغيير portproxy
يحاول Chromium ربط تصحيح الأخطاء عن بُعد بـ127.0.0.1 أولًا، ثم ينتقل إلى
[::1] فقط إذا فشل ربط IPv4. يمكن لقاعدة v4tov4 دائمة تستمع على
127.0.0.1:9222 أن تشغل نقطة النهاية تلك قبل بدء Chrome. عندئذٍ ينتقل Chrome
إلى [::1]:9222، بينما تعيد القاعدة القديمة توجيه حركة مرور IPv4 إلى
مستمعها نفسه وتعيد ردًا فارغًا.
تحقق من المستمعين الفعليين وقواعد الوكيل من Windows بدلًا من استنتاجها
من إصدار Chrome:
tasklist /fi "PID eq <PID>" لكل PID من netstat.
-
إذا استجاب
chrome.exeعلى127.0.0.1، فأزل أي قاعدة portproxy تستمع أيضًا على127.0.0.1:9222. وجّه فقط عنوان محوّل Windows الذي يمكن لـ WSL2 الوصول إليه إلى127.0.0.1. -
إذا استجاب
chrome.exeعلى[::1]فقط، فوجّه المستمع الذي يمكن لـ WSL2 الوصول إليه نحو::1باستخدامv4tov6بدلًا من التوجيه إلى عنوان IPv4 غير مستخدم:
0.0.0.0 أو عنوان شبكة محلية أو عنوان tailnet: يمنح CDP التحكم في
جلسة المتصفح.
الطبقة 2: تحقق من قدرة WSL2 على الوصول إلى نقطة نهاية Windows تلك
من WSL2، اختبر العنوان نفسه الذي تنوي استخدامه فيcdpUrl:
- يعيد
/json/versionبيانات JSON تتضمن بيانات Browser / Protocol-Version الوصفية - يعيد
/json/listبيانات JSON (لا بأس بالمصفوفة الفارغة إذا لم تكن هناك صفحات مفتوحة)
الطبقة 3: اضبط ملف تعريف المتصفح الصحيح
وجّه OpenClaw إلى العنوان الذي يمكن الوصول إليه من WSL2:- استخدم العنوان الذي يمكن لـ WSL2 الوصول إليه، وليس عنوانًا يعمل على Windows فقط
- أبقِ
attachOnly: trueللمتصفحات المُدارة خارجيًا - يمكن أن يستخدم
cdpUrlأحد البروتوكولاتhttp://أوhttps://أوws://أوwss:// - استخدم HTTP(S) عندما تريد من OpenClaw اكتشاف
/json/version - استخدم WS(S) فقط عندما يزوّدك موفّر المتصفح بعنوان URL مباشر لمقبس DevTools
- اختبر عنوان URL نفسه باستخدام
curlقبل توقع نجاح OpenClaw
الطبقة 4: تحقق من طبقة Control UI بصورة منفصلة
افتحhttp://127.0.0.1:18789/ من Windows، ثم تحقق مما يلي:
- تطابق أصل الصفحة مع ما يتوقعه
gateway.controlUi.allowedOrigins - ضبط مصادقة الرمز المميز أو الاقتران بصورة صحيحة
- أنك لا تشخّص مشكلة مصادقة في Control UI وكأنها مشكلة في المتصفح
الطبقة 5: تحقق من التحكم في المتصفح من البداية إلى النهاية
من WSL2:- تُفتح علامة التبويب في Chrome على Windows
- يعيد
browser tabsالهدف - تعمل الإجراءات اللاحقة (
snapshotوscreenshotوnavigate) من ملف التعريف نفسه
أخطاء شائعة مضللة
قائمة تحقق سريعة للتشخيص
- على Windows: أيٌّ من
127.0.0.1أو[::1]يستجيب على/json/version، وهل ينتمي ذلك المستمع إلىchrome.exe؟ - على WSL2: هل يعمل
curl http://WINDOWS_HOST_OR_IP:9222/json/version؟ - إعداد OpenClaw: هل يستخدم
browser.profiles.<name>.cdpUrlذلك العنوان نفسه الذي يمكن لـ WSL2 الوصول إليه؟ - Control UI: هل تفتح
http://127.0.0.1:18789/بدلًا من عنوان IP للشبكة المحلية؟ - هل تحاول استخدام
existing-sessionعبر WSL2 وWindows بدلًا من CDP الخام عن بُعد؟