autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
46
skills/grok-autoreg/references/playwright-stealth-setup.md
Normal file
46
skills/grok-autoreg/references/playwright-stealth-setup.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Playwright Stealth Setup for x.ai
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install playwright-stealth
|
||||
```
|
||||
|
||||
## Import Pattern (2026-08-14 verified)
|
||||
|
||||
```python
|
||||
from playwright_stealth import Stealth
|
||||
|
||||
# Correct usage:
|
||||
stealth = Stealth()
|
||||
await stealth.apply_stealth_async(page)
|
||||
|
||||
# WRONG - does NOT work:
|
||||
# from playwright_stealth import stealth_async # ImportError
|
||||
# from playwright_stealth import stealth # module, not callable
|
||||
# await stealth(page) # TypeError
|
||||
```
|
||||
|
||||
## Why Stealth Is Needed
|
||||
|
||||
Without stealth, Cloudflare detects the automated browser and blocks the Clerk JS library from loading. The page HTML loads fine, but `window.Clerk` is `undefined`. The form submission triggers a 403 error from Cloudflare.
|
||||
|
||||
With stealth applied, the Clerk JS loads successfully and form submission works (when combined with residential proxy).
|
||||
|
||||
## Stealth + Residential Proxy
|
||||
|
||||
Stealth alone may not be enough — Cloudflare also checks the IP. Always combine with:
|
||||
- bpproxy residential hardsession proxies (`C:/Users/User/tmp/bpproxy_hardsession_pool.txt`)
|
||||
- Filter for `residential` lines (port 1000), not `datacenter` (port 2000)
|
||||
|
||||
## Launch Args
|
||||
|
||||
```python
|
||||
browser = await p.chromium.launch(
|
||||
headless=headless,
|
||||
proxy={"server": proxy_url},
|
||||
args=["--no-sandbox"] # --disable-blink-features=AutomationControlled breaks stealth
|
||||
)
|
||||
```
|
||||
|
||||
Do NOT use `--disable-blink-features=AutomationControlled` with stealth — stealth handles this internally.
|
||||
Reference in New Issue
Block a user