Crawlforge MCP
28 herramientas web nativas de MCP para Claude, Cursor y cualquier cliente MCP: scrape y crawl para obtener Markdown limpio o JSON basado en esquemas, extrae con selectores CSS o en inglés sencillo, verifica el ranking orgánico real de Google, analiza documentos, monitorea cambios en páginas, realiza investigación profunda de múltiples fuentes, y entrega a un agente autónomo un prompt sin URLs. La extracción LLM usa por defecto Ollama local — sin clave LLM, nada sale de tu máquina. Licencia MIT. 1,000 créditos gratuitos únicos, sin tarjeta.
Documentación
31 herramientas de scraping web, crawling, investigación profunda y extracción autónoma para Claude, Cursor y cualquier cliente MCP.
Markdown limpio y JSON estructurado desde cualquier sitio. Comienza con 1,000 créditos gratis — sin necesidad de tarjeta de crédito.
⭐ Danos una estrella en GitHub para seguir el proyecto — realmente ayuda a que otros lo descubran.
Tabla de Contenidos
- ¿Por qué CrawlForge?
- CrawlForge vs. alternativas
- Inicio Rápido (2 Minutos)
- Herramientas Disponibles
- Precios
- Configuración Avanzada
- Ejemplos de Uso
- Seguridad y Privacidad
- Soporte
- Contribuciones
🎯 ¿Por qué CrawlForge?
- 31 herramientas nativas MCP — scraping, crawling, búsqueda, seguimiento real de posiciones en Google SERP, investigación profunda, un
agentautónomo, unscrapeunificado multi-formato, procesamiento de documentos, navegación sigilosa, sesiones de navegador con estado, y más, invocables directamente desde tu asistente de IA. - Nivel gratuito generoso — 1,000 créditos para empezar al instante, sin tarjeta de crédito. La concesión es única en lugar de mensual, y los créditos nunca caducan.
- LLM local por defecto —
extract_with_llmfunciona con un modelo local Ollama listo para usar: sin clave de API de LLM, sin costo por token, y tus datos nunca salen de tu máquina. La nube (OpenAI/Anthropic) es opcional. - Salida lista para LLM — Markdown limpio, JSON estructurado (basado en esquemas), capturas de pantalla, enlaces y metadatos desde una sola consulta.
agentautónomo — describe lo que necesitas en lenguaje natural; planifica, recopila y da forma a una respuesta bajo límites estrictos impuestos por el orquestador (máx. pasos/URLs/tiempo) — sin necesidad de URLs.- Seguridad reforzada — protección SSRF en cada solicitud, lista blanca de backend con cierre automático, lista blanca de acciones verificadas para automatización del navegador, y control de créditos por herramienta.
- Funciona dondequiera que MCP funcione — Claude Desktop, Claude Code, Cursor y cualquier otro cliente compatible con MCP, configurado con un solo comando.
📊 CrawlForge vs. alternativas
| CrawlForge MCP | Firecrawl | API de scraping crudo | |
|---|---|---|---|
| Servidor MCP nativo | ✅ 31 herramientas | ✅ | ❌ |
| Nivel gratuito | ✅ 1,000 créditos, únicos, nunca caducan | Limitado | Varía |
| Extracción con LLM local / autoalojado (Ollama) | ✅ por defecto, $0/token | ❌ | ❌ |
| Agente autónomo (sin necesidad de URLs) | ✅ agent | ✅ | ❌ |
| Investigación profunda con verificación de fuentes | ✅ deep_research | Parcial | ❌ |
| Automatización / acciones del navegador | ✅ scrape_with_actions | ✅ | Varía |
| Motores de sigilo / anti-detección | ✅ Chromium + Camoufox | ✅ | Complemento |
| Plantillas de sitios predefinidas | ✅ 10 sitios | ❌ | ❌ |
| Licencia | MIT | AGPL-3.0 | Propietaria |
La comparación refleja las capacidades documentadas públicamente al momento de escribir. CrawlForge tiene licencia MIT y es MCP-primero — construido para conectarse directamente a asistentes de codificación con IA.
🚀 Inicio Rápido (2 Minutos)
1. Instalar desde NPM
npm install -g crawlforge-mcp-server
2. Configurar tu Clave de API (requerido)
Cada herramienta requiere una clave de API de CrawlForge — las cuentas nuevas reciben 1,000 créditos de prueba gratis para empezar. La ruta recomendada te inicia sesión a través del navegador, por lo que la clave nunca se pega en una terminal (un agente de codificación puede ejecutar esto por ti y reenviarte la URL):
crawlforge login
Imprime una URL de aprobación; ábrela, aprueba, y la clave se almacena en ~/.crawlforge/config.json. Luego ejecuta crawlforge init para registrar el servidor MCP con tu cliente. O usa el asistente interactivo, que también configura tus clientes:
npx crawlforge-setup
Esto hará lo siguiente:
- Te guiará para obtener tu clave de API gratuita
- Configurará tus credenciales de forma segura
- Auto-configurará Claude Code y Cursor (si están instalados)
- Verificará que tu configuración funcione
¿No tienes una clave de API? Obtén una gratis en https://www.crawlforge.dev/signup
Configuración en un solo paso (v4.6.0+):
crawlforge initdetecta tu clave de API, instala la habilidad del agente, y fusiona idempotentemente el bloque de configuración MCP en Claude Code, Claude Desktop y Cursor. Usacrawlforge init --all --yespara configurar cada cliente detectado de forma no interactiva.
3. Configurar tu IDE (si no está auto-configurado)
🤖 Para Claude Desktop
Añade a claude_desktop_config.json:
{
"mcpServers": {
"crawlforge": {
"command": "npx",
"args": ["-y", "crawlforge-mcp-server"]
}
}
}
Ubicación:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Reinicia Claude Desktop para activarlo.
🖥️ Para Claude Code CLI (Auto-configurado)
El asistente de configuración configura automáticamente Claude Code añadiendo a ~/.claude.json:
{
"mcpServers": {
"crawlforge": {
"type": "stdio",
"command": "crawlforge-mcp"
}
}
}
Después de la configuración, reinicia Claude Code para activarlo.
💻 Para Cursor IDE (Auto-configurado)
El asistente de configuración configura automáticamente Cursor añadiendo a ~/.cursor/mcp.json:
{
"mcpServers": {
"crawlforge": {
"type": "stdio",
"command": "crawlforge-mcp"
}
}
}
Reinicia Cursor para activarlo.
🔁 Para n8n (automatización de flujos de trabajo)
El nodo integrado MCP Client Tool de n8n se conecta a través de Streamable HTTP (funciona en n8n Cloud y autoalojado). Ejecuta el servidor en modo HTTP:
export CRAWLFORGE_API_KEY=your_api_key
npm run start:http # Streamable HTTP endpoint at http://localhost:10000/mcp
Luego apunta el nodo MCP Client Tool a http://<host>:10000/mcp con transporte HTTP Streamable y una credencial Bearer configurada con la misma clave de API. En n8n autoalojado puedes usar en su lugar el nodo comunitario n8n-nodes-mcp sobre STDIO (npx -y crawlforge-mcp-server).
Guía completa: docs/n8n-integration.md
¿Qué comando de lanzamiento?
npx -y crawlforge-mcp-serverno requiere instalación global y siempre ejecuta la versión publicada (recomendado para Claude Desktop). Para una instalación global (npm i -g crawlforge-mcp-server), usa el binario dedicadocrawlforge-mcp— se resuelve en tuPATH, por lo que sobrevive a cambios de versión de Node/nvm. El comando simplecrawlforgesigue lanzando el servidor cuando un cliente MCP lo invoca a través de stdio (compatibilidad hacia atrás para configuraciones creadas antes de v4.2.5); interactivamente es la CLI — ejecutacrawlforge mcppara iniciar el servidor manualmente.
📊 Herramientas Disponibles
CrawlForge requiere una clave de API de CrawlForge — cada herramienta se mide y consume créditos. Las cuentas nuevas reciben 1,000 créditos de prueba gratis para empezar. Obtén una clave en crawlforge.dev/signup.
Todas las Herramientas (se requiere clave de API)
| Herramienta | Créditos | Qué hace |
|---|---|---|
fetch_url | 1 | Obtener contenido de cualquier URL |
extract_text | 1 (6 proyectados con escalate: true, se cobra 1 cuando la obtención simple funciona) | Extraer texto limpio de páginas web |
extract_links | 1 (6 proyectados con escalate: true, se cobra 1 cuando la obtención simple funciona) | Obtener todos los enlaces de una página |
extract_metadata | 1 | Extraer metadatos de la página (título, etiquetas OG, schema.org) |
scrape_template | 1 | Datos estructurados de sitios conocidos (Amazon, GitHub, LinkedIn, YouTube, Reddit, Hacker News, npm y más) sin escribir selectores |
list_ollama_models | 1 | Listar los modelos de Ollama instalados localmente (te ayuda a elegir un model para extract_with_llm) |
get_batch_results | 1 | Recuperar resultados paginados para un trabajo de batch_scrape mediante batchId |
read_result | 1 | Buscar, segmentar, leer líneas o una ruta JSON de un resultado que una herramienta devolvió con truncated: true y un result_handle (se conserva 1 hora en tu propia máquina) — nunca vuelvas a obtener la página |
scrape | 2 | Extracción unificada de una sola obtención y múltiples formatos. Pasa un array de formats (markdown/html/rawHtml/texto/enlaces/metadatos/captura de pantalla/json-schema, además de {type:"highlights",query} y {type:"question",question} para solo las oraciones coincidentes, filas de tablas y bloques de código, textualmente con desplazamientos en el markdown: +1 crédito una vez por llamada, mode:"model" +3) más onlyMainContent; una sola obtención sirve cada formato solicitado con advertencias de éxito parcial por formato. escalate:true reintenta una obtención simple bloqueada una vez en el navegador sigiloso y devuelve la página en lugar del bloqueo (+5 como techo proyectado; el cargo baja a 2 cuando la obtención simple funcionó y no se ejecutó ninguna escalada) |
scrape_structured | 2 | Extraer datos estructurados con selectores CSS |
extract_embedded_state | 2 (7 proyectados con escalate: true, se cobra 2 cuando la obtención simple funciona) | Leer el estado JavaScript incrustado de una página — __NEXT_DATA__, cargas útiles de React Server Component (referencias entre filas resueltas, más un índice de data_rows), Nuxt (el __NUXT_DATA__ de Nuxt 3 decodificado), SvelteKit, Apollo, Redux, ytInitialData, Inertia, Shopify, atributos JSON data-*, <script type="application/json"> — con un path para acotar el resultado, keys_only: true para ver sus primeros dos niveles de claves, o find: "<key>" para obtener cada ruta donde vive un campo con ese nombre. escalate: true vuelve a leer una página amurallada en el navegador sigiloso, ejecuta el mismo analizador y también lee los globales del framework desde window (window_state). Sin LLM en la ruta de extracción |
extract_content | 2 | Extracción de contenido mejorada |
map_site | 2 | Descubrir y mapear la estructura del sitio web (el search= opcional clasifica las URLs descubiertas) |
process_document | 2 | Procesamiento de documentos en múltiples formatos |
localization | 2 | Consultar la configuración regional de un país (Accept-Language, zona horaria, moneda) para pasarla a otras herramientas; devuelve valores, no aplica ninguno |
track_changes | 3 | Monitorear cambios de contenido a lo largo del tiempo |
analyze_content | 3 | Análisis de contenido integral |
extract_structured | 3 | Extracción basada en esquemas impulsada por LLM (tu propia clave de LLM u Ollama local) |
extract_with_llm | 3 | Extracción en lenguaje natural. Usa por defecto un modelo local de Ollama; pasa provider: "openai" | "anthropic" con la clave correspondiente para modelos en la nube (LLM externo facturado por tu proveedor) |
browser_session | 3 | Una página de navegador que permanece abierta entre llamadas, conservando sus cookies y su inicio de sesión entre ellas. open una sesión en una URL, snapshot para listar los elementos interactivos como referencias estables (@e1, @e2), act en una referencia, read el contenido, close. Precio por operación: abrir 3, leer 2, captura/actuar/captura de pantalla/cerrar/listar 1 cada una. Úsala cuando debas ver la página antes de elegir qué hacer clic, cuando el flujo abarque varias llamadas, o cuando un inicio de sesión deba mantenerse en lecturas posteriores; una cadena de acciones fija en una página es scrape_with_actions |
summarize_content | 4 | Generar resúmenes inteligentes |
crawl_deep | 4 | Rastreo profundo de sitios web completos |
search_web | 5 | Buscar en la web usando la API de Google Search |
reddit_search | 5 | Buscar publicaciones/comentarios de Reddit o leer un hilo completo — reddit.com bloquea el raspado directo, por lo que esto lee el archivo de la comunidad Arctic Shift (gratis, sin credenciales de Reddit). Una búsqueda en todo Reddit gasta una búsqueda web para descubrir publicaciones, por lo que se cobra con search_web. Opcional: con tus propias credenciales de aplicación de Reddit (REDDIT_CLIENT_ID/REDDIT_CLIENT_SECRET), las búsquedas de publicaciones y las lecturas de hilos provienen primero de la API oficial de Reddit (puntajes en vivo, árboles de comentarios completos), con los archivos como respaldo; mismo precio. Reddit ya no emite nuevas credenciales sin un ticket de aprobación, consulta docs/reddit-access-and-oauth.md |
serp_rank | 5 | Verificar dónde se posiciona un dominio en el SERP orgánico real de Google para una palabra clave (la posición que search_web no puede dar). Impulsado por DataForSEO (DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD, facturado a tu propia cuenta de DataForSEO). Devuelve { configured:false } y cobra 0 créditos hasta que se configure |
batch_scrape | 5 | Procesar múltiples URLs simultáneamente |
scrape_with_actions | 5 | Cadenas de automatización de navegador |
generate_llms_txt | 5 | Generar pautas de interacción con IA |
stealth_mode | 5 | Gestión de navegador anti-detección |
agent | 8 (+5 por reintento sigiloso que obtenga la página, máx. 2) | Investigación/extracción autónoma desde un prompt en lenguaje natural — sin necesidad de URLs. Planifica, recopila y da forma a una respuesta bajo topes de seguridad estrictos (máx. pasos/URLs/tiempo de pared impuestos por el orquestador, nunca el LLM). Una página que amuralla la obtención simple se reintenta automáticamente en el navegador sigiloso — las URLs que nombres primero — y esa evidencia se marca via: "stealth"; cada reintento que se ejecute añade 5 |
deep_research | 10 | Investigación en múltiples etapas con verificación de fuentes |
Diez herramientas (scrape, fetch_url, extract_content, crawl_deep, batch_scrape, stealth_mode, scrape_with_actions, process_document, deep_research, extract_embedded_state) aceptan max_inline_chars (por defecto 40,000; env CRAWLFORGE_MAX_INLINE_CHARS): un resultado que lo supere se devuelve como un preview más un result_handle para read_result, con el resultado completo conservado durante 1 hora bajo ~/.crawlforge/results/ en tu propia máquina — no se sube nada.
Para la referencia canónica completa de capacidades (todas las herramientas, comandos CLI, motores sigilosos, flujo de investigación), consulta SKILL.md.
💳 Precios
Cada herramienta se mide y requiere una clave de API. Las cuentas nuevas obtienen 1,000 créditos de prueba gratuitos — no se requiere tarjeta de crédito para comenzar.
| Plan | Créditos | Mejor para |
|---|---|---|
| Gratis | 1,000 únicos | Pruebas y proyectos personales |
| Hobby ($19) | 5,000 / mes | Proyectos pequeños y desarrollo |
| Profesional ($99) | 50,000 / mes | Uso profesional y producción |
| Negocio ($399) | 250,000 / mes | Operaciones a gran escala |
Todos los planes incluyen:
- Acceso a las 31 herramientas
- Los créditos nunca expiran; los créditos de planes de pago se transfieren mes a mes
- Acceso a la API y notificaciones de webhook
🔧 Configuración Avanzada
Variables de Entorno
# Optional: Set API key via environment
export CRAWLFORGE_API_KEY="cf_live_your_api_key_here"
# Optional: Custom API endpoint (for enterprise)
export CRAWLFORGE_API_URL="https://api.crawlforge.dev"
# As of v3.0.18, this variable is validated against an allow-list of CrawlForge backend hosts.
# Optional: Local LLM (Ollama) overrides — extract_with_llm, extract_structured
# and deep_research all use Ollama when no cloud key is set
export OLLAMA_BASE_URL="http://localhost:11434" # default; set https://ollama.com for Ollama Cloud
export OLLAMA_DEFAULT_MODEL="gemma3:4b" # optional; unset = pick the best installed model automatically
# deep_research judges claims with gemma3:12b when it is installed (ollama pull gemma3:12b);
# conflict detection is on only with that model, or a cloud provider
export OLLAMA_EMBEDDING_MODEL="nomic-embed-text" # default: OLLAMA_DEFAULT_MODEL; used for semantic ranking in deep_research
export OLLAMA_API_KEY="..." # only for authenticated endpoints (required by Ollama Cloud; a local instance needs none)
export DISABLE_OLLAMA="true" # skip Ollama entirely and use CSS/keyword fallbacks
# Optional: Cloud LLM keys — only needed when you pass provider: "openai" or "anthropic"
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
# Optional: limit which tools this client sees — by name, by group, or both (comma-separated)
export CRAWLFORGE_TOOLS="scrape,search_web,extract_content"
export CRAWLFORGE_TOOL_GROUPS="basic,search,scrape" # unset = all tools; unknown names/groups are ignored with a warning
# Optional: deep_research stealth extraction fallback (v4.6.6) — see below
export RESEARCH_STEALTH_ENGINE="auto" # auto (default) | camoufox | chromium
export RESEARCH_STEALTH_FALLBACK="true" # set to "false" to disable entirely
export RESEARCH_MAX_STEALTH_RETRIES="8" # cap on stealth retries per research run
# Optional: your own proxies for the stealth paths that have no caller to ask —
# the scrape escalation stage, the deep_research retry, the agent, browser_session.
# Comma-separated; a proxy passed on a call always wins. CrawlForge supplies none.
export CRAWLFORGE_STEALTH_PROXIES="http://user:pass@gw.provider.net:8080"
# Unrelated to the PROXY_ROTATION_* variables, which belong to the localization tool.
# Optional: turn off the clearance jar (on by default) — see "Stealth engines and proxies"
export CRAWLFORGE_CLEARANCE_JAR="off"
Características de la Especificación MCP
CrawlForge sigue la especificación MCP actual (2025-06-18) más extensiones experimentales seleccionadas:
- Salida estructurada —
scrape,map_site,serp_rank,reddit_search,search_web,extract_structuredycrawl_deepdevuelvenstructuredContentanalizable por máquina junto con el texto habitual, validado contra unoutputSchemapublicado; los clientes heredados siguen funcionando con el texto. - Errores autocorregibles — la entrada de herramienta inválida ahora se devuelve como un resultado
isError: trueque el modelo llamante puede leer y reintentar, en lugar de un error de protocolo JSON-RPC crudo. - Esquemas de herramienta JSON Schema 2020-12, ordenamiento determinista de
tools/list(amigable con la caché de prompt del cliente) y sugerencias de resultados almacenables en caché en herramientas de solo lectura. - Iconos en el servidor, sus herramientas y sus prompts.
- Tareas asíncronas (experimental) en las cuatro herramientas de larga duración —
crawl_deep,batch_scrape,deep_research,agent— para clientes que admiten sondeo; los resultados síncronos aún se devuelven para clientes que no lo admiten.
Consulta docs/mcp-spec-adoption.md para ejemplos a nivel de cable y notas de compatibilidad con clientes.
Inicio rápido con LLM local (extract_with_llm con Ollama)
extract_with_llm usa por defecto un modelo local de Ollama — sin clave de proveedor de LLM, sin costos de LLM por token y sin que los datos salgan de tu máquina (el costo de créditos de CrawlForge aún aplica).
# 1. Install Ollama: https://ollama.com
# 2. Pull any model from https://ollama.com/library
ollama pull llama3.2
# 3. Discover what's installed (from your MCP client)
# list_ollama_models()
# 4. Extract — defaults to Ollama with the model from step 2
# extract_with_llm({ url: "https://example.com", prompt: "…", model: "llama3.2" })
Motores sigilosos y proxies
Cada punto de entrada sigiloso — scrape con escalate: true, stealth_mode, browser_session, scrape_with_actions y el reintento de deep_research — ahora usa por defecto auto: usa Camoufox (anti-detección de Firefox) cuando su binario está instalado, recurre a Chromium cuando no lo está, con la razón en el warnings[] del resultado. Cada resultado nombra el motor que realmente se ejecutó. Nombrar un motor explícitamente se comporta como siempre — camoufox falla en lugar de recurrir, y chromium y playwright son el mismo motor (en el escalate_engine de scrape, escríbelo playwright).
En browser_session y scrape_with_actions el motor aplica solo con stealth: true — su ruta ordinaria es el grupo estándar de Chromium.
auto no es gratis. Medido una vez cada uno en una Mac con Apple Silicon el 2026-09-21 (lanzamiento más un contexto y una página en blanco): Chromium 148 ms y 253 MB, Camoufox 946 ms y 667 MB — aproximadamente +0.8 s y +400 MB por llamada sigilosa. Fija engine: "playwright" para trabajo de alto volumen en sitios que no bloquean.
CrawlForge no proporciona proxies, y un proxy de centro de datos no arregla un bloqueo: Cloudflare puntúa el ASN de la IP y el handshake TLS/HTTP2 antes de que se ejecute cualquier JavaScript, por lo que ningún parche del lado del navegador compensa una dirección de centro de datos. Trae tu propia salida residencial con CRAWLFORGE_STEALTH_PROXIES (URLs separadas por comas), que la etapa de escalada, stealth_mode, browser_session, scrape_with_actions, el reintento de deep_research y el reintento sigiloso automático de la herramienta agent usan cuando el llamante no pasa ninguno; un proxy pasado en la llamada siempre gana. Con un proxy, Camoufox deriva su zona horaria, configuración regional y geolocalización de la IP de salida.
Un desafío resuelto una vez no se resuelve de nuevo. Cuando una renderización sigilosa supera una pared de Cloudflare o DataDome, las cookies de autorización del proveedor (cf_clearance, __cf_bm, datadome — nada más) se guardan en ~/.crawlforge/stealth-clearance.json (modo 0600) y se reproducen en el siguiente contexto sigiloso con el mismo motor, User-Agent y proxy, por como máximo la vida útil de la cookie y nunca más de 24 horas. Una renderización que aún encuentra la pared las descarta. Establece CRAWLFORGE_CLEARANCE_JAR=off para deshabilitar.
Detalle completo, mediciones y fuentes: docs/stealth-engines.md.
Extracción sigilosa para deep_research (Camoufox)
deep_research reintenta automáticamente fuentes que bloquean la ruta de obtención normal (Reddit, Quora, foros y páginas protegidas por Cloudflare/DataDome devuelven HTTP 403) a través de un navegador real con huella digital, luego re-extrae del HTML renderizado. Está acotado (RESEARCH_MAX_STEALTH_RETRIES, por defecto 8, más un tiempo de espera por página) y es perezoso — la pila del navegador solo se carga cuando una fuente está realmente bloqueada.
Selección de motor (RESEARCH_STEALTH_ENGINE):
auto(por defecto) — prefiere Camoufox (anti-detección de Firefox), recurre a Chromium sigiloso, luego obtención simple.camoufox— fuerza Camoufox.chromium— fuerza el motor sigiloso de Chromium. Camoufox atraviesa barreras que detienen a Chromium headless: en una prueba de referencia ejecutada el 21-09-2026 desde una IP residencial, fue el único motor que superó Cloudflare Turnstile (indeed.com) y Akamai (harrods.com), ambos de los cuales bloquearon Chromium stealth. Ninguno de los dos motores superó DataDome ni un Turnstile interactivo, por lo que esta es una mejor ruta de obtención, no un bypass. Para habilitarlo, instala la dependencia opcional y ejecuta su descarga binaria única:
# Camoufox is declared as an optional dependency, so a normal install already pulls it.
# If you installed with --no-optional, add it explicitly:
npm install camoufox
# One-time download of the Camoufox Firefox binary (~130 MB):
npx camoufox fetch
Sin el binario de Camoufox, deep_research cae silenciosamente a Chromium stealth y luego a fetch simple — sin errores, solo una menor recuperación en sitios altamente protegidos. Desactiva toda la degradación con RESEARCH_STEALTH_FALLBACK=false.
Nota: Los bloqueos duros por reputación de IP (p. ej., el edge de Reddit
403) resisten el stealth headless desde cualquier IP y requieren proxies residenciales/móviles, que CrawlForge no proporciona — apunta el servidor a los tuyos conCRAWLFORGE_STEALTH_PROXIES. Consulta docs/stealth-engines.md para más detalles.
Configuración Manual
Tu configuración se almacena en ~/.crawlforge/config.json:
{
"apiKey": "cf_live_...",
"userId": "user_...",
"email": "you@example.com"
}
📖 Ejemplos de Uso
Una vez configurado, usa estas herramientas en tu asistente de IA:
"Search for the latest AI news"
"Extract all links from example.com"
"Crawl the documentation site and summarize it"
"Monitor this page for changes"
"Extract product prices from this e-commerce site"
🔒 Seguridad y Privacidad
- Autenticación Segura: Se requieren claves API para todas las herramientas medidas
- Almacenamiento Local: Las claves API se almacenan de forma segura en
~/.crawlforge/config.json - Solo HTTPS: Todas las conexiones usan HTTPS cifrado
- Sin Retención de Datos: No almacenamos datos extraídos, solo registros de uso
- Límite de Tasa: Protección integrada contra abuso
- Cumplimiento: Respeta robots.txt y los requisitos del GDPR
Seguridad y Aprobaciones
- Aplicación de SSRF: Cada URL extraída se valida antes de enviar la solicitud — solo http/https; bloquea loopback, RFC1918, rangos IPv6 privados/link-local, endpoints de metadatos en la nube (GCP, Azure) y puertos peligrosos (SSH, SMTP, DNS, MySQL, Postgres, Redis, MongoDB, etc.). Las redirecciones se revalidan en cada salto, con un máximo de 5.
- Protección del endpoint backend (v3.0.18): Las llamadas propias del servidor a CrawlForge.dev usan una lista de permitidos separada con cierre ante fallo (
{crawlforge.dev, www.crawlforge.dev, api.crawlforge.dev}, HTTPS requerido). EstablecerCRAWLFORGE_API_URLa un host arbitrario se bloquea en el momento del análisis. - Lista de acciones permitidas:
scrape_with_actionsacepta solo 11 tipos de acción (snapshot,wait,click,type,press,scroll,screenshot,executeJavaScript,select,hover,navigate). No existen primitivas de descarga, escritura de archivos ni navegación arbitraria entre páginas —navigatepasa por la misma compuerta de SSRF y robots.txt que la URL inicial. - Compuerta de JavaScript: La acción
executeJavaScriptlanza una excepción por defecto. EstableceALLOW_JAVASCRIPT_EXECUTION=trueen el momento del despliegue para habilitarla (no recomendado en producción). - Elicitación MCP (v3.6.0): Cuatro herramientas solicitan confirmación del usuario antes de ejecutar operaciones costosas —
deep_research(>50 URLs),batch_scrape(modo sincrónico, >25 URLs),crawl_deep(proyección >500 páginas),extract_structured(esquema con >3 campos obligatorios sin LLM configurado). Las situaciones de crédito bajo también elicitan. La confirmación es de mejor esfuerzo: si el cliente MCP no admite elicitación, la herramienta procede (apertura ante fallo). - Control de crédito por herramienta: Cada herramienta está envuelta con
withAuth()y es medida — los créditos se verifican y descuentan antes de la ejecución, y se requiere una clave API válida para cada herramienta (cierre ante fallo desde v3.0.18).
Consulta docs/sandboxing-and-approvals.md para la referencia completa.
Actualizaciones de Seguridad
v3.0.3 (2025-10-01): Se eliminó una vulnerabilidad de omisión de autenticación. Todos los usuarios deben autenticarse con claves API válidas.
Para la política de seguridad completa y cómo reportar una vulnerabilidad, consulta SECURITY.md.
🆘 Soporte
- Documentación: https://www.crawlforge.dev/docs
- Problemas: GitHub Issues
- Correo electrónico: support@crawlforge.dev
- Discord: Únete a nuestra comunidad
📄 Licencia
Licencia MIT — consulta el archivo LICENSE para más detalles.
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Lee primero nuestra Guía de Contribución.
Hecho con ❤️ por el equipo de CrawlForge