Crawl4AI y Firecrawl se han convertido en la forma por defecto de alimentar datos web a las pipelines de LLM — rastrean, renderizan y devuelven Markdown limpio que tu modelo realmente puede usar. Luego los apuntas a un objetivo real y descubres lo que todo scraper acaba aprendiendo: la capa de extracción nunca fue la parte difícil. La parte difícil es que tu rastreador se ejecuta desde una sola IP de centro de datos, y la web puede verlo.
Esta guía muestra la configuración de proxy funcional para ambas herramientas — Crawl4AI autoalojado y ambos modos de Firecrawl — más la estrategia de sesión que evita que los trabajos de ingesta para RAG mueran en la página 50. Amplía nuestra guía de proxies para agentes de IA y la guía de browser-use a los frameworks de crawling.
Crawl4AI (open-source, autoalojado) acepta proxies a nivel de BrowserConfig — un proxy por instancia de rastreador:
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
browser_cfg = BrowserConfig(
headless=True,
proxy_config={
"server": "us.jibaoproxy.com:913",
"username": "USERNAME",
"password": "PASSWORD",
},
)
async with AsyncWebCrawler(config=browser_cfg) as crawler:
result = await crawler.arun(
url="https://example.com/docs",
config=CrawlerRunConfig(),
)
print(result.markdown[:500])
Para rastreos profundos, rota la identidad por instancia de rastreador, no por página — las páginas dentro de una misma visita al sitio deberían compartir una IP de salida (un humano no cambia de ciudad entre la página 3 y la página 4):
def crawler_for(site_id: str) -> BrowserConfig:
# Sticky session per site: cookies + IP move together
return BrowserConfig(
headless=True,
proxy_config={
"server": "us.jibaoproxy.com:913",
"username": f"USERNAME-session-{site_id}",
"password": "PASSWORD",
},
)
# site A crawled through exit A, site B through exit B, in parallel
API en la nube: el proxy es un parámetro de la petición — Firecrawl enruta a través de sus propios pools. Controlas el nivel de calidad, no las IP:
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR-KEY")
result = app.scrape_url(
"https://example.com/pricing",
params={"proxy": "stealth"}, # basic | stealth | auto
)
La pega: las peticiones de nivel stealth se facturan a un múltiplo de los créditos basic, y no puedes fijar países con precisión ni mantener sesiones sticky entre llamadas. Bien para páginas ocasionales; caro e impreciso a volumen de ingesta.
Firecrawl autoalojado: proporcionas tu propio proxy mediante variables de entorno, con control total:
# .env for self-hosted Firecrawl
PROXY_SERVER=http://us.jibaoproxy.com:1000
PROXY_USERNAME=USERNAME
PROXY_PASSWORD=PASSWORD
Autoalojado + tu propia puerta de enlace residencial es la configuración racional en cuanto a coste una vez que ingieres a escala: pagas por GB de ancho de banda en lugar de créditos por página con un multiplicador de stealth.
semaphore_count / delay de Crawl4AI existen para esto — 2–4 páginas concurrentes por sitio es de sobra; reparte el paralelismo entre sitios.ETag/Last-Modified donde el framework lo permita.| Configuración | Pagas por | Mejor cuando |
|---|---|---|
| Firecrawl en la nube, proxy stealth | Créditos por página × multiplicador de stealth | Bajo volumen, cero operaciones |
| Firecrawl autoalojado + GB residenciales | Solo ancho de banda (~$10/GB) | Volumen de ingesta constante |
| Crawl4AI + GB residenciales | Solo ancho de banda, control total | Pipelines a medida, rastreos profundos |
Una página típica con mucho texto cuesta 100–300 KB a través de un proxy — aproximadamente 3.000–10.000 páginas por GB. Los bucles de bloqueo-y-reintento son lo que dispara el presupuesto, lo cual es otra razón para arreglar la detección antes de escalar el volumen.
proxy_config en BrowserConfig; identidad sticky por sitio, rota entre sitios.proxy: "stealth", costoso a volumen; autoalojado: tu propia puerta de enlace vía variables de entorno.Salidas residenciales, sesiones sticky, precio por GB — 500MB de tráfico gratis, sin tarjeta requerida.
Empezar prueba gratisLos nuevos usuarios reciben 500MB al registrarse, más un bono en la primera recarga. Oferta por tiempo limitado.