Cómo resolver GeeTest V4 en n8n con CapSolver: Guía completa de integración

Emma Foster
Machine Learning Engineer
09-Feb-2026

GeeTest V4 es la última generación del sistema CAPTCHA de comportamiento de GeeTest, utilizado por un número creciente de sitios web para proteger formularios de inicio de sesión, páginas de registro y puntos finales de datos. A diferencia de los sistemas CAPTCHA más antiguos que se basan en rompecabezas de imágenes, GeeTest V4 utiliza desafíos adaptativos y análisis de comportamiento, lo que lo convierte en una de las protecciones más sofisticadas que encontrará en los flujos de trabajo de automatización.
¿Qué pasaría si pudieras resolver GeeTest V4 automáticamente dentro de tus flujos de trabajo de n8n, ya sea que estés construyendo una API de solución reutilizable, extrayendo datos de un sitio protegido por CAPTCHA o automatizando un formulario de inicio de sesión, todo sin escribir una sola línea de código tradicional?
En esta guía, aprenderás cómo combinar n8n (una herramienta de automatización de flujos de trabajo visual) con CapSolver (un servicio de resolución de CAPTCHA impulsado por IA) para resolver desafíos de GeeTest V4 bajo demanda, ya sea como un punto final de API independiente o como un paso dentro de cualquier flujo de trabajo de automatización.
Lo que construirás:
APIs de Solución — puntos finales reutilizables que otras herramientas pueden llamar:
- Una API de solución de GeeTest V4
Flujos de trabajo de uso directo — CapSolver incrustado como un paso dentro de automatizaciones más grandes:
- Un raspador de precios y productos que resuelve GeeTest V4, obtiene páginas protegidas y alerta sobre cambios de precios
- Una automatización de inicio de sesión de cuenta que resuelve GeeTest V4 antes de enviar las credenciales
¿Qué es GeeTest V4?
GeeTest V4 es la versión más reciente de la plataforma CAPTCHA de GeeTest. Reemplaza el sistema V3 anterior con un modelo de integración simplificado y una detección de comportamiento mejorada. Desde una perspectiva de resolución, V4 es estructuralmente más simple que V3: solo requiere un parámetro estático (captchaId) en lugar del flujo de desafío dinámico que necesita V3.

Diferencias clave con GeeTest V3:
| Característica | GeeTest V3 | GeeTest V4 |
|---|---|---|
| Parámetro principal | gt + challenge dinámico |
captchaId (estático) |
| Obtención de desafío | Requerido — debe llamar a la API de GeeTest primero | No es necesario — captchaId es estático |
| Campos de solución | 3 (challenge, validate, seccode) |
5 (captcha_id, lot_number, pass_token, gen_time, captcha_output) |
| Script de widget | gt.js |
gcaptcha4.js |
| Tipo de tarea | GeeTestTask / GeeTestTaskProxyLess |
Solo GeeTestTaskProxyLess |
Ventaja clave de V4: El
captchaIdestá incrustado en el código fuente de la página y nunca cambia; encuéntralo una vez, úsalo para siempre. La ausencia de obtención de desafíos dinámicos significa menos nodos en tu flujo de trabajo.
Requisitos previos
Antes de comenzar, asegúrate de tener lo siguiente:
- Una instancia de n8n — Ya sea autoalojada o n8n Cloud
- Una cuenta de CapSolver — Regístrate aquí y obtén tu clave API
- El nodo CapSolver n8n — Ya disponible como un nodo oficial en n8n (no se necesita instalación)
Importante: Asegúrate de tener suficiente saldo en tu cuenta de CapSolver. Las tareas de resolución de GeeTest V4 consumen créditos según el uso.
Configuración de CapSolver en n8n
CapSolver está disponible como una integración oficial en n8n, no se requiere la instalación de ningún nodo de la comunidad. Puedes encontrarlo directamente en el panel de nodos al construir tus flujos de trabajo.
Dado que es una integración oficial, debes crear una credencial en n8n para que el nodo CapSolver pueda autenticarse con tu cuenta.
Paso 1: Abrir la página de credenciales
Ve a tu instancia de n8n y navega a Settings > Credentials. Verás todas tus credenciales configuradas aquí.

Paso 2: Crear la credencial de CapSolver
- Haz clic en Create credential (arriba a la derecha)
- Busca "CapSolver" y selecciona CapSolver API
- Introduce tu clave API — cópiala directamente desde el Panel de CapSolver
- Deja Allowed HTTP Request Domains configurado en
All(predeterminado) - Haz clic en Save
n8n probará automáticamente la conexión. Deberías ver un banner verde de "Connection tested successfully" confirmando que tu clave API es válida.

