stealth_mode
Evada los sistemas de detección de bots con técnicas anti-detección avanzadas, que incluyen aleatorización de huellas digitales, simulación de comportamiento humano y configuraciones de navegador sigilosas.
Casos de uso
Sitios de comercio electrónico protegidos
Extraiga datos de productos de sitios con protección de Cloudflare, DataDome o PerimeterX
Plataformas de redes sociales
Extraiga datos públicos de plataformas con detección de bots sofisticada
Sitios de datos financieros
Acceda a datos de mercado, cotizaciones de acciones e información financiera de fuentes protegidas
APIs con límite de tasa
Evada el límite de tasa agresivo con rotación de huellas digitales
Contenido con bloqueo geográfico
Acceda a contenido restringido por región con soporte de proxy residencial
Pruebas de alta seguridad
Pruebe sus propios sistemas anti-bot con técnicas de evasión avanzadas
Endpoint
/api/v1/tools/stealth_modeParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
operation | string | Optional | configure | Operación de sigilo a realizar: scrape, configure, enable, disable, create_context, create_page, get_stats o cleanup. `scrape` es la vía de una sola llamada: crea un contexto sigiloso, navega a `url`, devuelve los `formats` solicitados y desmonta el contexto, todo en una única llamada facturada. La secuencia create_context → create_page → cleanup sigue disponible para el trabajo de varios pasos que deba reutilizar un contexto. Example: create_context |
stealthConfig | object | Optional | - | Opciones de sigilo detalladas. Claves: level (basic | medium | advanced, predeterminado medium), randomizeFingerprint, hideWebDriver, blockWebRTC, spoofTimezone, randomizeHeaders, useRandomUserAgent, simulateHumanBehavior (todos booleanos, predeterminado true), customUserAgent, customViewport ({ width 800-1920, height 600-1080 }), locale (predeterminado "en-US") y timezone. Example: {"level": "advanced", "blockWebRTC": true} |
engine | string | Optional | playwright | Motor de navegador: "playwright" (predeterminado) o "camoufox" (basado en Firefox, mayor anti-detección; disponible solo donde esté instalado en el backend). Example: camoufox |
contextId | string | Optional | - | ID de contexto de navegador devuelto por una llamada create_context. Páselo a create_page para abrir una página en ese contexto sigiloso. Example: ctx_ab12cd34ef56 |
urlToTest | string | Optional | - | URL a la que navegar al crear una página con create_page. Example: https://protected-site.com |
url | string | Optional | - | URL a la que hacer scraping. Obligatoria para `operation: "scrape"` e ignorada por las demás operaciones, que usan `urlToTest` en su lugar. Example: https://protected-site.com/product/42 |
formats | array | Optional | ["markdown"] | Formatos que devuelve `operation: "scrape"`: `markdown`, `html`, `text`, `links`, `metadata` o `screenshot`. Una captura de pantalla se devuelve como un URI de recurso `crawlforge://screenshot/{id}` en lugar de base64 en línea, y este endpoint REST reenvía ese URI sin resolverlo, así que por ahora `screenshot` solo se puede usar desde el servidor MCP de CrawlForge, que sí puede leer el recurso. Example: ["markdown", "links"] |
wait_for | number | Optional | - | Espera adicional tras la carga de la página, en milisegundos (0-30000). Úsela para contenido que se renderiza después de DOMContentLoaded; una ejecución sigilosa ya incluye pausas similares a las humanas, así que empiece con valores bajos. Example: 2000 |
verbose | boolean | Optional | false | Devuelve la huella digital generada completa de create_context en lugar de un resumen. Útil para depurar por qué un destino sigue detectando el navegador. Example: false |
respect_robots | boolean | Optional | true | Respeta el robots.txt del sitio de destino. Si lo omite, se aplica el valor predeterminado conforme (`true`): una URL que robots.txt no permita a `CrawlForge` se rechaza antes de lanzar ningún navegador y este endpoint no cobra nada por ello, y cada navegación se comprueba igual. La regla se compara con el token de producto `CrawlForge` aunque el navegador sigiloso presente un User-Agent aleatorizado, de modo que una directiva `User-agent: CrawlForge` del propietario del sitio también vincula al tráfico sigiloso. Póngalo en `false` solo para destinos con los que tenga su propio acuerdo: la respuesta incluye entonces una entrada `warnings` y la anulación queda registrada en su API key. Example: true |
Operaciones y su costo
5 credits pagan el trabajo del navegador; las operaciones administrativas cuestan 1 credit cada una. Por tanto, un scrape de una sola llamada cuesta 5 credits, mientras que la ruta create_context → create_page → cleanup cuesta 11.
url, devuelve los formats solicitados junto con el título de la página y la URL final, y desmonta el contexto. Empiece por aquí.contextId. Úselo cuando varias páginas deban compartir una misma huella digital y el mismo almacén de cookies.urlToTest dentro de un contextId existente. La página se cierra cuando termina la llamada; el contexto permanece.Lo que el modo sigiloso no hace
CrawlForge. Si un destino continúa rechazando la petición, la solución es una API documentada o el permiso del propietario del sitio, no un nivel de sigilo más alto.Selección de motor
stealth_mode admite dos motores de navegador subyacentes. Elija según la dificultad de detección del sitio de destino.
Ejemplo de motor
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "camoufox",
"stealthConfig": {
"level": "advanced"
}
}'Niveles de sigilo
Ejemplos de solicitud
# 1. Create a stealth browser context
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "playwright",
"stealthConfig": {
"level": "advanced",
"randomizeFingerprint": true,
"blockWebRTC": true
}
}'
# 2. Open a page in that context (use the contextId from step 1)
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_page",
"contextId": "ctx_ab12cd34ef56",
"urlToTest": "https://protected-site.com"
}'Ejemplo de respuesta
{ "success": true, "data": { "operation": "create_context", "contextId": "ctx_ab12cd34ef56", "engine": "playwright", "stealthConfig": { "level": "advanced", "randomizeFingerprint": true, "hideWebDriver": true, "blockWebRTC": true, "spoofTimezone": true, "locale": "en-US" }, "message": "Stealth context created" }, "credits_used": 5, "credits_remaining": 995, "processing_time": 1200}data.contextIdPáselo a create_page para abrir una página dentro de este contexto sigilosodata.operationLa operación de sigilo que se realizódata.stealthConfigLa configuración de sigilo resuelta aplicada al contextocredits_used5 credits por trabajo del navegador (scrape, create_context, create_page); 1 credit por una operación administrativaprocessing_timeTiempo para iniciar el contexto sigiloso (ms)Manejo de errores
Runtime de navegador no configurado (503 TOOL_NOT_AVAILABLE)
El modo sigiloso necesita un runtime de navegador. Cuando el backend de ejecución alojado no está configurado, la llamada devuelve 503 de inmediato y no se cobran credits.
Límite de tasa superado (429 Too Many Requests)
Ha superado el límite de tasa de su plan. Espere un momento o mejore su plan para obtener límites más altos.
Operación no válida (400 Bad Request)
La operación debe ser una de: scrape, configure, enable, disable, create_context, create_page, get_stats o cleanup.
El backend de ejecución agotó el tiempo (504 MCP_UPSTREAM_TIMEOUT)
El destino no terminó de cargar dentro del presupuesto del backend de ejecución. Los sitios muy protegidos son la causa habitual. Los fallos no se cobran.
Bloqueado por robots.txt (502 TOOL_ERROR)
El robots.txt del destino no permite esta URL a CrawlForge, así que no se lanzó ningún navegador y no se cobró nada. Establezca respect_robots: false para anularlo si tiene su propio acuerdo con el destino: la anulación queda registrada en su API key. La anulación no alcanza a un host incluido en la lista de exclusión permanente de CrawlForge, que se rechaza sea cual sea el valor de respect_robots.
Costo en credits
scrape, create_context o create_page — sea cual sea el nivel de sigilo. Las operaciones administrativas configure, enable, disable, get_stats y cleanup no navegan y cuestan 1 credit cada una, por lo que un scrape de una sola llamada cuesta 5 credits en total.Qué incluye:
Aleatorización de huellas digitales (todos los niveles)
Simulación de comportamiento humano
Técnicas anti-detección
Evasión de detección de WebDriver (medium+)
Enmascaramiento Canvas/WebGL (medium+)
Huellas TLS avanzadas (advanced)
Recomendaciones de plan:
Plan Free: 1,000 credits de prueba por única vez = 200 solicitudes en modo sigiloso
Plan Hobby: 5,000 credits = 1,000 solicitudes en modo sigiloso ($19/mo)
Plan Professional: 50,000 credits = 10,000 solicitudes en modo sigiloso ($99/mo)