Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

Block pages · Cloudflare

Cloudflare "Just a moment...": what the page is and why it gets stuck

"Just a moment..." with "Verifying you are human" is Cloudflare's challenge page. It holds the request while a script checks that a real browser is asking, then lets it through, usually within a few seconds. It gets stuck when that script cannot finish. A script that meets it gets the page with one Web Unlocker call.

9 of 9
calls to Cloudflare-protected pages answered with the real page, canary of 11 November 2026
88.9%
across all 27 protected targets of the same run
4.1 s
median response across the run

What you are looking at

The page is a waiting room, not a refusal. It has one job, to run a check in the browser, and one header that names it.

Where to lookWhat it shows
Status code403 on the challenge page. 503 on older JavaScript challenges.
Text on the page"Just a moment..." as the title, with "Verifying you are human. This may take a few seconds." or "Checking your browser before accessing".
Response headercf-mitigated: challenge. Cloudflare sets it on every type of challenge page, and the content type is HTML whatever you asked for.
ScriptLoaded from /cdn-cgi/challenge-platform/ on the site's own domain.
What it may askNothing, when the check clears by itself. Otherwise a box to tick: "Verify you are human". The check inside the page is Cloudflare Turnstile.
Cookie after a passcf_clearance. It is tied to the visitor and the device it was issued to, and valid for the time the site set.
Which systemCloudflare, on a rule of the site: its firewall, its bot management or its rate limiting can all send a challenge.
How to read the Cloudflare Just a moment page: first the words Just a moment, Verifying you are human, with a 403 status, then a block page with three marked zones (status, words, the cf-mitigated header), last a card that names the system as Cloudflare, the kind of block as a challenge and not a refusal, the cf-mitigated: challenge header, and what to do next: let the script finish.
What the page shows, which system sent it, and what to do next.

If you are a visitor

In a normal browser the page goes away by itself: the script runs, the check passes and the site loads. When it stays, or comes back in a loop, the check could not finish or its result could not be saved.

  • Allow JavaScript and cookies for the site. The check is a script, and its pass is stored in the cf_clearance cookie: without either, the page repeats.
  • Disable extensions for a moment, ad blockers above all, then reload once. They may block the scripts the check needs.
  • Update the browser, or try a private window, then another browser or device. Old and unsupported browsers fail the check.
  • Turn off the VPN or proxy, or switch to another network such as a mobile hotspot. A shared address is challenged more often.
  • If a box appears, tick it. If nothing works in a clean browser, the rule of the site is the cause: tell its owner.

If your script gets it

A script receives the same page as a 403 with HTML it did not ask for, even on an API call. Four things explain why it never becomes the real page.

  • No JavaScript, no pass: requests, cURL and similar clients cannot run the challenge script, so they get the 403 every time.
  • The handshake counts first: a client whose TLS and HTTP/2 fingerprint does not match the browser in its User-Agent is challenged more, and harder.
  • A copied cookie does not travel: cf_clearance is tied to the visitor and the device it was issued to. Pasted into a script on another machine, it is ignored.
  • To detect it, read the header: cf-mitigated: challenge is there on every challenge page, so there is no need to guess from the body.

The whole picture of the system is in the guide: How to Bypass Cloudflare When Scraping. See also Cloudflare Turnstile.

Get the page with one call

Send the URL to the REST endpoint. With mode: "auto", the default, the first attempt is a browser-grade request from a residential IP. If Cloudflare answers with the challenge, a real browser opens the page, waits for the check to clear and returns what it sees.

curl -X POST https://app.quanticdata.io/api/v1/scraper/unlock \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/", "country": "us"}'

For many pages of one site, keep calling from the same account: once a challenge is passed, the next calls reuse that session and come back faster. With mode: "tls" no browser is opened, and a challenged call comes back blocked.

What the answer tells you

FieldWhat it says
blockedfalse when the real page came back. true only when every attempt met the block; the block page is then in body.
vendorThe system the engine recognised on a blocked attempt. For this page: cloudflare.
blockClassjs_challenge when the check did not clear in time, captcha when the page that came back still asks a person.
tier_servedtls for a browser-grade request, browser when a real browser had to open the page.
attempts, latency_msHow many tries the call took and how long it lasted.
costThe bytes this call moved and what it was charged.

Measured, with a date

In the canary of 11 November 2026, all 9 calls to Cloudflare-protected pages came back with the real page. Across the whole run, 72 of 81 calls on 27 protected targets did, with a median response of 4.1 s.

A call counts only when the answer is 2xx and carries the real page, not a challenge. The list, the method and every run are on the Web Unlocker status page.

What it is for, and what it does not do

  • It is for pages anyone can open in a browser without signing in: prices, listings, reviews, search results, public profiles.
  • Challenges that need no human input are handled by the browser tier. An interactive captcha that asks a person to click, pick images or type is not solved: the answer comes back with blocked: true and blockClass: "captcha", so your code can skip the page or try later.
  • It does not log in for you and it does not create accounts. Pages behind a login stay behind it.
  • Whether you may collect a page depends on the terms of the site and on the law that covers the data. A protection system does not change that, in either direction.

Just a moment: questions people ask

What is the Cloudflare "Just a moment..." page?

It is a challenge page. The site sits behind Cloudflare, and one of its rules asked Cloudflare to verify the visitor before passing the request on. The page runs a script in your browser, and when the script finishes the site loads. Most people never have to click anything.

Why am I stuck on "Verifying you are human"?

Because the check cannot finish or cannot save its result. The usual causes are JavaScript or cookies turned off, an extension that blocks the check script, an outdated or in-app browser, or a VPN address that keeps being challenged. Fix those in that order and reload the page once.

Why does the page loop after I pass the check?

A pass is stored in the cf_clearance cookie, which is tied to the visitor and the device that earned it. If the browser refuses the cookie, or the address changes between requests as on some VPNs and mobile networks, Cloudflare sees a new visitor each time and asks again.

Why does cURL or Python get 403 with "Just a moment..."?

The challenge is a script, and an HTTP client cannot run it, so the 403 never turns into the page. Changing the User-Agent does not help, because the handshake still shows what the client is. Send the URL to the Web Unlocker: a real browser passes the check and the answer carries the page.

How can my code tell a challenge from a real answer?

Look at the response headers. Cloudflare sets cf-mitigated: challenge on every type of challenge page, and the content type is HTML even when you asked for JSON. The Web Unlocker does this reading for you: its answer says blocked, blockClass and vendor, so you never parse a challenge as data.

What does the Web Unlocker return when the check does not clear?

The answer says so, instead of handing you the challenge page as if it were content: blocked: true, with blockClass js_challenge or captcha and vendor cloudflare. The call has already been retried from a fresh exit, and a new call starts from another one, so your code can simply retry or skip the page.