Cloudflare Turnstile parece una casilla de verificación, pero no es un CAPTCHA en el sentido antiguo: normalmente no hay nada que resolver. Ejecuta unos pocos cientos de milisegundos de JavaScript en tu navegador, puntúa lo real que parece ese navegador y emite un token. Si tu scraper no puede ejecutar ese JS de forma convincente, nunca obtienes un token válido, y cada solicitud que necesita uno vuelve como un desafío.
Por eso las soluciones habituales de scraping no hacen nada por Turnstile. Rotar proxies, configurar cabeceras, incluso enviar una huella TLS de navegador perfecta — nada de eso importa si el desafío de JavaScript nunca se ejecuta. Esta guía explica qué mide Turnstile en realidad y las formas realistas de superarlo en 2026.
Turnstile es una "prueba de navegador", no una "prueba de humano". Cuando el widget se carga, ejecuta silenciosamente una batería de verificaciones y las introduce en una puntuación:
requests, httpx, curl) no puede producir un token en absoluto.navigator.webdriver, artefactos de CDP, plugins ausentes o falsos, y las señales de CDP/headless que sobreviven incluso después de parchear las banderas obvias.El token que obtienes está vinculado a tu IP y a una ventana de tiempo corta. Así que incluso un token válido "prestado" de otro lugar falla si luego lo usas desde un exit distinto.
Los proxies mueven exactamente una de esas señales: la reputación de IP. Eso importa — un ASN residencial limpio puede elevar una puntuación límite por encima del umbral — pero no puede fabricar un token. Si estás golpeando Turnstile con un cliente HTTP, ningún proxy lo arregla, porque no hay navegador que ejecute el desafío. El proxy es necesario pero no suficiente.
El camino más fiable es ejecutar de verdad el desafío en un navegador real y bien disfrazado — Playwright o Puppeteer con parches antidetección, o un navegador orientado a stealth. El token se genera de forma natural, en tu IP, en un entorno real:
from playwright.sync_api import sync_playwright
proxy = {"server": "socks5h://us.jibaoproxy.com:913",
"username": "USERNAME", "password": "PASSWORD"}
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy=proxy)
page = browser.new_page()
page.goto("https://target.site")
page.wait_for_timeout(4000) # let Turnstile run and settle
# the cf token is now in the form; submit / read it as the site expects
token = page.eval_on_selector(
"input[name='cf-turnstile-response']", "el => el.value")
print("token:", token[:20], "...")
browser.close()
Ejecuta en modo headful (o una compilación headless real), mantén el entorno del navegador consistente y enrútalo a través de un exit residencial para que la puntuación de la IP concuerde con la puntuación del navegador. Las dos tienen que coincidir — un navegador perfecto en una IP de centro de datos sigue puntuando mal.
Servicios como 2Captcha, CapSolver y otros ejecutarán el desafío por ti y devolverán un token vía API. Son útiles a escala, pero con dos pegas que hacen tropezar a la gente:
Turnstile normalmente se ejecuta en un modo "gestionado" no interactivo: si tu puntuación es lo bastante alta, emite un token sin casilla y sin fricción. La "evasión" más barata suele ser simplemente parecer lo bastante real como para que nunca te desafíen — una huella de navegador limpia más una IP residencial con buena reputación de ASN. Lleva la puntuación por encima del umbral y Turnstile te deja pasar en silencio.
navigator.webdriver y las señales de CDP, o la puntuación se mantiene baja.Los nuevos usuarios reciben 500MB al registrarse, más un bono en la primera recarga. Oferta por tiempo limitado.