ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo detectar el bloqueo de Cloudflare
Tutorial

Cómo detectar el bloqueo de Cloudflare

Cree un detector que marque los desafíos de Cloudflare para que su raspador pueda recurrir a una API administrada como Scavio en lugar de volver a intentarlo.

Obtener clave API gratisDocumentacion API

Cloudflare bloquea agresivamente los scrapers en 2026, y "bloqueado por Cloudflare durante 3 días" es el hilo principal en r/vibecoding. La solución es detectar temprano la página de desafío de Cloudflare y enrutar las URL afectadas a una API administrada. Este tutorial muestra cómo construir el detector y retroceder limpiamente.

Requisitos previos

  • Python 3.8+
  • solicita biblioteca
  • Una clave API de Scavio (como alternativa)

Guia paso a paso

Paso 1: Identificar firmas de respuesta de Cloudflare

Los desafíos de Cloudflare devuelven un 403 o 503 con marcadores HTML específicos.

Python
CF_MARKERS = [
    'cf-browser-verification',
    'cf_chl_opt',
    'checking your browser',
    'ray id'
]

Paso 2: Construye el detector

Devuelve True si la respuesta contiene algún marcador de Cloudflare.

Python
def is_cloudflare_blocked(response):
    if response.status_code in (403, 503):
        return True
    body = response.text.lower()
    return any(m in body for m in CF_MARKERS)

Paso 3: Pruebe primero el raspado directo

Intente una búsqueda directa con un agente de usuario similar a un navegador.

Python
import requests

HEADERS = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'}

def try_direct(url):
    r = requests.get(url, headers=HEADERS, timeout=10)
    return r if not is_cloudflare_blocked(r) else None

Paso 4: Regresar a Scavio

Cuando esté bloqueado, diríjase a través del extractor administrado de Scavio.

Python
import os

def fallback_scavio(url):
    r = requests.post('https://api.scavio.dev/api/v1/extract',
        headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
        json={'url': url, 'render_js': True, 'bypass_cloudflare': True})
    return r.json()

Paso 5: Combinar en un buscador resistente

Pruebe directamente, recurra a la detección.

Python
def resilient_fetch(url):
    direct = try_direct(url)
    if direct:
        return {'source': 'direct', 'content': direct.text}
    print(f'Cloudflare detected on {url}, falling back to Scavio')
    return {'source': 'scavio', 'content': fallback_scavio(url).get('html', '')}

Ejemplo en Python

Python
import os, requests

CF_MARKERS = ['cf-browser-verification', 'cf_chl_opt', 'checking your browser', 'ray id']
HEADERS = {'User-Agent': 'Mozilla/5.0'}

def is_cf(response):
    return response.status_code in (403, 503) or any(m in response.text.lower() for m in CF_MARKERS)

def fetch(url):
    try:
        r = requests.get(url, headers=HEADERS, timeout=10)
        if not is_cf(r):
            return r.text
    except Exception:
        pass
    r = requests.post('https://api.scavio.dev/api/v1/extract',
        headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
        json={'url': url, 'render_js': True, 'bypass_cloudflare': True})
    return r.json().get('html', '')

print(fetch('https://example-cloudflare-site.com')[:200])

Ejemplo en JavaScript

JavaScript
const CF_MARKERS = ['cf-browser-verification', 'cf_chl_opt', 'checking your browser', 'ray id'];

async function fetchResilient(url) {
  try {
    const r = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' } });
    const body = (await r.text()).toLowerCase();
    if (r.ok && !CF_MARKERS.some(m => body.includes(m))) return body;
  } catch {}
  const r = await fetch('https://api.scavio.dev/api/v1/extract', {
    method: 'POST',
    headers: { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ url, render_js: true, bypass_cloudflare: true })
  });
  return (await r.json()).html;
}
console.log(await fetchResilient('https://example-cloudflare-site.com'));

Salida esperada

JSON
When the target URL is not blocked, the direct fetch succeeds and returns the HTML. When blocked, the detector prints a Cloudflare alert and Scavio's extractor returns the page content anyway.

Tutoriales relacionados

  • Cómo crear un agente de investigación de DEG
  • Cómo eliminar los comentarios de publicaciones de LinkedIn

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.8+. solicita biblioteca. Una clave API de Scavio (como alternativa). Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de búsqueda resistentes a Cloudflare en 2026

Read more
Best Of

Las mejores API de búsqueda no se verán afectadas por el bloqueo de Cloudflare en mayo de 2026

Read more
Comparison

Search APIs (Scavio, Tavily, SerpAPI) vs Headless Browser (Playwright, Puppeteer, Browserbase)

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Glossary

Comparación gratuita de niveles de API de búsqueda

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

Empieza a construir

Cree un detector que marque los desafíos de Cloudflare para que su raspador pueda recurrir a una API administrada como Scavio en lugar de volver a intentarlo.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad