
Herramienta de bypass de Cloudflare Turnstile | Herramienta de bypass de Cloudflare basada en el modo UC de SeleniumBase | Compatible con Mac/Windows/Linux
Un conjunto de herramientas multiestrategia para investigar y probar flujos de Cloudflare Turnstile / Challenge en macOS, Windows y Linux.
Un conjunto de herramientas multienfoque para investigación y pruebas autorizadas de Cloudflare Turnstile / Challenge, compatible con Mac / Windows / Linux.
Inglés
Este proyecto está destinado únicamente a la investigación educativa y las pruebas de automatización autorizadas. Debes cumplir con las leyes aplicables y los términos de servicio de cualquier sitio web objetivo.
Chino
Este proyecto se ofrece únicamente para investigación y estudio y pruebas de automatización autorizadas. Al usarlo, debes cumplir con las leyes y regulaciones locales y con los términos de servicio del sitio objetivo.
Inglés
Las defensas de Cloudflare en 2025–2026 son por capas: reputación de red, huella digital TLS/HTTP, desafíos de JavaScript, interacción con Turnstile y señales de protocolo de automatización. Un único cliente HTTP no es suficiente para Turnstile.
Este repositorio ofrece cinco estrategias ejecutables más un envoltorio basado en clases, para que puedas elegir la vía adecuada para investigación de una sola sesión, trabajos por lotes, control CDP puro o reutilización a nivel TLS de una sesión ya resuelta.
Línea base recomendada (vía de código abierto):
Headed real Chrome
+ optional residential / high-quality egress IP
+ UC reconnect or pure CDP
+ OS-level captcha click when interaction is required
No recomendado como vía principal para Turnstile:
True headless hard-target Managed Turnstile
Pure curl_cffi / tls-client against Turnstile
playwright-stealth alone as a “one-click” solution
Chino
En 2025–2026, la detección de Cloudflare está por capas: reputación de red, huella TLS/HTTP, JS Challenge, interacción con Turnstile y características de protocolo de automatización. Un cliente HTTP por sí solo no puede resolver Turnstile.
Este repositorio ofrece 5 estrategias ejecutables y 1 entrada de envoltorio de clases, que cubren investigación de una sola sesión, tareas por lotes, control CDP puro y reutilización de sesión a nivel TLS después de que el navegador lo resuelva.
Línea base más estable en escenarios de código abierto:
Headed real Chrome
+ optional residential / high-quality egress IP
+ UC reconnect or pure CDP
+ OS-level captcha click when interaction is required
No se recomienda como vía principal para Turnstile:
True headless hard-target Managed Turnstile
Pure curl_cffi / tls-client against Turnstile
playwright-stealth alone as a “one-click” solution
| Limitación | Detalle |
|---|---|
| Sin runtime de JS | No puede completar Turnstile / Challenge PoW moderno |
| Sin DOM / APIs web | Faltan señales de navigator, WebGL y canvas |
| Sin interacción |
| Elemento | Requisito |
|---|---|
Los paquetes de Python se enumeran en requirements.txt (SeleniumBase, nodriver, curl_cffi, OpenCV headless, pyvirtualdisplay, etc.).
Las dependencias de Python están en requirements.txt (incluye SeleniumBase, nodriver, curl_cffi, OpenCV headless, pyvirtualdisplay, etc.).
git clone https://github.com/1837620622/cloudflare-bypass-2026.git
cd cloudflare-bypass-2026
pip install -r requirements.txt
Instala Google Chrome antes de ejecutar los scripts basados en navegador.
Instala primero Google Chrome y luego ejecuta las soluciones basadas en navegador.
git clone https://github.com/1837620622/cloudflare-bypass-2026.git
cd cloudflare-bypass-2026
sudo bash install_linux.sh
Alternativa manual:
sudo apt-get update
sudo apt-get install -y xvfb libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libgbm1 libasound2
python3 -m pip install -r requirements.txt
Notas
.deb oficiales de Chrome son principalmente amd64. En hosts ARM, instala tú mismo una compilación de Chromium/Chrome compatible.# Install dependencies / 安装依赖
pip install -r requirements.txt
# Method 1 — UC Mode (recommended default) / 方案1 默认推荐
python bypass.py https://example.com
python bypass.py https://example.com -p http://127.0.0.1:7890 -t 90
# Method 5 — CDP Mode / 方案5 CDP
python bypass_cdp.py https://example.com
# Method 3 — nodriver / 方案3
python bypass_nodriver.py https://example.com
Reemplaza https://example.com por un objetivo que estés autorizado a probar.
Reemplaza la URL de ejemplo por la dirección de un objetivo que tengas derecho a probar.
bypass.py (predeterminado)Sesión única de Chrome mediante el Modo UC de SeleniumBase: uc_open_with_reconnect + uc_gui_click_captcha / uc_gui_handle_captcha.
Modo UC de navegador único: abre la página tras desconexión y, cuando se detecte un desafío, realiza un clic a nivel de sistema.
python bypass.py https://example.com
python bypass.py https://example.com -p http://127.0.0.1:7890
python bypass.py https://example.com -t 90 --incognito
simple_bypass.pyPara lotes con múltiples proxies o múltiples navegadores. Los clics de GUI a nivel de sistema operativo no son seguros en varias ventanas dentro de un mismo escritorio; los trabajadores en paralelo pueden disputarse el mouse.
Adecuado para procesamiento por lotes con múltiples proxies o navegadores. Los clics a nivel de sistema operativo no son seguros para múltiples ventanas en el mismo escritorio; en paralelo pueden interferir entre sí.
python simple_bypass.py https://example.com
python simple_bypass.py https://example.com -r -f proxy.txt -c
python simple_bypass.py https://example.com -P -b 3 -t 30 -n 5 -c
bypass_nodriver.pyControl CDP sin chromedriver. El clic del desafío usa verify_cf() (coincidencia de plantilla con OpenCV). La licencia upstream es AGPL-3.0.
Control CDP sin chromedriver. El clic del desafío usa verify_cf() (coincidencia de plantillas de OpenCV). La licencia upstream es AGPL-3.0.
pip install "nodriver>=0.50.0" opencv-python-headless
python bypass_nodriver.py https://example.com
python bypass_nodriver.py https://example.com -p http://127.0.0.1:7890
La redistribución comercial de código cerrado de componentes AGPL requiere una revisión de cumplimiento por separado.
Antes de distribuir comercialmente componentes AGPL en código cerrado, completa tu propia evaluación de cumplimiento.
bypass_curl_cffi.py (no para Turnstile)Solo suplantación de huella HTTP/TLS. Adecuado para desafíos débiles o heredados, o para reutilizar cookies obtenidas por un solucionador de navegador con User-Agent e IP de salida coincidentes.
Solo imitación de huella HTTP/TLS. Adecuado para desafíos de baja protección o versiones antiguas, o para reutilizar cookies resueltas por el navegador siempre que la UA y la IP de salida coincidan.
python bypass_curl_cffi.py https://example.com
python bypass_curl_cffi.py https://example.com -f chrome146
python bypass_curl_cffi.py https://example.com -p http://127.0.0.1:7890
Las huellas comunes incluyen: chrome120, chrome124, chrome131, chrome136, chrome142, chrome146, firefox135, firefox144, safari17_0, safari18_0, edge101.
bypass_cdp.pyModo CDP de SeleniumBase (sb_cdp): solve_captcha() con respaldo de gui_click_captcha(). Vía de actualización preferida junto al Modo UC en 2026.
Modo CDP de SeleniumBase: prioriza solve_captcha() y recurre a gui_click_captcha() si falla. En 2026, es la vía de actualización junto con UC.
python bypass_cdp.py https://example.com
python bypass_cdp.py https://example.com -p http://127.0.0.1:7890 -t 90
| Argumento | Descripción | Predeterminado |
|---|
bypass_seleniumbase.pyEnvoltorio UC orientado a objetos para integrarlo en proyectos más grandes.
Encapsulado UC orientado a objetos, fácil de integrar en proyectos más grandes.
python bypass_seleniumbase.py https://example.com -p http://127.0.0.1:7890
bypass.py)from bypass import bypass_cloudflare
result = bypass_cloudflare(
"https://example.com",
proxy="http://127.0.0.1:7890",
timeout=90,
save_cookies=True,
)
if result["success"]:
print(result["cf_clearance"])
print(result["user_agent"])
print(result["cookies"])
else:
print(result["error"])
bypass_seleniumbase.py)from bypass_seleniumbase import bypass_and_get_cookies
result = bypass_and_get_cookies(
"https://example.com",
proxy="http://127.0.0.1:7890",
session_name="demo",
)
if result["success"]:
print(result["cf_clearance"])
from bypass_nodriver import bypass_sync
result = bypass_sync("https://example.com", timeout=60.0)
from bypass_curl_cffi import bypass_cloudflare_http
# Optional: reuse browser-solved cookies
result = bypass_cloudflare_http(
"https://example.com",
fingerprint="chrome146",
cookies={"cf_clearance": "..."}, # optional
)
Archivo: proxy.txt (una entrada por línea) / Un proxy por línea:
127.0.0.1:7890
http://127.0.0.1:7890
socks5://127.0.0.1:1080
http://user:pass@host:port
La mayoría de los proxies públicos gratuitos no admiten HTTPS CONNECT de forma fiable. Para investigación en producción, prefiere proveedores residenciales verificados o de alta calidad.
La gran mayoría de los proxies públicos gratuitos no pueden admitir de forma estable túneles HTTPS. En entornos de investigación y producción, usa proxies residenciales verificados o de alta calidad.
Las cookies se escriben en output/cookies/ cuando el guardado está habilitado.
Cuando el guardado está habilitado, las cookies se escriben en output/cookies/.
Ejemplo JSON
{
"url": "https://example.com",
"cookies": {
"cf_clearance": "..."
},
"user_agent": "Mozilla/5.0 ...",
"timestamp": "20260714_120000",
"method": "seleniumbase_uc"
}
cf_clearance frecuentemente está vinculada a IP + User-Agent. Cambiar cualquiera de los dos suele requerir una nueva resolución.
cf_clearance suele estar vinculada a IP + User-Agent. Cambiar cualquiera de los extremos generalmente requiere volver a resolver.
cloudflare-bypass-2026/
├── bypass.py # Method 1: SeleniumBase UC (default)
├── simple_bypass.py # Method 2: parallel + proxy rotation
├── bypass_nodriver.py # Method 3: nodriver CDP
├── bypass_curl_cffi.py # Method 4: TLS fingerprint (non-Turnstile)
├── bypass_cdp.py # Method 5: SeleniumBase CDP Mode
├── bypass_seleniumbase.py # UC class wrapper
├── install_linux.sh # Linux bootstrap
├── requirements.txt # Python dependencies
├── proxy.txt # Sample proxy list
├── LICENSE
├── README.md
└── output/ # Runtime cookie exports (created on use)
¿Qué método debo usar primero?
¿Qué método tiene prioridad?
Empieza con bypass.py o bypass_cdp.py. Usa bypass_nodriver.py cuando quieras una pila CDP sin chromedriver. Usa simple_bypass.py para lotes o rotación de proxies. No uses bypass_curl_cffi.py para Turnstile.
Usa primero bypass.py o bypass_cdp.py. Cuando necesites CDP sin chromedriver, usa bypass_nodriver.py. Para lotes y rotación de proxies, usa simple_bypass.py. No uses bypass_curl_cffi.py para Turnstile.
¿Por qué evitar el modo headless real?
¿Por qué se evita el modo headless real?
Los perfiles headless de automatización son más fáciles de identificar. En servidores Linux sin escritorio, usa Xvfb / pantalla virtual (install_linux.sh, pyvirtualdisplay o SeleniumBase xvfb=True) en lugar de Chrome headless.
Las características de automatización headless son más fáciles de detectar. En Linux sin escritorio, usa Xvfb / pantalla virtual, no el modo headless real de Chrome.
¿Cuánto dura cf_clearance?
¿Cuál es la validez de cf_clearance?
Normalmente, decenas de minutos o varias horas, según la política del sitio. Suele estar vinculada a la IP y la UA; los cambios de proxy frecuentemente la invalidan.
Generalmente de decenas de minutos a horas, según la política del sitio; suele estar vinculada a la IP y la UA, y tras cambiar de proxy a menudo hay que resolver de nuevo.
Error de Linux: fallo de X11 / pantalla
Linux reporta error X11 / fallo de display
sudo bash install_linux.sh
# or / 或
sudo apt-get install -y xvfb
pip install pyvirtualdisplay
El proxy no funciona
Proxy no disponible
Confirma el soporte de HTTPS CONNECT y la autenticación. Las listas públicas gratuitas son en su mayoría inutilizables para esta carga de trabajo.
Confirma que el proxy admite HTTPS CONNECT y autenticación. Las listas públicas gratuitas son en su mayoría inutilizables para este escenario.
nodriver informa que falta OpenCV
nodriver avisa que falta OpenCV
pip install opencv-python-headless
¿Existe un bypass universal?
¿Existe una solución que lo supere todo?
No. Las defensas evolucionan continuamente. Los resultados dependen de la configuración del objetivo, la reputación de salida, la fidelidad del navegador y el momento. Este kit de herramientas no afirma un éxito universal.
No. Las defensas evolucionan continuamente. Los resultados dependen de la configuración del objetivo, la reputación de salida, la fidelidad del navegador y el momento. Esta herramienta no afirma superarlo todo.
Se aceptan patrocinios, desarrollo personalizado y consultoría técnica.
Bienvenidos los acuerdos de patrocinio, desarrollo personalizado y consultoría técnica.
| Canal | Contacto |
|---|---|
| WeChat / WeChat | 1837620622 (传康Kk) |
| Email / Correo electrónico | [email protected] |
| Xianyu / Bilibili | 万能程序员 |
Contacta primero por WeChat e indica Negocio / Colaboración comercial.
Contacta primero por WeChat y deja la nota «Colaboración comercial».
El código del repositorio se distribuye bajo la Licencia MIT (consulta LICENSE).
nodriver está licenciado bajo AGPL-3.0. Usar el Método 3 requiere cumplir esa licencia.
El código de este repositorio se distribuye bajo la Licencia MIT (ver LICENSE).
nodriver es upstream AGPL-3.0. Al usar el esquema 3, debes cumplir su licencia.
Si este proyecto te resulta útil, considera dar una estrella al repositorio.
Si este proyecto te ayuda, eres bienvenido a apoyarlo con una estrella (Star).
| Referencias | Referencias |
| Negocio | Negocio |
| Licencia | Licencia |
| # | Script | Estrategia | Turnstile | Ideal para |
|---|
| 1 | bypass.py | Modo UC de SeleniumBase | Sí | Vía predeterminada de una sola sesión / Ruta principal de sesión única |
| 2 | simple_bypass.py | UC + paralelo / rotación de proxy | Sí | Trabajos por lotes; posible contención de clics de GUI / Tareas por lotes; en paralelo puede haber disputa por el mouse del sistema |
| 3 | bypass_nodriver.py | nodriver CDP puro | Sí | CDP sin chromedriver; requiere OpenCV; AGPL-3.0 / Sin chromedriver; requiere OpenCV; atención a AGPL |
| 4 | bypass_curl_cffi.py | Huella TLS / reutilización de cookies | No | Solo desafío JS heredado o reutilización de cookies tras resolver / Solo Challenge antiguo o reutilización de cookies |
| 5 | bypass_cdp.py | Modo CDP de SeleniumBase | Sí | Vía sucesora de UC simple en 2026 / Vía sucesora de UC |
| — | bypass_seleniumbase.py | Envoltorio de clase UC | Sí | API integrable para desarrollo secundario / Envoltorio de desarrollo secundario importable |
| Prioridad | Elección | Notas |
|---|
| 1 | bypass.py o bypass_cdp.py | Entrada principal de investigación / Entrada principal |
| 2 | bypass_nodriver.py | Alternativa CDP sólida; revisa AGPL / Alternativa potente; atención a la licencia |
| 3 | simple_bypass.py | Rendimiento / rotación; serializa los clics de GUI si es necesario / Rendimiento y rotación; los clics de GUI deben ser en serie |
| 4 | Resolver con navegador y luego reutilizar curl_cffi | Mantén la misma UA y la misma IP de salida / Debes mantener la UA y la IP de salida consistentes |
| Evitar | HTTP puro contra Turnstile | No ejecutará JS ni interactuará / Incapaz de ejecutar JS e interactuar |
| El modo gestionado requiere un clic real en la casilla |
| TLS es solo una señal | La coincidencia JA3/JA4 no es suficiente por sí sola |
| Característica | Descripción |
|---|
| Modo UC de SeleniumBase | Desconexión-reconexión del driver + clic de captcha a nivel de sistema operativo |
| Modo CDP de SeleniumBase | Vía CDP pura con señales reducidas de adjunto de WebDriver |
| nodriver CDP | Sin chromedriver; clic de plantilla verify_cf() (OpenCV) |
| Paralelo / rotación de proxy | Trabajadores por lotes y rotación de archivo de proxy en simple_bypass.py |
| Control de tiempo de espera | Tiempo de espera de extremo a extremo en los flujos principales |
| Exportación de cookies | Formatos JSON y Netscape cuando corresponda |
| Multiplataforma | macOS, Windows, Linux (Linux necesita Xvfb si el host es headless) |
| Python |
| 3.9+ |
| Navegador | Google Chrome (o Chromium en Linux que no sea amd64) |
| Pantalla | Se prefiere GUI con ventanas; servidores Linux: Xvfb / pantalla virtual |
| SO | macOS, Windows, Linux |
| Proxy opcional | HTTP / HTTPS / SOCKS5 con HTTPS CONNECT funcional |
| Argumento | Descripción | Predeterminado |
|---|
url | URL objetivo | obligatorio |
-p, --proxy | URL del proxy | ninguno |
-t, --timeout | Tiempo de espera total (segundos) | 60 |
-r, --reconnect | Ventana de desconexión para reconexión | 5 |
--incognito | Perfil de incógnito | desactivado |
--no-save | No escribir cookies | desactivado |
| Argumento | Descripción | Predeterminado |
|---|
-p, --proxy | Proxy fijo | ninguno |
-f, --proxy-file | Archivo de lista de proxies | proxy.txt |
-r, --rotate | Rotación secuencial de proxies | desactivado |
-P, --parallel | Navegadores en paralelo | desactivado |
-b, --batch | Navegadores por lote | 3 |
-t, --timeout | Tiempo de espera (segundos) | 60 |
-n, --retries | Máximo de lotes o intentos de proxy | 3 |
-c, --check-proxy | Comprobación previa de disponibilidad del proxy | desactivado |
-w, --wait | Espera de página / espera de reconexión | 5 |
--no-save | No escribir cookies | desactivado |
| Argumento | Descripción | Predeterminado |
|---|
-p, --proxy | URL del proxy | ninguno |
-t, --timeout | Tiempo de espera total | 60 |
--headless | Headless (no recomendado) | desactivado |
--no-save | No escribir cookies | desactivado |
| Argumento | Descripción | Predeterminado |
|---|
-p, --proxy | URL del proxy | ninguno |
-f, --fingerprint | Perfil de imitación | chrome136 |
-t, --timeout | Tiempo de espera de solicitud | 30 |
-n, --retries | Número de reintentos | 3 |
--no-save | No escribir cookies | desactivado |
-p, --proxy | URL del proxy | ninguno |
-t, --timeout | Presupuesto total de tiempo de espera | 60 |
--no-save | No escribir cookies | desactivado |
| Campo | Tipo | Significado |
|---|
success | bool | Si se obtuvo una vía de autorización utilizable / Si se obtuvo un resultado de paso utilizable |
cookies | dict | Mapa de nombre a valor / Diccionario de cookies |
cf_clearance | str o None | Cookie de autorización de Cloudflare cuando está presente |
user_agent | str o None | UA del navegador usada en la sesión / UA de la sesión |
error | str o None | Motivo del fallo / Causa del error |
method | str | Identificador de estrategia / Identificador del esquema |
| Prefijo | Origen |
|---|
cookies_*.json / cookies_*.txt | bypass.py, simple_bypass.py |
cookies_cdp_*.json | bypass_cdp.py |
cookies_nodriver_*.json / cookies_nodriver_*.txt | bypass_nodriver.py |
cookies_curl_*.json / cookies_curl_*.txt | bypass_curl_cffi.py |