Tools
WSL2 + Windows + रिमोट Chrome CDP समस्या निवारण
सामान्य स्प्लिट-होस्ट सेटअप में, OpenClaw Gateway WSL2 के अंदर चलता है, Chrome Windows पर चलता है, और ब्राउज़र नियंत्रण को WSL2/Windows सीमा पार करनी होती है। कई स्वतंत्र समस्याएँ एक साथ सामने आ सकती हैं (देखें इश्यू #39369): CDP ट्रांसपोर्ट, Control UI ओरिजिन सुरक्षा, और टोकन/पेयरिंग में से प्रत्येक स्वतंत्र रूप से विफल हो सकता है, जबकि उनसे एक जैसे दिखने वाले त्रुटि संदेश उत्पन्न होते हैं। यह अनुमान लगाने के बजाय कि कौन-सा भाग खराब है, नीचे दी गई परतों पर क्रम से काम करें।
पहले सही ब्राउज़र मोड चुनें
विकल्प 1: WSL2 से Windows तक रॉ रिमोट CDP
WSL2 से Windows Chrome CDP एंडपॉइंट की ओर इंगित करने वाली रिमोट ब्राउज़र प्रोफ़ाइल का उपयोग करें। इसे तब चुनें जब Gateway WSL2 के अंदर रहता है, Chrome Windows पर चलता है, और ब्राउज़र नियंत्रण को WSL2/Windows सीमा पार करनी होती है।
विकल्प 2: होस्ट-लोकल Chrome MCP
existing-session ड्राइवर (user प्रोफ़ाइल) का उपयोग केवल तब करें जब Gateway
Chrome वाले होस्ट पर ही चलता हो, आपको स्थानीय साइन-इन की गई ब्राउज़र स्थिति चाहिए, आपको
क्रॉस-होस्ट ब्राउज़र ट्रांसपोर्ट की आवश्यकता न हो, और आपको responsebody,
PDF एक्सपोर्ट, डाउनलोड इंटरसेप्शन, या बैच कार्रवाइयों की आवश्यकता न हो (Chrome MCP प्रोफ़ाइल
इनका समर्थन नहीं करतीं)।
WSL2 Gateway + Windows Chrome के लिए, रॉ रिमोट CDP का उपयोग करें। Chrome MCP होस्ट-लोकल है, WSL2-से-Windows ब्रिज नहीं।
कार्यशील आर्किटेक्चर
- WSL2, Gateway को
127.0.0.1:18789पर चलाता है - Windows सामान्य ब्राउज़र में
http://127.0.0.1:18789/पर Control UI खोलता है - Windows Chrome, पोर्ट
9222पर CDP एंडपॉइंट उपलब्ध कराता है - WSL2 उस Windows CDP एंडपॉइंट तक पहुँच सकता है
- OpenClaw किसी ब्राउज़र प्रोफ़ाइल को WSL2 से पहुँच योग्य पते की ओर इंगित करता है
Control UI के लिए महत्वपूर्ण नियम
जब UI को Windows से खोला जाए, तो किसी सुविचारित HTTPS सेटअप के अभाव में Windows localhost का उपयोग करें:
http://127.0.0.1:18789/डिफ़ॉल्ट रूप से LAN IP का उपयोग न करें। LAN या tailnet पते पर सादा HTTP, CDP से असंबंधित असुरक्षित-ओरिजिन/डिवाइस-प्रमाणीकरण व्यवहार ट्रिगर कर सकता है। देखें Control UI।
परत-दर-परत सत्यापन करें
ऊपर से नीचे की ओर काम करें; बीच की परतें न छोड़ें। एक परत ठीक करने के बाद भी नीचे की किसी दूसरी परत की अलग त्रुटि दिखाई दे सकती है।
परत 1: सत्यापित करें कि Chrome Windows पर CDP उपलब्ध करा रहा है
chrome.exe --remote-debugging-port=9222 --user-data-dir="$env:LOCALAPPDATA\OpenClaw\ChromeCDP"Chrome 136 और उसके बाद के संस्करण, डिफ़ॉल्ट Chrome डेटा डायरेक्टरी के लिए रिमोट-डीबगिंग कमांड-लाइन स्विच को अनदेखा करते हैं। ऊपर दिखाए अनुसार एक अलग, गैर-डिफ़ॉल्ट डेटा डायरेक्टरी का उपयोग करें। Chrome का रिमोट-डीबगिंग सुरक्षा परिवर्तन देखें। इससे सामान्य साइन-इन की गई Chrome प्रोफ़ाइल रिमोट रूप से नियंत्रित करने योग्य नहीं बनती।
Windows से पहले स्वयं Chrome को सत्यापित करें:
curl.exe http://127.0.0.1:9222/json/versioncurl.exe http://127.0.0.1:9222/json/listयदि यह विफल होता है, तो नीचे दिए गए Windows लिसनर का निदान करें। अभी OpenClaw समस्या नहीं है।
portproxy बदलने से पहले IPv4 और IPv6 का निदान करें
Chromium पहले रिमोट डीबगिंग को 127.0.0.1 से बाइंड करने का प्रयास करता है और
केवल IPv4 बाइंड विफल होने पर [::1] पर फ़ॉलबैक करता है। 127.0.0.1:9222 पर
सुनने वाला स्थायी v4tov4 नियम, Chrome शुरू होने से पहले उस एंडपॉइंट को
घेर सकता है। इसके बाद Chrome [::1]:9222 पर फ़ॉलबैक करता है, जबकि पुराना नियम
IPv4 ट्रैफ़िक को वापस अपने ही लिसनर पर फ़ॉरवर्ड करता है और खाली उत्तर लौटाता है।
Chrome संस्करण से अनुमान लगाने के बजाय Windows से वास्तविक लिसनर और प्रॉक्सी नियम जाँचें:
netstat -ano | findstr :9222netsh interface portproxy show allcurl.exe http://127.0.0.1:9222/json/versioncurl.exe http://[::1]:9222/json/versionnetstat से प्रत्येक PID के लिए tasklist /fi "PID eq <PID>" का उपयोग करें।
-
यदि
chrome.exe,127.0.0.1पर उत्तर देता है, तो उस portproxy नियम को हटाएँ जो127.0.0.1:9222पर भी सुनता है। केवल WSL2 से पहुँच योग्य Windows अडैप्टर पते को127.0.0.1पर फ़ॉरवर्ड करें। -
यदि
chrome.exeकेवल[::1]पर उत्तर देता है, तो किसी अप्रयुक्त IPv4 पते पर फ़ॉरवर्ड करने के बजायv4tov6के साथ WSL2 से पहुँच योग्य लिसनर को::1की ओर इंगित करें:powershell netsh interface portproxy add v4tov6 listenaddress=WINDOWS_HOST_OR_IP listenport=9222 connectaddress=::1 connectport=9222
लिसनर को उस अडैप्टर पते से बाइंड करें जिसकी WSL2 को आवश्यकता है। CDP
पोर्ट को 0.0.0.0, LAN पते, या tailnet पते पर उपलब्ध न कराएँ: CDP
ब्राउज़र सत्र का नियंत्रण प्रदान करता है।
परत 2: सत्यापित करें कि WSL2 उस Windows एंडपॉइंट तक पहुँच सकता है
WSL2 से, उस सटीक पते का परीक्षण करें जिसका आप cdpUrl में उपयोग करने वाले हैं:
curl http://WINDOWS_HOST_OR_IP:9222/json/versioncurl http://WINDOWS_HOST_OR_IP:9222/json/listसही परिणाम:
/json/version, Browser / Protocol-Version मेटाडेटा वाला JSON लौटाता है/json/list, JSON लौटाता है (यदि कोई पृष्ठ खुला नहीं है, तो खाली ऐरे भी ठीक है)
यदि यह विफल होता है, तो Windows अभी पोर्ट को WSL2 के लिए उपलब्ध नहीं करा रहा है, पता WSL2 पक्ष के लिए गलत है, या फ़ायरवॉल/पोर्ट-फ़ॉरवर्डिंग/प्रॉक्सीइंग मौजूद नहीं है। OpenClaw कॉन्फ़िगरेशन को छूने से पहले इसे ठीक करें।
परत 3: सही ब्राउज़र प्रोफ़ाइल कॉन्फ़िगर करें
OpenClaw को WSL2 से पहुँच योग्य पते की ओर इंगित करें:
{ browser: { enabled: true, defaultProfile: "remote", profiles: { remote: { cdpUrl: "http://WINDOWS_HOST_OR_IP:9222", attachOnly: true, color: "#00AA00", }, }, },}टिप्पणियाँ:
- WSL2 से पहुँच योग्य पते का उपयोग करें, न कि उसका जो केवल Windows पर काम करता है
- बाहरी रूप से प्रबंधित ब्राउज़र के लिए
attachOnly: trueबनाए रखें cdpUrl,http://,https://,ws://, याwss://हो सकता है- जब आप चाहते हैं कि OpenClaw
/json/versionखोजे, तब HTTP(S) का उपयोग करें - WS(S) का उपयोग केवल तब करें जब ब्राउज़र प्रदाता आपको सीधा DevTools सॉकेट URL देता हो
- OpenClaw की सफलता की अपेक्षा करने से पहले उसी URL का
curlसे परीक्षण करें
परत 4: Control UI परत को अलग से सत्यापित करें
Windows से http://127.0.0.1:18789/ खोलें, फिर सत्यापित करें:
- पृष्ठ का ओरिजिन,
gateway.controlUi.allowedOriginsकी अपेक्षा से मेल खाता है - टोकन प्रमाणीकरण या पेयरिंग सही ढंग से कॉन्फ़िगर है
- आप Control UI प्रमाणीकरण समस्या को ब्राउज़र समस्या मानकर डीबग नहीं कर रहे हैं
सहायक पृष्ठ: Control UI।
परत 5: एंड-टू-एंड ब्राउज़र नियंत्रण सत्यापित करें
WSL2 से:
openclaw browser --browser-profile remote open https://example.comopenclaw browser --browser-profile remote tabsसही परिणाम:
- टैब Windows Chrome में खुलता है
browser tabsलक्ष्य लौटाता है- बाद की कार्रवाइयाँ (
snapshot,screenshot,navigate) उसी प्रोफ़ाइल से काम करती हैं
सामान्य भ्रामक त्रुटियाँ
| संदेश | अर्थ |
|---|---|
control-ui-insecure-auth |
UI ओरिजिन/सुरक्षित-कॉन्टेक्स्ट समस्या, CDP ट्रांसपोर्ट समस्या नहीं |
token_missing |
प्रमाणीकरण कॉन्फ़िगरेशन समस्या |
pairing required |
डिवाइस अनुमोदन समस्या |
Remote CDP for profile "remote" is not reachable |
WSL2 कॉन्फ़िगर किए गए cdpUrl तक नहीं पहुँच सकता |
खाली CDP उत्तर / portproxy के माध्यम से other side closed |
Windows लिसनर बेमेल या स्व-लूप; दोनों लूपबैक फ़ैमिली और netsh interface portproxy show all की जाँच करें |
Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable |
HTTP एंडपॉइंट ने उत्तर दिया, लेकिन DevTools WebSocket नहीं खोला जा सका |
| रिमोट सत्र के बाद पुराना viewport / डार्क-मोड / लोकेल / ऑफ़लाइन ओवरराइड | Gateway या बाहरी ब्राउज़र को पुनः आरंभ किए बिना सत्र बंद करने और कैश किए गए Playwright/CDP कनेक्शन को रिलीज़ करने के लिए openclaw browser --browser-profile remote stop चलाएँ |
| CDP पहुँच-योग्यता के दौरान टाइमआउट | सामान्यतः अभी भी CDP पहुँच-योग्यता, या धीमा/पहुँच से बाहर रिमोट एंडपॉइंट |
Playwright page enumeration timed out after 3000ms |
रिमोट CDP कनेक्ट हुआ, लेकिन उसकी स्थायी टैब रीड रुक गई |
No Chrome tabs found for profile="user" |
वहाँ लोकल Chrome MCP प्रोफ़ाइल चुनी गई जहाँ कोई होस्ट-लोकल टैब उपलब्ध नहीं है |
त्वरित ट्राइएज चेकलिस्ट
- 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: क्या आप LAN IP के बजाय
http://127.0.0.1:18789/खोल रहे हैं? - क्या आप रॉ रिमोट CDP के बजाय WSL2 और Windows के आर-पार
existing-sessionका उपयोग करने का प्रयास कर रहे हैं?
पहले Windows Chrome एंडपॉइंट को स्थानीय रूप से सत्यापित करें, फिर उसी एंडपॉइंट को WSL2 से सत्यापित करें, और उसके बाद ही OpenClaw कॉन्फ़िगरेशन या Control UI प्रमाणीकरण डीबग करें।