Browse all docs

Human verification and challenges

Human verification and challenges: the built-in modes, what a pass is bound to, and settings for Tencent Captcha, GeeTest, Turnstile and reCAPTCHA v3.

What it does

A challenge policy makes a visitor pass a verification once, after which the node issues a pass credential and requests within its validity go straight through. Verification is done by the node or handed to a third-party service.

When to use it

  • After a CC rule matches, verify instead of blocking so real visitors can still get in.
  • Put a check in front of login, registration or checkout pages.
  • Use different verification services for visitors in different regions.

Where to configure it

In the console: the "Challenge policies" tab on the CC rules page. Create a policy for a site, save, then click "Publish to edge". Rules reference it with the "challenge" action.

Modes

ModeDescription
DelayedPasses automatically after the minimum delay
ClickPasses after the visitor clicks
SliderPasses after the visitor drags the slider
CAPTCHAThe visitor enters a code
ExternalDecided by Tencent Captcha, GeeTest v4, Cloudflare Turnstile or Google reCAPTCHA v3

The first four have the browser do one proof of work. The slider and CAPTCHA pages offer "Use waiting verification instead", which waits about 5 seconds and completes the proof of work, for screen reader users.

Settings

SettingRangeDescription
Priority1 to 1000000Order when a site has several policies
Minimum delay5 to 10 secondsDelayed mode only
Challenge validity10 to 300 secondsTime to finish verification after the page opens
Pass validity1 to 3600 secondsHow long a visitor stays verified
Clock skew0 to 30 secondsAllowed time offset
Failure window, failures per window1 to 3600 seconds, 1 to 20A visitor exceeding the failures in the window is blocked temporarily
IP bindingNone, IP only, User-Agent only, IP and User-AgentWhat the credential is bound to; a change of the bound item requires verifying again
Proof-of-work difficulty12 to 24, default 18The browser computes 2 to the power of the difficulty hashes; each step doubles it
Bypass pathsUp to 32One per line, such as prefix /health/; these paths are not verified

External verification

Choosing "External" adds a section:

SettingDefaultDescription
External providerNoneTencent Captcha, GeeTest v4, Cloudflare Turnstile, Google reCAPTCHA v3
Site key / App IDNoneThe application identifier from the provider console
SecretNoneAt least 16 characters; shown as "configured" after saving, leave empty to keep it
Score threshold0.5reCAPTCHA v3 only, 0.1 to 0.9; scores below it fail
When the provider is unavailableFall back to built-in verification (click plus computation)The other option pauses access and asks to retry later

Add the site domain to the provider console's allowed domains, otherwise the widget reports an error. After changing provider, enter the Site key and Secret again. After saving the credential, click "Publish to edge" to deliver it to nodes.

FAQ

The widget reports an error after saving

Confirm the domain is in the provider's allowed domains and that the Site key and Secret belong to the same application.

Saving the credential failed

The policy itself is saved. The page shows "Retry saving credential"; check and retry.

Built-in or external

Built-in verification is done by the node and needs no third party. External verification is decided by the selected service, its strength depends on that service, and it does not use the node's proof of work.