Importante: Cada nodo de CapSolver en tus flujos de trabajo hará referencia a esta credencial. Solo necesitas crearla una vez; todos tus flujos de trabajo de solución compartirán la misma credencial.
¡Ahora estás listo para construir tu flujo de trabajo de solución de GeeTest V4!
Cómo identificar los parámetros de GeeTest V4
Antes de poder resolver un CAPTCHA de GeeTest V4, debes encontrar su captchaId, el único parámetro requerido. A diferencia de GeeTest V3 (que requiere obtener un challenge dinámico), el captchaId de V4 es estático y está incrustado directamente en el código fuente de la página.
Método 1: Inspeccionar el código fuente de la página
- Abre Ver código fuente (Ctrl+U) o usa la pestaña Elements de las DevTools
- Busca
captcha_idocaptchaIden el código fuente de la página - Busca referencias a
gcaptcha4.js, el script del widget de GeeTest V4 - El
captchaIdse suele pasar como parámetro de configuración al inicializar el widget
html
<!-- Ejemplo: inicialización de GeeTest V4 en el código fuente de la página -->
<script>
initGeetest4({
captchaId: 'e392e1d7fd421dc63325744d5a2b9c73',
product: 'bind'
});
</script>
Método 2: Pestaña de red de DevTools
- Abre DevTools (F12) > pestaña Network
- Filtra las solicitudes por
gcaptcha4ogeetest - Busca solicitudes a
gcaptcha4.geetest.com; el parámetrocaptcha_idestará en la cadena de consulta
Ventaja clave de V4: El
captchaIdes estático; una vez que lo encuentres, puedes usarlo indefinidamente sin necesidad de obtener un nuevo desafío cada vez. Esto hace que los flujos de trabajo de V4 sean estructuralmente idénticos a los flujos de trabajo de Turnstile.
Flujo de trabajo: API de solución de GeeTest V4
Este flujo de trabajo crea un punto final de API POST que acepta parámetros de GeeTest V4 y devuelve un conjunto de tokens resueltos.

