Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
If a screenshot shows a Cloudflare verification page instead of the site you requested, the browser reached an interstitial challenge and was stopped there. The image is an accurate record of the rendered challenge state—not proof that the destination page loaded. Screenshot code cannot, by itself, make a production Cloudflare challenge disappear.
What a Cloudflare challenge means for a screenshot
Cloudflare challenges are browser security checks. A site’s Web Application Firewall (WAF), bot-management rules, DDoS protections, rate limiting, Bot Fight Mode, or Turnstile configuration can trigger one. The exact decision depends on the site’s rules and signals from the request, browser, and network.
An interstitial Challenge Page intercepts the visitor before the destination URL. Cloudflare evaluates the browser and may require an interaction, such as checking a box or selecting a button. A non-interactive challenge runs injected JavaScript and typically takes less than five seconds. Managed Challenges choose a challenge based on request and browser characteristics; many human visitors are verified automatically, while some must interact.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsA screenshot API captures whatever the browser has rendered. If navigation is still at the interstitial, the resulting PNG, JPEG, WebP, or PDF is a screenshot of that challenge state. Treat it as an access diagnostic, not as a capture of the protected page.
#1 Best Overall
Can Playwright or another automation framework pass it?
Playwright can take screenshots of pages that the browser has legitimately reached. Its screenshot feature does not make it a supported solver for Cloudflare’s production challenges. Cloudflare’s official guidance says browser automation frameworks—including Selenium, Puppeteer, Playwright, and Cypress—and command-line clients are not supported for solving production challenges.
Do not present stealth settings, repeated retries, fingerprint changes, or challenge-bypass scripts as a reliable or authorized solution for a third-party site. Challenge behavior is controlled by the site owner and can change without notice. For a site you own or are authorized to test, separate the problem you are testing from the production security gate:
- Use a staging environment with a test rule or controlled security configuration.
- Test Turnstile integrations with Cloudflare’s documented test keys rather than trying to pass a live production challenge.
- Capture ordinary pages with Playwright when the test is about layout or rendering, not challenge evasion.
Fixes for a legitimate visitor
Change one factor at a time so you can tell which change affected the result. None of these steps guarantees access; the protected site’s policy remains decisive.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →- Use a supported, current browser. Update a major desktop or mobile browser. Internet Explorer is unsupported, and old, embedded, heavily modified, or in-app browsers may have limited support.
- Enable JavaScript and storage. Turnstile requires JavaScript. Missing cookies or DOM storage can prevent a WebView or browser from completing validation.
- Temporarily disable interfering extensions. Test with ad blockers, content blockers, script blockers, fingerprinting protection, and similar privacy extensions disabled. Restore them after the test.
- Try a clean session. Open a private window, a clean browser profile, another supported browser, or another device. This distinguishes stale cookies and extensions from a site-side rule.
- Test the network carefully. If appropriate, try without a VPN or proxy, or use another trusted network. Cloudflare notes that suspicious IP reputation, shared VPNs, and corporate proxies can trigger challenges; changing networks is not a guaranteed fix.
- Escalate with evidence. In developer tools, enable Preserve log, reproduce the issue, export a HAR, and save the browser console log. Send those files, the displayed error code, and the Cloudflare Ray ID to the website administrator.
A 401 response for a Private Access Token request does not by itself prove that the challenge failed. Cloudflare says the browser may fall back to a standard challenge, so diagnose the complete flow rather than that one network line.
Identify which Cloudflare response you received
Interstitial Challenge Page
This is a full HTML response that blocks navigation until verification completes. A screenshot taken during the interstitial documents the gate. It is not suitable when a client expects a non-HTML response such as an AJAX or XHR result.
Embedded Turnstile
Turnstile can appear inside your own page rather than replacing it. For an integration you control, use Cloudflare’s test keys in automated tests. Do not substitute a live production token flow with a scripted solver.
Another security response
WAF actions, bot controls, rate limits, and DDoS protections can produce different status codes or pages. Check the site’s Cloudflare security events and rules before changing screenshot code.
Free tools Windows power users keep installed
One-click scans. No signup required.
Owner and QA checklist
- Confirm whether the capture stopped at an interstitial, an embedded Turnstile widget, or another response.
- Review WAF, Bot Management, Bot Fight Mode, rate-limiting, DDoS, and related rules for the test request.
- Use a staging rule or an allowlisted test path when validating page rendering.
- For API or single-page-application integrations, evaluate Turnstile Pre-clearance where Cloudflare documents it as appropriate.
- Use Cloudflare’s automated Turnstile test keys for end-to-end tests of your own integration.
- Record the URL, timestamp, status, error code, Ray ID, HAR, console output, browser version, and network context.
Capture a permitted page with Playwright
Once the browser is authorized to reach the page (for example, a staging page or a site with the challenge disabled for your test), Playwright’s normal screenshot API is sufficient:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 900 } });
await page.goto('https://your-authorized-test-site.example', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'page.png', fullPage: true });
await browser.close();
If the result is a Cloudflare interstitial, preserve that result as evidence and troubleshoot authorization or configuration. Do not label it as the underlying page.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. It does not claim to defeat Cloudflare production challenges; it returns what the browser can legitimately render. Its clean-shot pipeline accepts consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets, with each step independently switchable. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and whether the request was billed.
For a permitted URL, one GET request is enough:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo documentation for parameter details. The same request in Python:
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallimport requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
And Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo supports full-page captures with lazy images loaded, CSS-selector element shots, dark mode, 12 device presets plus custom viewports, retina scale, PDF paper size/margins/landscape/page ranges, HTML/CSS rendering, custom JavaScript and CSS, pre-capture clicks, hidden selectors, waits for selectors, delays or network idle, blocked ads/trackers/requests/resource types, custom headers/cookies/user agents/Authorization, timezone and geolocation, transparent backgrounds, resizing, TTL-based caching, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, an OpenAPI specification, and compatibility with parameter names used by other screenshot APIs.
It also provides an MCP server with take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. If Cloudflare stops navigation, the service should be understood as reporting that challenge state, not bypassing it.
Rank #4
Plans and billing
| Plan | Included shots | Price |
|---|---|---|
| Free | 1,000 per month | $0, no card |
| Starter | 3,000 | $5 |
| Growth | 15,000 | $15 |
| Pro | 60,000 | $39 |
| Scale | 250,000 | $99 |
| Business | 1,000,000 | $249 |
Yearly billing gives two months free, and every feature is available on every plan. Create a free ScreenshotNeo account to get 1,000 screenshots a month without a card.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Common failure modes
The screenshot is only the challenge page
Cause: navigation never passed the interstitial. Fix: treat the image as diagnostic evidence; verify browser support, JavaScript, storage, extensions, and network, or use an authorized staging configuration.
The challenge loops
Cause: blocked scripts, stale state, an unsupported WebView, or a site/network rule. Fix: test a clean profile and supported browser, then another trusted network; collect a HAR, console log, error code, and Ray ID if it persists.
A scripted solver works once and then fails
Cause: production challenge decisions vary with request and browser signals, and automation frameworks are not supported solvers. Fix: stop treating the workaround as a test strategy; use staging or Turnstile test keys for systems you control.
Best Value
- Comes with secure packaging
- It can be a gift item
- Easy to read text
The API returns a blank page, timeout, or failed load
Cause: the target did not produce a usable page. Fix: inspect verdict headers, test the URL in a current browser, and adjust authorized waits, resource blocking, cookies, or headers. ScreenshotNeo does not bill blank pages, timeouts, failed loads, bot checks, or CAPTCHAs.
FAQ
Is a Cloudflare challenge the same as a CAPTCHA?
No. A challenge can run automatically with JavaScript, use an interaction, or present Turnstile; a CAPTCHA is only one possible verification experience.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Should I retry the screenshot repeatedly?
Retries do not change the site’s security decision and can add noise or load. First determine whether the request is authorized and whether the browser can complete the challenge normally.
What should I send a site owner?
Send the error code and Ray ID together with a HAR and console log captured while reproducing the issue, plus browser and network details.
Frequently Asked Questions
Can changing the user agent guarantee that a challenge disappears?
No. Cloudflare evaluates multiple request, browser, and network signals; no universal user-agent change is established as a fix.
Does a successful screenshot prove the page was challenge-free?
Only if you verify the captured content and response state. A screenshot can faithfully preserve an interstitial instead of the intended destination.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

