Volver al blog

Cómo resolver Cloudflare con Go (chromedp + Scrapeless)

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

09-Jul-2026

TL;DR:

  • Cloudflare puntúa el navegador, no al visitante. Lee la consistencia de la huella digital, señales de comportamiento y la IP de salida, luego establece una cookie cf_clearance para un navegador que confía; por lo tanto, borrar la cookie en Go significa ser un navegador de confianza, no resolver un acertijo.
  • Un stack de navegador local Go falla esa puntuación en tres ejes: la declaración navigator.webdriver, una huella digital predeterminada sin cabeza y una IP de salida del centro de datos. Mantener las evasiones de forma manual es una cinta de correr.
  • El Scrapeless Scraping Browser supera el desafío durante el renderizado — Chromium real autodesarrollado, una huella digital consistente por sesión y salida residencial en más de 195 países, alcanzada a través de un único punto de enlace WebSocket.
  • Tu Go permanece como chromedp estándar. Apunta chromedp.NewRemoteAllocator al punto de enlace de Scrapeless, espera el contenido posterior al desafío y lee la página — el único cambio es la URL de conexión.
  • Verificado en vivo: una sesión Go chromedp sobre el navegador en la nube superó la página del desafío de Cloudflare, leyó el marcador de éxito ¡Has evadido el desafío de Cloudflare! :D, y recibió una cookie cf_clearance.
  • Libre para empezar. Nuevas cuentas de Scrapeless incluyen tiempo de ejecución gratuito para el Scraping Browser — regístrate en app.scrapeless.com.

Un desafío de Cloudflare no es un CAPTCHA de imagen que decodificas. Se ejecuta en segundo plano y califica el navegador que cargó la página — si la huella digital es internamente consistente, si las señales de interacción parecen humanas y si la IP de salida tiene una buena reputación. Cuando la puntuación pasa, Cloudflare establece una cookie cf_clearance y se carga la página real. Cuando no lo hace, obtienes una pantalla intersticial en lugar de contenido.

Eso replantea la tarea en Go. No hay respuesta que enviar; el trabajo consiste en presentar un navegador que Cloudflare ya confía. Un Chromium sin cabeza local impulsado por chromedp no puede: anuncia automatización a través de la propiedad navigator.webdriver, utiliza fuentes y comportamientos de lienzo predeterminados sin cabeza y sale de una IP que los servicios de reputación ya conocen. Puedes mantener tus propias evasiones y luego seguir manteniéndolas a medida que Chromium y los detectores avanzan. Esta guía toma el camino más corto: controla el Scrapeless Scraping Browser desde chromedp estándar, de modo que la huella digital, el comportamiento y la IP de salida se manejen del lado del servidor y el desafío se supere durante un renderizado normal.


Lo que Cloudflare realmente verifica

La propia documentación de Cloudflare describe un paso de verificación que se ejecuta sin interrumpir al visitante. En la práctica, califica tres cosas y concede una cookie cf_clearance — una cookie HTTP estándar — cuando pasan:

Lo que Cloudflare lee Por qué un navegador Go local falla
Consistencia de la huella digital los predeterminados sin cabeza y la bandera webdriver contradicen a un Chrome real
Señales de comportamiento temporización guionizada sin una superficie de navegador coherente
Reputación de la IP de salida las IP de centros de datos tienen una puntuación peor que las residenciales

Un navegador coherente y de confianza es más importante que cualquier evasión individual; por eso mover los tres elementos al lado del servidor es más duradero que los parches hechos a mano.

Por qué Scrapeless Scraping Browser

El Scrapeless Scraping Browser es un navegador en la nube personalizable y anti-detección diseñado para rastreadores web y agentes de IA. Para Cloudflare específicamente, trae:

  • Chromium real autodesarrollado que ejecuta el JavaScript del desafío exactamente como Chrome, por lo que resuelve en lugar de detenerse.
  • Una huella digital consistente por sesión — sin la declaración navigator.webdriver, sin predeterminados sin cabeza filtrándose.
  • Salida residencial en más de 195 países — Cloudflare puntúa la IP de salida, y una región residencial se lee limpia donde una IP de centro de datos no.
  • Persistencia de sesión para que un otorgamiento de cf_clearance pueda reutilizarse en solicitudes en la misma sesión.
  • Una superficie de conexión — cada opción es un parámetro de consulta en el mismo punto de enlace WebSocket.

