autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
71
skills/th-autoreg/references/chrome-cdp-launch.md
Normal file
71
skills/th-autoreg/references/chrome-cdp-launch.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Chrome CDP Launch Procedure
|
||||
|
||||
## Chrome 151+ Breaking Change
|
||||
|
||||
Chrome 151+ requires `--remote-allow-origins=*` for WebSocket connections to CDP.
|
||||
Without it: `Handshake status 403 Forbidden - Rejected an incoming WebSocket connection`.
|
||||
|
||||
## Full Launch Command (Windows)
|
||||
|
||||
```bash
|
||||
# Kill existing Chrome instances
|
||||
taskkill /F /IM chrome.exe 2>/dev/null
|
||||
|
||||
# Launch with CDP enabled
|
||||
"C:\Program Files\Google\Chrome\Application\chrome.exe" \
|
||||
--remote-debugging-port=9222 \
|
||||
--remote-allow-origins=* \
|
||||
--user-data-dir=%USERPROFILE%/.chrome-cdp-profile \
|
||||
--no-first-run \
|
||||
--no-default-browser-check
|
||||
```
|
||||
|
||||
## Verify CDP is alive
|
||||
|
||||
```bash
|
||||
curl -s http://127.0.0.1:9222/json/version
|
||||
# Expected: {"Browser": "Chrome/151.0.7922.109", ...}
|
||||
```
|
||||
|
||||
## Python: kill + launch
|
||||
|
||||
```python
|
||||
import subprocess, time, os
|
||||
|
||||
subprocess.run(['taskkill', '/F', '/IM', 'chrome.exe'], capture_output=True)
|
||||
time.sleep(2)
|
||||
|
||||
user_data = os.path.expanduser("~/.chrome-cdp-profile")
|
||||
os.makedirs(user_data, exist_ok=True)
|
||||
|
||||
subprocess.Popen([
|
||||
r"C:\Program Files\Google\Chrome\Application\chrome.exe",
|
||||
f'--user-data-dir={user_data}',
|
||||
'--remote-debugging-port=9222',
|
||||
'--remote-allow-origins=*',
|
||||
'--no-first-run',
|
||||
'--no-default-browser-check',
|
||||
], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
```
|
||||
|
||||
## Python: health check
|
||||
|
||||
```python
|
||||
import urllib.request, json
|
||||
|
||||
try:
|
||||
resp = urllib.request.urlopen("http://127.0.0.1:9222/json/version", timeout=3)
|
||||
data = json.loads(resp.read())
|
||||
print(f"CDP OK: {data.get('Browser', 'unknown')}")
|
||||
except Exception as e:
|
||||
print(f"CDP DEAD: {e}")
|
||||
```
|
||||
|
||||
## Common Errors
|
||||
|
||||
| Error | Cause | Fix |
|
||||
|-------|-------|-----|
|
||||
| `403 Forbidden` on WebSocket | Chrome 151+ without `--remote-allow-origins` | Add `--remote-allow-origins=*` |
|
||||
| `Connection refused` on :9222 | Chrome not launched with `--remote-debugging-port` | Kill all Chrome, relaunch with flag |
|
||||
| `user-data-dir is already in use` | Another Chrome instance using same profile | Use unique `--user-data-dir` path |
|
||||
| `taskkill` not finding Chrome | Chrome running as background process | Check with `tasklist /FI "IMAGENAME eq chrome.exe"` |
|
||||
Reference in New Issue
Block a user