Playwright hitting Cloudflare or captcha on first navigation usually means IP reputation, TLS fingerprint, or automation signals — not a selector bug.
Challenge identification
| What you see | Likely cause | First fix |
|---|---|---|
| “Checking your browser” page | TLS + IP scoring | Residential proxy; real browser profile |
| Turnstile / checkbox | Behavioral + fingerprint | Anti-detect profile; warm-up browsing |
| Slider / rotate puzzle | Behavior scoring | Human-like mouse path; slower pace |
| 403 empty response | WAF rule or IP ban | Rotate IP; reduce request rate |
Playwright-specific fixes
- Stop using
launch()headless — useconnect_over_cdpto Multilogin or similar profile (API example). - Verify
navigator.webdriveris false inside the page context. - Match proxy country to
Intl.DateTimeFormattimezone. - Add 3–8s random delay before interactions; scroll page first.
- Cap concurrent pages per profile — high parallelism triggers scoring.
When captcha solvers help (and when they don't)
Solvers address the widget layer. If IP or fingerprint is already flagged, solving one captcha often leads to immediate re-challenge. Fix identity layer first: fingerprint checklist.
FAQ
Why does Playwright trigger Cloudflare immediately?
Usually IP reputation, TLS fingerprint, or automation signals — not a selector bug. Datacenter IPs and headless
launch() are common triggers.Should I use a captcha solver first?
Fix identity layer first: proxy geo alignment, anti-detect profile, and fingerprint audit. Solvers only help when the underlying session is not already flagged.
How do I connect Playwright to Multilogin?
Launch profile via API, read CDP WebSocket URL, use
connect_over_cdp. See our API Python guide.Disclosure: Affiliated with Multilogin.