Obtén tu clave API en el plan gratuito en app.scrapeless.com.


Requisitos previos

  • Un conjunto de herramientas Go (Go 1.21 o más reciente)
  • github.com/chromedp/chromedp y github.com/chromedp/cdproto
  • Una cuenta de Scrapeless y clave API — regístrate en app.scrapeless.com
    Aquí están los detalles de conexión completos que se encuentran en la documentación del Scraping Browser.

Instalación

Añade chromedp a tu módulo. Te conectas a un navegador remoto, por lo que no se requiere Chrome local.

bash Copy
go get github.com/chromedp/chromedp
go get github.com/chromedp/cdproto
export SCRAPELESS_API_KEY=tu_token_api_aquí   # clave gratuita en https://app.scrapeless.com

Conectar y despejar el desafío

chromedp se conecta a un navegador remoto con NewRemoteAllocator. Pasa el endpoint de Scrapeless con chromedp.NoModifyURL para que chromedp use la URL de WebSocket tal como está, luego espera el contenido posterior al desafío. El desafío se resuelve durante la renderización; no hay una llamada de solución separada.

Nota: ejecutar esto necesita un conjunto de herramientas de Go con los módulos chromedp instalados. Este bloque fue verificado en vivo contra el navegador en la nube de Scrapeless; agrega tu clave API y ejecútalo con go run.

go Copy
package main

import (
	"context"
	"fmt"
	"net/url"
	"os"
	"time"

	"github.com/chromedp/cdproto/network"
	"github.com/chromedp/chromedp"
)

func main() {
	q := url.Values{}
	q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
	q.Set("sessionTTL", "180")
	q.Set("proxyCountry", "US")
	endpoint := "wss://browser.scrapeless.com/api/v2/browser?" + q.Encode()
	target := "https://www.scrapingcourse.com/cloudflare-challenge"

	allocCtx, cancel := chromedp.NewRemoteAllocator(context.Background(), endpoint, chromedp.NoModifyURL)
	defer cancel()
	ctx, cancel2 := chromedp.NewContext(allocCtx)
	defer cancel2()
	ctx, cancel3 := context.WithTimeout(ctx, 120*time.Second)
	defer cancel3()

	var cleared string
	var cookies []*network.Cookie
	err := chromedp.Run(ctx,
		chromedp.Navigate(target),
		chromedp.WaitVisible("#challenge-title", chromedp.ByID),
		chromedp.Text("#challenge-title", &cleared, chromedp.ByID),
		chromedp.ActionFunc(func(ctx context.Context) error {
			c, err := network.GetCookies().Do(ctx)
			cookies = c
			return err
		}),
	)
	if err != nil {
		fmt.Println("error:", err)
		os.Exit(1)
	}

	hasClearance := false
	for _, c := range cookies {
		if c.Name == "cf_clearance" {
			hasClearance = true
		}
	}
	fmt.Println("cleared:", cleared)
	fmt.Println("cf_clearance:", hasClearance)
}

Una ejecución en vivo de este programa imprimió cleared: ¡Has superado el desafío de Cloudflare! :D y cf_clearance: true — chromedp estándar, obtenido a través del navegador en la nube.

Obtén tu clave API en el plan gratuito: app.scrapeless.com

Fijar la región para un despeje confiable

Cloudflare evalúa la IP de salida, así que fija proxyCountry a una región residencial. Cambia esto a cualquier código de país ISO. La especificación W3C WebDriver requiere que la automatización conforme exponga el flag webdriver; el navegador en la nube no lo lleva, por lo que una IP limpia tiene una huella limpia junto a ella.

