Saltar al contenido
Anti-DetecciónSigiloso5 credits

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 a través de un proxy que usted aporta

Pruebas de alta seguridad

Pruebe sus propios sistemas anti-bot con técnicas de evasión avanzadas

Endpoint

POST/api/v1/tools/stealth_mode
Auth Required
1 req/s en el plan Free
5 credits

Parameters

NameTypeRequiredDefaultDescription
operation
stringOptionalconfigure
Operación de sigilo a realizar: scrape, configure, 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. create_context seguido de create_page es una comprobación de navegación y de desafío: `create_page` carga `urlToTest`, informa de su estado, su título y cualquier página de desafío, y cierra la página antes de que la llamada termine, así que nada de ella pasa a una llamada posterior. Para trabajar en una misma página a lo largo de varias llamadas (iniciar sesión y luego leer; hacer clic y luego leer), usa [browser_session](/docs/api-reference/tools/browser-session) con `stealth: true`. `configure` solo valida `stealthConfig` y lo devuelve con los valores predeterminados completados, junto con una `note`: no guarda nada, así que pasa `stealthConfig` en cada llamada `scrape` o `create_context` que deba usarlo.
Example: create_context
stealthConfig
objectOptional-
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. La configuración se aplica a la llamada en la que se pasa y no se recuerda entre llamadas. En el motor `camoufox` no se aplican `customUserAgent` ni `customViewport`, `locale` queda fijado al lanzar el navegador y, detrás de un proxy, `locale` y `timezone` siguen a la IP de salida; `scrape` y `create_context` informan de cada uno de estos casos en `warnings`.
Example: {"level": "advanced", "blockWebRTC": true}
engine
stringOptionalplaywright
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
stringOptional-
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
stringOptional-
create_page: la URL a la que navegar y que comprobar. La página se cierra antes de que la llamada termine.
Example: https://protected-site.com
url
stringOptional-
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
arrayOptional["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
numberOptional-
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
booleanOptionalfalse
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
booleanOptionaltrue
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
max_inline_chars
numberOptional40000
Tamaño máximo del resultado que se devuelve en línea, en caracteres de su JSON (de 1.000 a 10.000.000). Por encima, la respuesta incluye `preview` (los primeros `max_inline_chars` caracteres del campo de texto principal del resultado), `result_handle`, `total_chars`, `truncated: true` y `expires_at`, y [read_result](/docs/api-reference/tools/read-result) lee el resto por 1 credit por llamada. Los resultados almacenados se conservan 1 hora. Se aplica a la operación `scrape`.
Example: 40000
redact_pii
boolean | objectOptionalfalse
Elimine los datos personales del texto que devuelve esta llamada, antes de que el resultado se almacene o se envíe de vuelta. Se aplica a `operation: "scrape"`, la única operación que devuelve una página; las operaciones de gestión no tienen texto que redactar. `true` es la forma abreviada de `{ mode: "fast" }`: las cuatro clases de expresiones regulares, etiquetadas. Siempre que pida redacción, la respuesta lleva `redaction: { entities, count, mode }` dentro de `data`, incluso cuando no hubo coincidencias (`count: 0`), de modo que «no se encontró nada» nunca se confunde con «se ignoró el parámetro»; una clase sin coincidencias se omite en lugar de informarse como `0`. La redacción se ejecuta **antes** de almacenar el resultado, así que un resultado grande que se lea después con [read_result](/docs/api-reference/tools/read-result) ya viene redactado. Dos límites deliberados: las direcciones (`url`, `link`, `href`, `canonical_url`) nunca se redactan, y los contadores derivados del texto (`content_length`, `word_count`, `character_count`) lo describen tal como se extrajo, antes de la redacción.
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.

scrape — 5 credits
De una sola llamada: crea un contexto sigiloso, navega a 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í.
create_context — 5 credits
Abre un contexto sigiloso reutilizable y devuelve su contextId. Úselo cuando varias páginas deban compartir una misma huella digital y el mismo almacén de cookies.
create_page — 5 credits
Navega a urlToTest dentro de un contextId existente. La página se cierra cuando termina la llamada; el contexto permanece.
configure — 1 credit
Valida un stealthConfig y lo devuelve con los valores predeterminados completados, con una note que lo indica. No se guarda nada y ninguna llamada posterior lo recoge: pasa stealthConfig en cada llamada scrape o create_context. No hay navegación, así que se factura como operación administrativa.
get_stats — 1 credit
Devuelve activeContexts, totalFingerprintsSaved, browserRunning, humanBehaviorActive y proxyStatus (enabled, currentProxy, totalProxies) del backend. Sin navegación.
cleanup — 1 credit
Desmonta todos los contextos abiertos en el backend. Sin navegación, de modo que liberar lo que abrió nunca se cobra a la tarifa de navegador.

Lo que el modo sigiloso no hace

Por dónde sale el tráfico sigiloso

Selección de motor

stealth_mode admite dos motores de navegador subyacentes. Elija según la dificultad de detección del sitio de destino.

Playwright (predeterminado)
Automatización de Chromium probada en producción con complementos de sigilo. Ideal para: la mayoría de los sitios, ejecución rápida y amplias herramientas de depuración. Menor consumo de recursos.
Camoufox
Fork basado en Firefox reforzado para la evasión anti-bot. Ideal para: detección de bots agresiva (Cloudflare Turnstile, DataDome, PerimeterX en modo estricto). Mayor uso de memoria; arranque ligeramente más lento.

Ejemplo de motor

terminalBash
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

Básico (el más rápido)
Ideal para sitios con detección de bots mínima. Aleatorización de User-Agent, manipulación básica de encabezados, manejo de cookies, retraso de ~1-2 segundos.
Medio (recomendado)
Equilibrio entre sigilo y rendimiento. Aleatorización completa de huellas digitales, enmascaramiento de huellas Canvas/WebGL, suplantación de zona horaria e idioma, desplazamiento y movimientos similares a los humanos, retraso de ~3-5 segundos.
Avanzado (el más lento)
Sigilo máximo para sitios fuertemente protegidos. Todas las funciones del nivel medio más: evasión de detección de WebDriver, huellas TLS avanzadas, simulación de movimiento del mouse, patrones de clic aleatorios, retraso de ~8-12 segundos.

Ejemplos de solicitud

terminalBash
# 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

200 OK1,200ms
{
"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
}
Field Descriptions
data.contextIdPáselo a create_page para abrir una página dentro de este contexto sigiloso
data.operationLa operación de sigilo que se realizó
data.stealthConfigLa configuración de sigilo resuelta aplicada al contexto
credits_used5 credits por trabajo del navegador (scrape, create_context, create_page); 1 credit por una operación administrativa
processing_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, 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

5 credits
5 credits por operación de navegador
5 credits pagan el trabajo del navegador — scrape, create_context o create_page — sea cual sea el nivel de sigilo. Las operaciones administrativas configure, 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: 100,000 credits = 20,000 solicitudes en modo sigiloso ($99/mo)

Herramientas relacionadas