Cómo funciona
El flujo de trabajo consta de cuatro nodos:
- Webhook — Recibe solicitudes POST entrantes con parámetros de GeeTest V4
- GeeTest V4 — Envía el desafío a CapSolver y espera una solución
- ¿Error de CapSolver? — Nodo IF que se ramifica según si la resolución falló (es decir,
$json.errorno está vacío) - Responder a Webhook — Devuelve la solución si tiene éxito, o
{"error": "..."}si falla
Configuración de nodos
1. Nodo Webhook
| Configuración | Valor |
|---|---|
| Método HTTP | POST |
| Ruta | solver-geetest-v4 |
| Responder | Response Node |
Esto crea un punto final en: https://your-n8n-instance.com/webhook/solver-geetest-v4
2. Nodo CapSolver GeeTest V4
| Parámetro | Valor | Descripción |
|---|---|---|
| Operación | GeeTest V4 |
Debe establecerse en GeeTest V4 |
| Tipo | GeeTestTaskProxyLess |
Este es el único tipo de tarea disponible (sin variante de proxy) |
| URL del sitio web | {{ $json.body.websiteURL }} |
La URL de la página con el widget GeeTest V4 |
| ID de Captcha | {{ $json.body.captchaId }} |
El ID de captcha estático de GeeTest V4 |
| Subdominio del servidor API de GeeTest | (Opcional) | Servidor API de GeeTest personalizado si el sitio usa uno |
Selecciona tus credenciales de CapSolver en este nodo. El parámetro opcional
geetestApiServerSubdomainrara vez es necesario; solo agrégalo si el servidor GeeTest predeterminado no funciona para tu sitio de destino.
3. ¿Nodo de error de CapSolver? (IF)
| Configuración | Valor |
|---|---|
| Condición | ={{ $json.error }} no está vacío |
| Rama verdadera | Dirige al nodo Webhook de respuesta de Error |
| Rama falsa | Dirige al nodo Webhook de respuesta de Éxito |
4. Nodos de respuesta a Webhook
Rama de éxito (salida falsa de ¿Error de CapSolver?):
| Configuración | Valor |
|---|---|
| Responder con | JSON |
| Cuerpo de la respuesta | ={{ JSON.stringify($json.data) }} |
Pruébalo
Envía una solicitud POST a tu punto final de Webhook:
bash
curl -X POST https://your-n8n-instance.com/webhook/solver-geetest-v4 \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"captchaId": "e392e1d7fd421dc63325744d5a2b9c73"
}'
Respuesta esperada:
json
{
"taskId": "abc123...",
"solution": {
"captcha_id": "e392e1d7fd421dc63325744d5a2b9c73",
"lot_number": "7c18c041a6ed4e...",
"pass_token": "d88ce40c0a5c5a18...",
"gen_time": "1709123456",
"captcha_output": "dGVzdF9jYXB0Y2hh..."
},
"status": "ready"
}
Importar este flujo de trabajo
Copia el JSON a continuación e impórtalo a n8n a través de Menu > Import from JSON:
Haz clic para expandir el JSON del flujo de trabajo
json
{
"name": "GeeTest V4 — Solver API",
"nodes": [
{
"parameters": {
"content": "## GeeTest V4 — API de Solución\n\n**Para quién es:** Desarrolladores que necesitan resolver desafíos de GeeTest V4 a través de un simple punto final POST.\n\n**Qué hace:** Expone un webhook que acepta parámetros de captcha, resuelve el desafío con CapSolver y devuelve el token o el error como JSON.\n\n**Cómo funciona:**\n1. El Webhook recibe un POST con la URL de destino, la clave del sitio y los parámetros opcionales.\n2. El nodo CapSolver resuelve el desafío de GeeTest V4.\n3. El nodo IF verifica si hay errores → devuelve el token de éxito o el JSON de error.\n\n**Configuración:**\n1. Agrega tu clave API de CapSolver en **Settings → Credentials → CapSolver API**.\n2. Activa el flujo de trabajo.\n3. Haz un POST a la URL del webhook con tus parámetros de captcha.",
"height": 494,
"width": 460,
"color": 1
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-712,
-400
],
"id": "sticky-blog-main-1773678228112-1",
"name": "Sticky Note"
},
{
"parameters": {
"httpMethod": "POST",
"path": "solver-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-192,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40001",
"name": "Webhook Trigger",
"webhookId": "a1b2c3d4-aaaa-bbbb-cccc-a1b2c3d40001",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $json.body.websiteURL }}",
"captchaId": "={{ $json.body.captchaId }}",
"geetestApiServerSubdomain": "={{ $json.body.geetestApiServerSubdomain }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
104,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40002",
"name": "Solve GeeTest V4",
"credentials": {
"capSolverApi": {
"id": "YOUR_CREDENTIAL_ID",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "geetest-if-001",
"leftValue": "={{ $json.error }}",
"operator": {
"type": "string",
"operation": "isEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
408,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40003",
"name": "CapSolver Error?"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json.data) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
712,
-80
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40004",
"name": "Respond to Webhook (Success)"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ error: $json.error }) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
712,
128
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40005",
"name": "Respond to Webhook (Error)"
}
],
"connections": {
"Webhook Trigger": {
"main": [
[
{
"node": "Solve GeeTest V4",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4": {
"main": [
[
{
"node": "CapSolver Error?",
"type": "main",
"index": 0
}
]
]
},
"CapSolver Error?": {
"main": [
[
{
"node": "Respond to Webhook (Success)",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond to Webhook (Error)",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Flujo de trabajo: Raspado de GeeTest V4 — Detalles de precios y productos — CapSolver + Programación + Webhook
Este flujo de trabajo raspa una página de producto cada 6 horas (programación) o bajo demanda (webhook), extrae precios usando un nodo HTML y los compara con valores almacenados previamente.
Ruta de programación:
Cada 6 horas -> Resolver GeeTest V4 -> Obtener página de producto -> Extraer datos
-> Comparar datos -> ¿Datos cambiaron? -> Construir alerta / Sin cambios
Comportamiento clave:
- Los campos de solución de captcha se envían como campos de formulario (esta es la forma correcta de enviar el token de GeeTest V4)
- El nodo HTML extrae precios y nombres de productos a través de selectores CSS (
.product-price,h1) $workflow.staticData.lastPricepersiste el precio anterior entre ejecuciones- La comparación de precios detecta tanto caídas (gravedad:
deal) como aumentos (gravedad:info)
Haz clic para expandir el JSON completo del flujo de trabajo (17 nodos)
json
{
"name": "GeeTest V4 Scraping — Price & Product Details — CapSolver + Schedule + Webhook",
"nodes": [
{
"parameters": {
"content": "## Raspado de GeeTest V4 — Monitor de precios y productos\n\n**Para quién es:** Equipos que necesitan monitorear precios o datos de productos en sitios protegidos por GeeTest V4.\n\n**Qué hace:** Resuelve GeeTest V4, obtiene la página del producto, extrae precios y nombres a través de selectores CSS, compara con valores almacenados y alerta sobre cambios si los hay.\n\n**Cómo funciona:**\n1. Una programación (cada 6 horas) o un Webhook activa el flujo.\n2. El CapSolver resuelve el desafío de GeeTest V4.\n3. Una solicitud HTTP obtiene la página del producto con el token resuelto.\n4. Un nodo HTML extrae precios y nombres de productos.\n5. Un nodo de código compara el precio actual con el precio almacenado → alerta sobre cambios si los hay.\n\n**Configuración:**\n1. Agrega tu clave API de CapSolver en **Settings → Credentials**.\n2. Reemplaza la URL de marcador de posición y la clave del sitio.\n3. Actualiza los selectores CSS en \"Extraer datos\" para que coincidan con tu página de destino.\n4. Conecta la salida de \"Construir alerta\" a tu canal de notificación.",
"height": 560,
"width": 460,
"color": 1
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-920,
-380
],
"id": "sticky-blog-main-1773678228112-1",
"name": "Sticky Note"
},
{
"parameters": {
"content": "### Ruta de programación\nSe ejecuta automáticamente cada 6 horas.\nLos resultados se almacenan en datos estáticos del flujo de trabajo para la comparación entre ejecuciones.",
"height": 480,
"width": 1900,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-440,
-280
],
"id": "sticky-blog-section-1773678228112-2",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "### Ruta de Webhook\nActivador bajo demanda — misma lógica, devuelve el resultado como respuesta JSON.",
"height": 480,
"width": 1900,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-440,
140
],
"id": "sticky-blog-section-1773678228112-3",
"name": "Sticky Note2"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-400,
0
],
"id": "99999999-9999-9999-9999-999999999901",
"name": "Every 6 Hours"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
"captchaId": "YOUR_CAPTCHA_ID_HERE",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
0
],
"id": "99999999-9999-9999-9999-999999999902",
"name": "Solve GeeTest V4",
"credentials": {
"capSolverApi": {
"id": "YOUR_CREDENTIAL_ID",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://YOUR-TARGET-SITE.com/product-page",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {
"fullResponse": false
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
0
],
"id": "99999999-9999-9999-9999-999999999903",
"name": "Fetch Product Page"
},
{
"parameters": {
"operation": "extractHtmlContent",
"sourceData": "json",
"dataPropertyName": "data",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".product-price, [data-price], .price",
"returnValue": "text",
"returnArray": false
},
{
"key": "productName",
"cssSelector": "h1, .product-title",
"returnValue": "text",
"returnArray": false
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
512,
0
],
"id": "99999999-9999-9999-9999-999999999904",
"name": "Extract Data"
},
{
"parameters": {
"jsCode": "// Obtener el precio actual y anterior de los datos estáticos del flujo de trabajo\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// Analizar valores numéricos para la comparación\nconst parsePrice = (str) => {\n if (!str) return null;\n const match = str.match(/[\\d,]+\\.?\\d*/);\n return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// Actualizar el precio almacenado\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n json: {\n productName,\n currentPrice,\n previousPrice: previousPrice || 'first check',\n changed,\n direction,\n diff: changed ? `$${diff}` : null,\n checkedAt: new Date().toISOString()\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
0
],
"id": "99999999-9999-9999-9999-999999999905",
"name": "Compare Data"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "price-if-001",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
0
],
"id": "99999999-9999-9999-9999-999999999906",
"name": "Data Changed?"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "alert-001",
"name": "alert",
"value": "=El precio {{ $json.direction }} para {{ $json.productName }}: {{ $json.previousPrice }} → {{ $json.currentPrice }} ({{ $json.direction === 'dropped' ? '-' : '+' }}{{ $json.diff }})",
"type": "string"
},
{
"id": "alert-002",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "alert-003",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
-80
],
"id": "99999999-9999-9999-9999-999999999907",
"name": "Build Alert"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "nc-001",
"name": "status",
"value": "no_change",
"type": "string"
},
{
"id": "nc-002",
"name": "currentPrice",
"value": "={{ $json.currentPrice }}",
"type": "string"
},
{
"id": "nc-003",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
128
],
"id": "99999999-9999-9999-9999-999999999908",
"name": "No Change"
},
{
"parameters": {
"httpMethod": "POST",
"path": "price-monitor-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-400,
420
],
"id": "99999999-9999-9999-9999-999999999909",
"name": "Webhook Trigger",
"webhookId": "99999999-aaaa-bbbb-cccc-999999999909",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
"captchaId": "YOUR_CAPTCHA_ID_HERE",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
420
],
"id": "99999999-9999-9999-9999-999999999910",
"name": "Solve GeeTest V4 [Webhook]",
"credentials": {
"capSolverApi": {
"id": "YOUR_CREDENTIAL_ID",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://YOUR-TARGET-SITE.com/product-page",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {
"fullResponse": false
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
420
],
"id": "99999999-9999-9999-9999-999999999911",
"name": "Fetch Product Page [Webhook]"
},
{
"parameters": {
"operation": "extractHtmlContent",
"sourceData": "json",
"dataPropertyName": "data",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".product-price, [data-price], .price",
"returnValue": "text",
"returnArray": false
},
{
"key": "productName",
"cssSelector": "h1, .product-title",
"returnValue": "text",
"returnArray": false
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
512,
420
],
"id": "99999999-9999-9999-9999-999999999912",
"name": "Extract Data [Webhook]"
},
{
"parameters": {
"jsCode": "// Obtener el precio actual y anterior de los datos estáticos del flujo de trabajo\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// Analizar valores numéricos para la comparación\nconst parsePrice = (str) => {\n if (!str) return null;\n const match = str.match(/[\\d,]+\\.?\\d*/);\n return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// Actualizar el precio almacenado\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n json: {\n productName,\n currentPrice,\n previousPrice: previousPrice || 'first check',\n changed,\n direction,\n diff: changed ? `$${diff}` : null,\n checkedAt: new Date().toISOString()\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
420
],
"id": "99999999-9999-9999-9999-999999999913",
"name": "Compare Data [Webhook]"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "price-if-002",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
420
],
"id": "99999999-9999-9999-9999-999999999914",
"name": "Data Changed? [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "alert-004",
"name": "alert",
"value": "=El precio {{ $json.direction }} para {{ $json.productName }}: {{ $json.previousPrice }} → {{ $json.currentPrice }} ({{ $json.direction === 'dropped' ? '-' : '+' }}{{ $json.diff }})",
"type": "string"
},
{
"id": "alert-005",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "alert-006",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
340
],
"id": "99999999-9999-9999-9999-999999999915",
"name": "Build Alert [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "nc-004",
"name": "status",
"value": "no_change",
"type": "string"
},
{
"id": "nc-005",
"name": "currentPrice",
"value": "={{ $json.currentPrice }}",
"type": "string"
},
{
"id": "nc-006",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
548
],
"id": "99999999-9999-9999-9999-999999999916",
"name": "No Change [Webhook]"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
1712,
420
],
"id": "99999999-9999-9999-9999-999999999917",
"name": "Respond to Webhook [Webhook]"
}
],
"connections": {
"Every 6 Hours": {
"main": [
[
{
"node": "Solve GeeTest V4",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4": {
"main": [
[
{
"node": "Fetch Product Page",
"type": "main",
"index": 0
}
]
]
},
"Fetch Product Page": {
"main": [
[
{
"node": "Extract Data",
"type": "main",
"index": 0
}
]
]
},
"Extract Data": {
"main": [
[
{
"node": "Compare Data",
"type": "main",
"index": 0
}
]
]
},
"Compare Data": {
"main": [
[
{
"node": "Data Changed?",
"type": "main",
"index": 0
}
]
]
},
"Data Changed?": {
"main": [
[
{
"node": "Build Alert",
"type": "main",
"index": 0
}
],
[
{
"node": "No Change",
"type": "main",
"index": 0
}
]
]
},
"Webhook Trigger": {
"main": [
[
{
"node": "Solve GeeTest V4 [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4 [Webhook]": {
"main": [
[
{
"node": "Fetch Product Page [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Fetch Product Page [Webhook]": {
"main": [
[
{
"node": "Extract Data [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Extract Data [Webhook]": {
"main": [
[
{
"node": "Compare Data [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Compare Data [Webhook]": {
"main": [
[
{
"node": "Data Changed? [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Data Changed? [Webhook]": {
"main": [
[
{
"node": "Build Alert [Webhook]",
"type": "main",
"index": 0
}
],
[
{
"node": "No Change [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Build Alert [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"No Change [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook [Webhook]",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Flujo de trabajo: Automatización de inicio de sesión de cuenta de GeeTest V4 — CapSolver + Programación + Webhook
Este flujo de trabajo automatiza el envío de un formulario de inicio de sesión protegido por GeeTest V4 de principio a fin. Resuelve el desafío de GeeTest V4 antes de enviar las credenciales.
Cómo funciona
Este flujo de trabajo consta de cinco nodos:
- Webhook — Recibe una solicitud POST entrante que activa la automatización de inicio de sesión
- Resolver GeeTest V4 — Envía el desafío a CapSolver y espera una solución
- Enviar formulario de inicio de sesión — Emite una solicitud HTTP POST al sitio web de destino con las credenciales y el token de GeeTest V4 resuelto
- Responder a Webhook — Devuelve el resultado del inicio de sesión
Configuración de nodos
1. Nodo Webhook
| Configuración | Valor |
|---|---|
| Método HTTP | POST |
| Ruta | login-geetest-v4 |
| Responder | Response Node |
Esto crea un punto final en: https://your-n8n-instance.com/webhook/login-geetest-v4
2. Resolver GeeTest V4 (CapSolver)
| Parámetro | Valor |
|---|---|
| Operación | GeeTest V4 |
| URL del sitio web | https://YOUR-TARGET-SITE.com/login |
| ID de Captcha | YOUR_CAPTCHA_ID_HERE |
Asegúrate también de seleccionar tus credenciales de CapSolver.
3. Enviar formulario de inicio de sesión (solicitud HTTP)
| Configuración | Valor |
|---|---|
| Método | POST |
| URL | https://YOUR-TARGET-SITE.com/login |
| Tipo de contenido | form-urlencoded |
| Parámetros del cuerpo | username=YOUR_USERNAME, password=YOUR_PASSWORD, captcha_id={{ $('Solve GeeTest V4').item.json.data.solution.captcha_id }}, lot_number={{ $('Solve GeeTest V4').item.json.data.solution.lot_number }}, pass_token={{ $('Solve GeeTest V4').item.json.data.solution.pass_token }}, gen_time={{ $('Solve GeeTest V4').item.json.data.solution.gen_time }}, captcha_output={{ $('Solve GeeTest V4').item.json.data.solution.captcha_output }} |
Importante: Reemplaza
YOUR_USERNAMEyYOUR_PASSWORDcon tus credenciales reales. Además, es posible que debas ajustar los nombres de los campos del formulario para que coincidan con el HTML de tu sitio de destino.
4. Responder a Webhook (Éxito/Fallo)
| Configuración | Valor |
|---|---|
| Responder con | JSON |
| Cuerpo de la respuesta | ={{ JSON.stringify($json) }} |
Pruébalo
Envía una solicitud POST a tu punto final de Webhook:
bash
curl -X POST https://your-n8n-instance.com/webhook/login-geetest-v4 \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"captchaId": "e392e1d7fd421dc63325744d5a2b9c73",
"username": "testuser",
"password": "testpass"
}'
Respuesta esperada (Éxito):
json
{
"status": "success",
"message": "Login successful",
"solution": {
"captcha_id": "e392e1d7fd421dc63325744d5a2b9c73",
"lot_number": "7c18c041a6ed4e...",
"pass_token": "d88ce40c0a5c5a18...",
"gen_time": "1709123456",
"captcha_output": "dGVzdF9jYXB0Y2hh..."
}
}
Respuesta esperada (Fallo):
json
{
"status": "failed",
"message": "Login failed: Invalid credentials or captcha",
"error": "..."
}
Importar este flujo de trabajo
Copia el JSON a continuación e impórtalo a n8n a través de Menu > Import from JSON:
Haz clic para expandir el JSON completo del flujo de trabajo
json
{
"name": "GeeTest V4 Account Login — CapSolver + Schedule + Webhook",
"nodes": [
{
"parameters": {
"content": "## Automatización de inicio de sesión de cuenta de GeeTest V4 — CapSolver + Programación + Webhook\n\n**Para quién es:** Equipos que necesitan automatizar el inicio de sesión en cuentas protegidas por GeeTest V4.\n\n**Qué hace:** Resuelve el desafío de GeeTest V4 y envía el formulario de inicio de sesión con el token resuelto y las credenciales de usuario.\n\n**Cómo funciona:**\n1. El Webhook activa el flujo.\n2. El CapSolver resuelve el desafío de GeeTest V4.\n3. Una solicitud HTTP envía el formulario de inicio de sesión con el token resuelto y las credenciales de usuario.\n4. El Webhook devuelve el resultado del inicio de sesión.\n\n**Configuración:**\n1. Agrega tu clave API de CapSolver en **Settings → Credentials**.\n2. Reemplaza la URL de marcador de posición y las credenciales.\n3. Ajusta los nombres de los campos del formulario para que coincidan con tu sitio de destino.\n4. Activa el flujo de trabajo.",
"height": 480,
"width": 460,
"color": 1
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-728,
-400
],
"id": "sticky-blog-main-1773678228112-1",
"name": "Sticky Note"
},
{
"parameters": {
"httpMethod": "POST",
"path": "login-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-400,
0
],
"id": "a2b3c4d5-0001-0001-0001-a2b3c4d50001",
"name": "Webhook Trigger",
"webhookId": "a2b3c4d5-aaaa-bbbb-cccc-a2b3c4d50001",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $json.body.websiteURL }}",
"captchaId": "={{ $json.body.captchaId }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
0
],
"id": "a2b3c4d5-0001-0001-0001-a2b3c4d50002",
"name": "Solve GeeTest V4",
"credentials": {
"capSolverApi": {
"id": "YOUR_CREDENTIAL_ID",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ $json.body.websiteURL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
},
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "username",
"value": "={{ $json.body.username }}"
},
{
"name": "password",
"value": "={{ $json.body.password }}"
},
{
"name": "captcha_id",
"value": "={{ $('Solve GeeTest V4').item.json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $('Solve GeeTest V4').item.json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $('Solve GeeTest V4').item.json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $('Solve GeeTest V4').item.json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $('Solve GeeTest V4').item.json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {
"fullResponse": false
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
0
],
"id": "a2b3c4d5-0001-0001-0001-a2b3c4d50003",
"name": "Submit Login Form"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
512,
0
],
"id": "a2b3c4d5-0001-0001-0001-a2b3c4d50004",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook Trigger": {
"main": [
[
{
"node": "Solve GeeTest V4",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4": {
"main": [
[
{
"node": "Submit Login Form",
"type": "main",
"index": 0
}
]
]
},
"Submit Login Form": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Solución de problemas
"Acceso a GeeTest V4 no encontrado"
Este error indica que tu cuenta o plan de CapSolver no incluye acceso a GeeTest V4. Verifica tu Panel de CapSolver para confirmar si este servicio está incluido en tu plan.
"URL del sitio web no válida"
Este error indica que el parámetro websiteURL que proporcionaste en el nodo CapSolver es incorrecto. Vuelve a verificar la pestaña de red de las herramientas de desarrollador de tu sitio de destino para asegurarte de que estás utilizando el valor correcto.
"El inicio de sesión falla incluso con GeeTest V4 resuelto"
Si el inicio de sesión falla incluso con GeeTest V4 resuelto con éxito, el problema puede estar en los siguientes puntos:
- Credenciales incorrectas: Vuelve a verificar el nombre de usuario y la contraseña que enviaste en el formulario de inicio de sesión.
- Incompatibilidad de sesión: Si el proceso de inicio de sesión implica sesiones o cookies, asegúrate de mantener la misma sesión entre la obtención del desafío de GeeTest V4 y el envío del formulario de inicio de sesión.
- Otros campos del formulario: El sitio de destino puede requerir campos ocultos adicionales, tokens CSRF u otros parámetros para que el inicio de sesión sea exitoso. Inspecciona el HTML del formulario para identificar cualquier otro campo necesario.
- User-Agent: Algunos sitios pueden rechazar solicitudes basadas en la cadena del user-agent. Intenta establecer un user-agent de navegador común en tu solicitud HTTP.
"Credenciales de CapSolver no válidas"
Este error indica que la clave API de CapSolver que configuraste en n8n es incorrecta o ha caducado. Verifica tu Panel de CapSolver y actualiza las credenciales en n8n.
Mejores prácticas
- Mantener la sesión: Si el sitio de destino utiliza sesiones o cookies, asegúrate de mantener la misma sesión entre la obtención del desafío y el envío del formulario. En n8n, puedes manejar las cookies usando el nodo HTTP Request.
- Validar parámetros: Vuelve a verificar que el
websiteURLy cualquier parámetro opcional comocaptchaIdygeetestApiServerSubdomainsean correctos. Estos son cruciales para una resolución exitosa de GeeTest V4. - Manejar errores: Incluye lógica de manejo de errores en tus flujos de trabajo para manejar fallas de resolución o inicio de sesión de manera elegante. Esto puede incluir mecanismos de reintento o notificaciones.
- Usar un User-Agent apropiado: Establece una cadena de user-agent de navegador común en todas tus solicitudes HTTP para evitar ser bloqueado por el sitio.
- Probar e iterar: Las implementaciones de GeeTest V4 pueden variar entre sitios. Comienza poco a poco, prueba tus flujos de trabajo e itera según sea necesario para asegurarte de que funcionen de manera confiable en tu destino específico.
- No se necesita proxy: A diferencia de otros tipos de CAPTCHA, la solución de GeeTest V4 generalmente no requiere que proporciones un proxy. CapSolver maneja los requisitos de proxy internamente.
¿Listo para empezar? Regístrate en CapSolver y usa el código de bonificación n8n para obtener un 8% de bonificación adicional en tu primera recarga.

Preguntas frecuentes
¿Qué es GeeTest V4?
GeeTest V4 es la última generación del sistema CAPTCHA de comportamiento de GeeTest, que utiliza desafíos adaptativos y análisis de comportamiento para proteger los sitios web.
¿En qué se diferencia GeeTest V4 de GeeTest V3?
GeeTest V4 es estructuralmente más simple que V3, ya que solo requiere un parámetro captchaId estático en lugar del flujo de desafío dinámico que necesita V3. También utiliza el script gcaptcha4.js y devuelve 5 campos de solución.
¿Cuánto cuesta resolver un desafío de GeeTest V4?
Los precios varían según el uso. Consulta la página de precios de CapSolver para conocer los precios actuales de GeeTest V4. Las tareas de resolución de GeeTest V4 son más caras que el reconocimiento simple de imagen a texto, pero más baratas que otros tipos de CAPTCHA complejos.
¿Cuánto tiempo se tarda en resolver un desafío de GeeTest V4?
Las tareas de resolución de GeeTest V4 suelen tardar entre 10 y 30 segundos, dependiendo de la complejidad del desafío y la carga del servidor de CapSolver. A diferencia de ImageToTextTask, la resolución de GeeTest V4 implica la creación y el sondeo de tareas, por lo que no es instantánea.
¿Necesito un proxy para GeeTest V4?
El servicio de resolución de GeeTest V4 de CapSolver generalmente no requiere que proporciones un proxy. CapSolver maneja los requisitos de proxy internamente. Solo necesitas proporcionar la websiteURL y el captchaId.
¿Por qué no se acepta mi token de GeeTest V4?
Si tu token de GeeTest V4 no se acepta, verifica lo siguiente:
- Incompatibilidad de sesión: Asegúrate de mantener la misma sesión y cookies entre la obtención del desafío de GeeTest V4 y el envío del formulario.
- Otros campos del formulario: Inspecciona el HTML del formulario para ver si hay campos ocultos adicionales o tokens CSRF que debas enviar.
- User-Agent: Intenta establecer un user-agent de navegador común en tu solicitud HTTP.
- Parámetros: Asegúrate de que los parámetros
websiteURLycaptchaIdsean correctos.
¿Por qué falla el inicio de sesión incluso con GeeTest V4 resuelto?
Si el inicio de sesión falla incluso con GeeTest V4 resuelto con éxito, verifica lo siguiente:
- Credenciales: Asegúrate de que estás enviando el nombre de usuario y la contraseña correctos.
- Sesión/Cookies: Asegúrate de mantener la misma sesión y cookies entre la obtención del desafío y el envío del formulario de inicio de sesión.
- Otros campos del formulario: Inspecciona el HTML del formulario para ver si hay campos ocultos adicionales o tokens CSRF que debas enviar.
- User-Agent: Intenta establecer un user-agent de navegador común en tu solicitud HTTP.
¿Se puede usar este flujo de trabajo con n8n Cloud?
Sí. Este flujo de trabajo funciona tanto con n8n autoalojado como con n8n Cloud. El nodo CapSolver ya está disponible como una integración oficial. Solo necesitas agregar tus credenciales de API.
Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.
Máse

Cómo Resolver reCAPTCHA v2/v3 Usando CapSolver y n8n
Crea una API para resolver reCAPTCHA v2/v3 utilizando CapSolver y n8n. Aprende a automatizar la obtención de tokens, enviarlos a los sitios web y extraer datos protegidos sin necesidad de programar.

Aloísio Vítor
22-Apr-2026

Cómo resolver GeeTest V3 en n8n con CapSolver: Guía completa de integración
Aprende a integrar CapSolver con n8n para resolver GeeTest V3 y crear flujos de trabajo de automatización fiables.

Ethan Collins
18-Mar-2026

Cómo resolver ImageToText usando CapSolver y n8n
imagen a texto, solucionador de captcha, captcha OCR, capsolver, n8n, flujo de trabajo n8n, automatización, API OCR, automatización de captcha, imagen base64, reconocimiento de imágenes, OCR con IA, webhook, flujo de trabajo programado, automatización de formularios, omisión de captcha, gestión de sesiones, captcha sin proxy, OCR instantáneo, reconocimiento de texto

Nikolai Smirnov
18-Mar-2026

Cómo usar CapSolver en n8n: La guía completa para resolver CAPTCHA en tus flujos de trabajo
Aprende cómo integrar CapSolver con n8n para resolver CAPTCHAs y crear flujos de trabajo de automatización confiables con facilidad.

Adélia Cruz
18-Mar-2026

Cómo resolver puzzles visuales en n8n con CapSolver
Resuelve CAPTCHAs visuales con el motor de visión de CapSolver en n8n. Maneja deslizadores, rotación, selección de objetos y OCR de GIF de forma inmediata.

Aloísio Vítor
18-Mar-2026

Cómo resolver el fingerprinting TLS en n8n con CapSolver
Resolver la huella dactilar TLS en n8n con CapSolver. Hacer que las solicitudes parezcan navegadores reales y evitar bloques de detección de bots.

Adélia Cruz
18-Mar-2026

