Saltar al contenido principal
Firecrawl ofrece distintos tipos de proxy para ayudarte a hacer scraping en sitios web con diversos niveles de protección antibots. El tipo de proxy puede especificarse mediante el parámetro proxy.

Tipos de proxy

Firecrawl admite tres tipos de proxy:
  • basic: Proxy para extraer sitios con protección anti-bot nula o básica. Es rápido y suele funcionar.
  • stealth: Proxy sigiloso para extraer sitios con protecciones anti-bot avanzadas. Es más lento, pero más confiable en ciertos sitios.
  • auto: Firecrawl volverá a intentar automáticamente la extracción con un proxy sigiloso si falla el básico. Si el reintento con stealth tiene éxito, se cobrarán 5 créditos por la extracción. Si el primer intento con basic tiene éxito, solo se cobrará el costo regular.
Si no especificas un proxy, Firecrawl usará auto por defecto.

Uso del modo stealth

Al extraer datos de sitios web con protección anti-bot avanzada, puedes usar el modo de proxy stealth para mejorar la tasa de éxito.
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key='fc-YOUR-API-KEY')

# Elige la estrategia de proxy: 'basic' | 'stealth' | 'auto'
doc = firecrawl.scrape('https://example.com', formats=['markdown'], proxy='auto')

print(doc.warning or 'ok')
Nota: Las solicitudes con proxy stealth cuestan 5 créditos por solicitud cuando se usan.

Usar Stealth como mecanismo de reintento

Un patrón común es intentar primero hacer scraping con la configuración de proxy predeterminada y luego reintentar con el modo Stealth si aparecen códigos de estado de error específicos (401, 403 o 500) en el campo metadata.statusCode de la respuesta. Estos códigos pueden indicar que el sitio web está bloqueando tu solicitud.
# pip install firecrawl-py

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="YOUR_API_KEY")

# Primero intenta con el proxy básico
try:
    content = firecrawl.scrape("https://example.com")
    
    # Verifica si se recibió un código de estado de error
    status_code = content.get("metadata", {}).get("statusCode")
    if status_code in [401, 403, 500]:
        print(f"Se obtuvo el código de estado {status_code}, reintentando con proxy stealth")
        # Reintentar con el proxy stealth
        content = firecrawl.scrape("https://example.com", proxy="stealth")
    
    print(content["markdown"])
except Exception as e:
    print(f"Error: {e}")
    # Reintentar con el proxy stealth si ocurre una excepción
    try:
        content = firecrawl.scrape("https://example.com", proxy="stealth")
        print(content["markdown"])
    except Exception as e:
        print(f"El proxy stealth también falló: {e}")
Este enfoque te permite optimizar el uso de créditos al emplear el modo Stealth solo cuando sea necesario.