click_turnstile
CF Turnstile bypass for embed widgets + template-match fallback
How to use it
click_turnstile is exposed by the MCP Stealth Chrome MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the click_turnstile tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install MCP Stealth Chrome
claude mcp add stealth-chrome -- uvx mcp-stealth-chrome@latestOther tools in MCP Stealth Chrome (39)
Intercept the next N requests matching a URL pattern and return their headers (Authorization, Cookie, X-CSRF-) — for SPAs that hold bearer tokens in JS memory
Click + observe one of navigation / url / text / selector / request / networkidle. Distinguishes real submit from silent invalid-form click
Click top-left/right/bottom-left/right of element
Find image + click its center
Click at % position inside element (not center)
search → fetch top-N sources → markdown + citations, in one call
Compact JSON summary (title/url/headings/fields/actions/errors/navigation) — ~10× fewer tokens than accessibilitysnapshot. waitstable=True waits for SPA hydration via MutationObserver
One-shot: detect anti-bot wall (CF / DataDome / PX / Akamai / Imperva / Kasada) and apply best bypass we have
Identify CF/DataDome/PerimeterX/Kasada/Imperva on current page
Persistent native-dialog handler with type filter (alert / confirm / prompt / beforeunload). Update action without re-arming. Idempotent per tab
Explore a logged-in account without changing anything. Blocks POST/PUT/PATCH/DELETE and records what each WOULD have sent (method, URL, headers, body) while reads still work — click the delete button, then read the exact request that was stopped
Turn a captured request into a runnable curl and an httprequest(impersonate='chrome') call. The second form is the point: plain curl replays with a curl TLS fingerprint, which anti-bot systems flag even when every header matches
OpenCV template match → coordinates
Audit this browser's OWN fingerprint for the leaks detectors read — in-page, nothing leaves the machine. Weights cross-field consistency (a Windows UA on a MacIntel platform) and states what it cannot see from inside a page (TLS/JA3, IP-vs-timezone)
UA/lang/platform/timezone via CDP
Per-field detail (label, framework binding react/vue/solid/lit, validation state, pattern/length constraints, aria-invalid)
Repo / README / issues / releases via GitHub REST API (pure HTTP)
TLS-perfect HTTP via curlcffi (chrome/firefox/safari impersonation)
Authenticated curlcffi request that piggybacks on browser cookies + auto-extracts most recent same-host bearer from networkindex
Inspect which browser cookies match a URL
What was seen, plus whether interception is still active — an empty log cannot be mistaken for "the page sent nothing"
Pause matching requests and observe / cancel / mock them at the CDP layer — catches XHR and anything the page captured before your script ran, which patching window.fetch cannot
End it early; it also disables itself on a deadline so a forgotten intercept cannot wedge the page
Random Bezier wandering (pass behavioral ML)
Full paste-event sequence (ClipboardEvent + DataTransfer + beforeinput inputType:'insertFromPaste') for SolidJS/Svelte 5/Qwik forms that ignore plain dispatchEvent('input')
One URL → clean LLM-ready markdown (stdlib, ~70–98% smaller than raw HTML)
Grep the current page's text (zero-LLM, instant)
Natural browsing pattern (homepage/referer/scroll) before target
HTTP-first; auto-escalates to the stealth browser only when the request is blocked
Fill form by label text (fuzzy match: exact > prefix > substring > token); native value setter for React/Vue. Returns didyoumean candidates on miss
Structured, account-independent Reddit community digest (votes/comments/age)
CapSolver API — Turnstile/reCAPTCHA/hCaptcha
Vision LLM picks matching tiles — solve image challenges (auto-clicks anchor checkbox in v0.2.10+)
Cloudflare checkbox via OpenCV template match
NL → element coordinates: "the red Create button at bottom right" (optional click=True)
Block until a request matching urlpattern is observed (+ optional method filter, + optional response wait) — replaces setTimeout polling
SERP search with no browser and no API key (Bing default, Brave/DuckDuckGo/Exa optional) → {title,url,snippet}
Sequential tool runner with resumable startat index and stoponerror. Failure response includes failurecontext and resumewith hint
Video metadata + transcript (native timedtext, yt-dlp fallback)