go Copy
q := url.Values{}
q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
q.Set("sessionTTL", "180")
q.Set("proxyCountry", "US") // o "DE", "JP", "CUALQUIERA"

Un scraper local de chromedp está bien hasta que Cloudflare comienza a evaluar el navegador. Luego, la huella del navegador sin cabeza, el flag webdriver y la IP del centro de datos fallan en diferentes verificaciones, y el intersticial reemplaza el contenido. Esos son problemas de huellas, comportamiento e IP — los tres que el navegador en la nube maneja del lado del servidor. Conectarse a Scrapeless los entrega a una sesión gestionada mientras tus acciones de chromedp permanecen estándar.


Lo que obtienes de vuelta

La sesión se comporta como cualquier sesión de chromedp — Navigate, WaitVisible, Text y CDP network.GetCookies funcionan todos. Algunas observaciones honestas al limpiar Cloudflare a través del navegador en la nube:

  • navigator.webdriver está ausente, por lo que la primera verificación que ejecuta Cloudflare se lee como un Chrome real.
  • La IP de salida coincide con proxyCountry — una región residencial limpia con mucha más fiabilidad que una IP de centro de datos.
  • cf_clearance está presente después de un pase — reutiliza la misma sesión para llevar la autorización a través de las solicitudes de seguimiento.
  • Calienta la sesión para páginas obstinadas — carga la página principal del sitio primero en la misma sesión antes de la página protegida, para que la superficie de comportamiento parezca una visita normal.

Conclusión: limpia Cloudflare, mantén tu Go

Limpiar Cloudflare en Go no se trata de decodificar un desafío, sino de presentar un navegador en el que Cloudflare confíe. El Navegador de Scraping sin Residuos maneja las tres cosas que puntúa (huella digital, comportamiento, IP de salida) del lado del servidor, por lo que tu código de chromedp solo cambia su URL de conexión. Fija proxyCountry a una región residencial, espera el contenido posterior al desafío y lee cf_clearance para confirmar el paso. Para ejecutar el mismo navegador en la nube desde Python, consulta la guía de scraper de producción de Scrapling y compara planes en la página de precios de Scrapeless.


¿Listo para construir tu pipeline que limpia Cloudflare?

Únete a nuestra comunidad para reclamar un plan gratuito y conectar con desarrolladores que scrapean sitios protegidos por Cloudflare: Discord · Telegram.

Regístrate en app.scrapeless.com para obtener tiempo de ejecución gratuito del Navegador de Scraping y apunte chromedp al navegador en la nube que limpia Cloudflare durante el renderizado.


FAQ

P: ¿Necesito un servicio separado para resolver CAPTCHA?
No en un navegador que pasa. Cloudflare principalmente puntúa huella digital, comportamiento e IP en segundo plano y emite una cookie cf_clearance. El navegador en la nube está diseñado para pasar esa puntuación durante un renderizado normal, por lo que no hay un paso de rompecabezas separado que configurar.

P: ¿Por qué NewRemoteAllocator con NoModifyURL?
NewRemoteAllocator acopla chromedp a un navegador que no lanzó. NoModifyURL indica a chromedp que utilice la URL de WebSocket de Scrapeless exactamente como se proporciona, en lugar de reescribirla para descubrir un punto final de DevTools local.

P: ¿Necesito un proxy?
No. La salida residencial está integrada; establece proxyCountry a una región o ANY. Cloudflare puntúa la IP de salida, por lo que una región residencial limpia más confiablemente que una dirección de centro de datos.

P: El desafío aún aparece en algunas páginas: ¿qué ayuda?
Fija proxyCountry a una región residencial y calienta la sesión cargando primero la página de inicio del sitio en la misma sesión antes de la página protegida, para que la superficie de comportamiento se lea como una visita normal.

P: ¿Es legal limpiar Cloudflare?
Acceder a datos disponibles públicamente generalmente está permitido, pero las reglas varían según la jurisdicción y el sitio. Revisa los términos de servicio del objetivo, respeta las directivas de robots y consulta a un abogado para cualquier cosa sensible.

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar