ProductosIntegracionesRecursosDocumentaciónPrecios
Empezar ahora

© 2026 CapSolver. All rights reserved.

Contáctenos

Slack: lola@capsolver.com

Productos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensión de navegador
  • Más tipos de CAPTCHA

Integraciones

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Socios
  • Ver todas las integraciones

Recursos

  • Programa de referidos
  • Documentación
  • Referencia de API
  • Blog
  • Preguntas frecuentes
  • Glosario
  • Estado

Legal

  • Términos de servicio
  • Política de privacidad
  • Política de reembolso
  • No vender mi información personal
Blog/n8n/Cómo resolver GeeTest V4 en n8n con CapSolver: Guía completa de integración
Mar12, 2026

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

Emma Foster

Emma Foster

Machine Learning Engineer

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 captchaId está 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:

  1. Una instancia de n8n — Ya sea autoalojada o n8n Cloud
  2. Una cuenta de CapSolver — Regístrate aquí y obtén tu clave API
  3. 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í.

Página de credenciales de n8n que muestra la cuenta de CapSolver

Paso 2: Crear la credencial de CapSolver

  1. Haz clic en Create credential (arriba a la derecha)
  2. Busca "CapSolver" y selecciona CapSolver API
  3. Introduce tu clave API — cópiala directamente desde el Panel de CapSolver
  4. Deja Allowed HTTP Request Domains configurado en All (predeterminado)
  5. 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.

Configuración de credenciales de CapSolver con prueba de conexión exitosa

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

  1. Abre Ver código fuente (Ctrl+U) o usa la pestaña Elements de las DevTools
  2. Busca captcha_id o captchaId en el código fuente de la página
  3. Busca referencias a gcaptcha4.js, el script del widget de GeeTest V4
  4. El captchaId se suele pasar como parámetro de configuración al inicializar el widget
html Copy
<!-- 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

  1. Abre DevTools (F12) > pestaña Network
  2. Filtra las solicitudes por gcaptcha4 o geetest
  3. Busca solicitudes a gcaptcha4.geetest.com; el parámetro captcha_id estará en la cadena de consulta

Ventaja clave de V4: El captchaId es 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:

  1. Webhook — Recibe solicitudes POST entrantes con parámetros de GeeTest V4
  2. GeeTest V4 — Envía el desafío a CapSolver y espera una solución
  3. ¿Error de CapSolver? — Nodo IF que se ramifica según si la resolución falló (es decir, $json.error no está vacío)
  4. 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 geetestApiServerSubdomain rara 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 Copy
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 Copy
{
  "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 Copy
{
  "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:

Copy
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.lastPrice persiste 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 Copy
{
  "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:

  1. Webhook — Recibe una solicitud POST entrante que activa la automatización de inicio de sesión
  2. Resolver GeeTest V4 — Envía el desafío a CapSolver y espera una solución
  3. 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
  4. 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_USERNAME y YOUR_PASSWORD con 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 Copy
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 Copy
{
  "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 Copy
{
  "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 Copy
{
  "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

  1. 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.
  2. Validar parámetros: Vuelve a verificar que el websiteURL y cualquier parámetro opcional como captchaId y geetestApiServerSubdomain sean correctos. Estos son cruciales para una resolución exitosa de GeeTest V4.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Banner de código de bonificación de CapSolver

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 websiteURL y captchaId sean 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.

Ver más

n8nMar 09, 2026

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
Aloísio Vítor
n8nMar 12, 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.

Contenido

Ethan Collins
Ethan Collins
n8nMar 16, 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
Nikolai Smirnov
n8nMar 17, 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
Adélia Cruz