ProdutosIntegraçõesRecursosDocumentaçãoPreços
Começar agora

© 2026 CapSolver. All rights reserved.

Contacte-nos

Slack: lola@capsolver.com

Produtos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensão de Navegador
  • Mais tipos de CAPTCHA

Integrações

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Parceiros
  • Ver todas as integrações

Recursos

  • Programa de Referenciação
  • Documentação
  • Referência da API
  • Blog
  • FAQ
  • Glossário
  • Estado

Legal

  • Termos de Serviço
  • Política de Privacidade
  • Política de Reembolso
  • Não vender os meus dados pessoais
Blog/n8n/Como resolver o GeeTest V3 no n8n com o CapSolver: Guia de integração completo
Mar12, 2026

Como resolver o GeeTest V3 no n8n com o CapSolver: Guia de integração completo

Anh Tuan

Anh Tuan

Data Science Expert

O GeeTest V3 é um dos CAPTCHAs comportamentais mais amplamente implantados na web. Ao contrário dos desafios de caixa de seleção simples, o GeeTest V3 usa quebra-cabeças interativos — deslizar para verificar, seleção de ícones e correspondência de palavras — para distinguir humanos de bots. É comumente encontrado em páginas de login, formulários de registro e sites com muitos dados na Ásia e, cada vez mais, em todo o mundo.

E se você pudesse resolver o GeeTest V3 automaticamente em seus fluxos de trabalho n8n — seja construindo uma API de resolução reutilizável, extraindo dados de um site protegido por captcha ou automatizando um formulário de login — tudo sem escrever uma única linha de código tradicional?

Neste guia, você aprenderá como combinar n8n (uma ferramenta de automação de fluxo de trabalho visual) com CapSolver (um serviço de resolução de captcha alimentado por IA) para resolver desafios do GeeTest V3 sob demanda — seja como um endpoint de API autônomo ou como uma etapa em qualquer fluxo de trabalho de automação maior.

O que você vai construir:

API de Resolução — um endpoint reutilizável que suas outras ferramentas podem chamar:

  • Uma API de resolução do GeeTest V3

Fluxos de trabalho de uso direto — CapSolver incorporado como uma etapa em automações maiores:

  • Um raspador de preços e produtos que resolve o GeeTest V3, busca páginas protegidas e alerta sobre mudanças de preço
  • Uma automação de login de conta que resolve o GeeTest V3 antes de enviar as credenciais

O que é o GeeTest V3?

O GeeTest V3 é um sistema CAPTCHA de desafio-resposta que verifica usuários por meio de tarefas interativas. Ao contrário do reCAPTCHA (que usa um único token) ou do Cloudflare Turnstile (que é executado de forma invisível), o GeeTest V3 apresenta quebra-cabeças visíveis que exigem interação do usuário:

  • Quebra-cabeça deslizante — Arraste um controle deslizante para completar uma peça do quebra-cabeça
  • Clique no ícone — Clique em ícones específicos na ordem correta
  • Correspondência de palavras — Selecione caracteres que correspondam a um prompt

Do ponto de vista da resolução, o GeeTest V3 tem dois parâmetros críticos:

  • gt — Um identificador por site (como uma chave de site). Isso é estático — não muda entre as sessões.
  • challenge — Um token por sessão. Isso é dinâmico — muda a cada vez e expira em aproximadamente 60-120 segundos.

Este parâmetro challenge dinâmico é a principal diferença de outros tipos de CAPTCHA. Todo fluxo de trabalho que resolve o GeeTest V3 precisa de uma etapa adicional para buscar um novo desafio antes de enviá-lo ao CapSolver.

Formato da Solução: Ao contrário do reCAPTCHA ou Turnstile que retornam um único token, o GeeTest V3 retorna três valores separados:

  • challenge — A string de desafio resolvida
  • validate — O hash de validação
  • seccode — O código de segurança

Estes são enviados como três campos de formulário: geetest_challenge, geetest_validate e geetest_seccode.

GeeTest V3 vs V4: O GeeTest V4 usa uma estrutura de API diferente (captcha_id em vez de gt, sem uma busca de challenge separada). Este guia cobre especificamente o V3. Se você vir captcha_id no código-fonte da página, você está lidando com o V4.


Pré-requisitos

Antes de começar, certifique-se de ter o seguinte:

  1. Uma instância n8n — Auto-hospedada ou n8n Cloud
  2. Uma conta CapSolver — Cadastre-se aqui e obtenha sua chave de API
  3. O nó CapSolver n8n — Já disponível como um nó oficial no n8n (sem necessidade de instalação)

Importante: Certifique-se de ter saldo suficiente em sua conta CapSolver. As tarefas de resolução do GeeTest V3 consomem créditos com base no uso.


Configurando o CapSolver no n8n

O CapSolver está disponível como uma integração oficial no n8n — sem necessidade de instalação de nós da comunidade. Você pode encontrá-lo diretamente no painel de nós ao construir seus fluxos de trabalho.

Como é uma integração oficial, você precisará criar uma credencial no n8n para que o nó CapSolver possa autenticar com sua conta.

Passo 1: Abra a página de credenciais

Vá para sua instância n8n e navegue até Settings -> Credentials. Você verá todas as suas credenciais configuradas aqui.

Página de credenciais do n8n mostrando a conta CapSolver

Passo 2: Crie a credencial CapSolver

  1. Clique em Create credential (canto superior direito)
  2. Pesquise por "CapSolver" e selecione CapSolver API
  3. Insira sua chave de API — copie-a diretamente do Painel CapSolver
  4. Deixe Allowed HTTP Request Domains definido como All (padrão)
  5. Clique em Save

O n8n testará automaticamente a conexão. Você deverá ver um banner verde "Connection tested successfully" confirmando que sua chave de API é válida.

Configuração de credenciais do CapSolver com teste de conexão bem-sucedido

Importante: Cada nó CapSolver em seus fluxos de trabalho fará referência a esta credencial. Você só precisa criá-la uma vez — todos os seus fluxos de trabalho de resolução compartilharão a mesma credencial.

Agora você está pronto para construir seu fluxo de trabalho de resolução do GeeTest V3!


Como identificar os parâmetros do GeeTest V3

Antes de resolver um desafio do GeeTest V3, você precisa encontrar três coisas: o parâmetro gt, o endpoint da API de desafio e entender como o valor challenge é buscado dinamicamente.

Método 1: Aba de Rede das Ferramentas do Desenvolvedor

  1. Abra as Ferramentas do Desenvolvedor (F12) -> aba Rede
  2. Acione o desafio GeeTest na página
  3. Procure por solicitações que contenham gt= na URL ou respostas que contenham os campos "gt" e "challenge"
  4. Padrões de endpoint comuns:
    • /api/geetest/register
    • /gt/register-slide
    • /captcha?gt=...
  5. A resposta geralmente se parece com isto:
json Copy
{
  "gt": "81dc9bdb52d04dc20036dbd8313ed055",
  "challenge": "4a8a08f09d37b73795649038408b5f33ab",
  "success": 1,
  "new_captcha": true
}

Entendendo o Desafio Dinâmico

Este é o conceito mais importante para a automação do GeeTest V3:

  • O valor gt é estático por site — permanece o mesmo em todas as sessões
  • O valor challenge é dinâmico — muda a cada vez e expira em ~60-120 segundos
  • Você deve buscar um novo challenge imediatamente antes de enviar a solicitação de resolução para o CapSolver
  • O endpoint da API de desafio é específico do site (por exemplo, https://example.com/api/geetest/register)

Isso significa que todo fluxo de trabalho do GeeTest V3 precisa de um nó de Solicitação HTTP adicional antes do nó CapSolver para buscar o novo desafio. Esta é a principal diferença estrutural dos fluxos de trabalho reCAPTCHA ou Turnstile.

Dica: Adicione ?t={{ Date.now() }} à URL da API de desafio como um parâmetro anti-cache para garantir que você sempre obtenha um novo desafio.

Para um guia detalhado sobre como identificar os parâmetros do captcha, consulte a documentação oficial do CapSolver.


Fluxo de Trabalho: API de Resolução do GeeTest V3

Este fluxo de trabalho cria um endpoint POST que aceita parâmetros do GeeTest V3 e retorna um desafio resolvido. Ao contrário dos resolvedores de reCAPTCHA ou Turnstile, o chamador deve fornecer o valor challenge (recém-buscado) junto com gt e websiteURL.

Fluxo de trabalho de resolução do GeeTest V3 no n8n

Como funciona

O fluxo de trabalho consiste em quatro nós:

  1. Webhook — Recebe solicitações POST de entrada com parâmetros do GeeTest V3
  2. GeeTest V3 — Envia o desafio para o CapSolver e aguarda uma solução
  3. Erro do CapSolver? — Nó IF que ramifica com base se a resolução falhou ($json.error não está vazio)
  4. Responder ao Webhook — Retorna a solução em caso de sucesso, ou {"error": "..."} em caso de falha

Configuração do Nó

1. Nó Webhook

Configuração Valor
Método HTTP POST
Caminho solver-geetest-v3
Responder Response Node

Isso cria um endpoint em: https://your-n8n-instance.com/webhook/solver-geetest-v3

2. Nó CapSolver GeeTest V3

Parâmetro Valor Descrição
Operação GeeTest V3 Deve ser definido como GeeTest V3
Tipo GeeTestTaskProxyLess Única opção disponível — variante sem proxy
URL do Site ={{ $json.body.websiteURL }} A URL da página com o desafio GeeTest
GT ={{ $json.body.gt }} O identificador GeeTest por site
Desafio ={{ $json.body.challenge }} O desafio dinâmico por sessão (deve ser novo)
Subdomínio do Servidor API GeeTest (Opcional) Servidor API GeeTest personalizado se o site usar um

Também selecione suas credenciais CapSolver no nó.

3. Nó Erro do CapSolver? (IF)

Configuração Valor
Condição ={{ $json.error }} não está vazio
Ramo Verdadeiro Roteia para o nó Erro Responder ao Webhook
Ramo Falso Roteia para o nó Sucesso Responder ao Webhook

Isso torna o caminho de erro explícito na tela. O nó CapSolver continua em caso de erro (onError: continueRegularOutput), então as falhas chegam aqui como { "error": "..." } em vez de travar o fluxo de trabalho.

4. Nós Responder ao Webhook

Ramo de Sucesso (saída falsa de Erro do CapSolver?):

Configuração Valor
Responder com JSON
Corpo da Resposta ={{ JSON.stringify($json.data) }}

Teste

Envie uma solicitação POST para o seu endpoint de webhook:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-geetest-v3 \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/login",
    "gt": "81dc9bdb52d04dc20036dbd8313ed055",
    "challenge": "4a8a08f09d37b73795649038408b5f33ab"
  }'

Resposta esperada:

json Copy
{
  "taskId": "abc123...",
  "solution": {
    "challenge": "4a8a08f09d37b73795649038408b5f33",
    "validate": "68f0c05d0c8a8b2b1e2f3a4b5c6d7e8f",
    "seccode": "68f0c05d0c8a8b2b1e2f3a4b5c6d7e8f|jordan"
  },
  "status": "ready"
}

Importante: O challenge no corpo da solicitação deve ser recém-buscado. Se você enviar um desafio expirado, o CapSolver não conseguirá resolvê-lo. Os desafios geralmente expiram em 60-120 segundos.

Importar este fluxo de trabalho

Copie o JSON abaixo e importe-o para o n8n via Menu -> Import from JSON:

Clique para expandir o JSON do fluxo de trabalho
json Copy
{
  "name": "GeeTest V3 Scraping — Price & Product Details — CapSolver + Schedule + Webhook",
  "nodes": [
    {
      "parameters": {
        "content": "## Raspagem GeeTest V3 — Monitor de Preços e Produtos — CapSolver + Agendamento + Webhook\n\n**Para quem:** Equipes que monitoram preços ou dados de produtos em sites protegidos por GeeTest V3.\n\n**O que faz:** Resolve o GeeTest V3, busca uma página de produto, extrai preço e nome via seletores CSS, compara com os valores armazenados e alerta sobre alterações.\n\n**Como funciona:**\n1. O agendador (a cada 6h) ou o Webhook acionam o fluxo\n2. O CapSolver resolve o desafio GeeTest V3\n3. A solicitação HTTP busca a página do produto com o token resolvido\n4. O nó HTML extrai o preço e o nome do produto\n5. O nó de código compara o preço atual com o armazenado → alerta sobre alterações\n\n**Configuração:**\n1. Adicione sua chave de API CapSolver em **Settings → Credentials**\n2. Substitua as URLs de placeholder e as chaves de site\n3. Atualize os seletores CSS em Extrair Dados para corresponder à sua página de destino\n4. Conecte a saída de Construir Alerta ao seu canal de notificação",
        "height": 560,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1220,
        -380
      ],
      "id": "sticky-blog-main-1773678228108-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "### Caminho de Agendamento\nExecuta automaticamente a cada 6 horas.\nOs resultados são armazenados nos dados estáticos do fluxo de trabalho para comparação entre as execuções.",
        "height": 480,
        "width": 2200,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -740,
        -280
      ],
      "id": "sticky-blog-section-1773678228108-2",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "### Caminho do Webhook\nAcionador sob demanda — mesma lógica, retorna o resultado como resposta JSON.",
        "height": 480,
        "width": 2200,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -740,
        140
      ],
      "id": "sticky-blog-section-1773678228108-3",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -700,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888801",
      "name": "Every 6 Hours"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888802",
      "name": "Fetch GeeTest Challenge"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888803",
      "name": "Solve GeeTest V3",
      "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"
            },
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888804",
      "name": "Fetch Product Page"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "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": "88888888-8888-8888-8888-888888888805",
      "name": "Extract Data"
    },
    {
      "parameters": {
        "jsCode": "// Get current and previous price from workflow static data\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || \'Product\';\n\n// Parse numeric values for comparison\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// Update stored price\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": "88888888-8888-8888-8888-888888888806",
      "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": "88888888-8888-8888-8888-888888888807",
      "name": "Data Changed?"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-001",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $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": "88888888-8888-8888-8888-888888888808",
      "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": "88888888-8888-8888-8888-888888888809",
      "name": "No Change"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "price-monitor-geetest-v3",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -700,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888810",
      "name": "Webhook Trigger",
      "webhookId": "88888888-aaaa-bbbb-cccc-888888888810",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888811",
      "name": "Fetch GeeTest Challenge [Webhook]"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888812",
      "name": "Solve GeeTest V3 [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"
            },
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888813",
      "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": "88888888-8888-8888-8888-888888888814",
      "name": "Extract Data [Webhook]"
    },
    {
      "parameters": {
        "jsCode": "// Get current and previous price from workflow static data\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || \'Product\';\n\n// Parse numeric values for comparison\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// Update stored price\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": "88888888-8888-8888-8888-888888888815",
      "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": "88888888-8888-8888-8888-888888888816",
      "name": "Data Changed? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-004",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $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": "88888888-8888-8888-8888-888888888817",
      "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": "88888888-8888-8888-8888-888888888818",
      "name": "No Change [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1712,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888819",
      "name": "Respond to Webhook [Webhook]"
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "Fetch GeeTest Challenge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3": {
      "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": "Fetch GeeTest Challenge [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge [Webhook]": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3 [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3 [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"
  }
}

Fluxo de Trabalho: Automação de Login de Conta — Resolver GeeTest V3 e Enviar Credenciais

Este fluxo de trabalho automatiza o envio de formulários de login protegidos por GeeTest V3 do início ao fim. Ele resolve o desafio GeeTest V3 antes de enviar as credenciais.

Como funciona

Este fluxo de trabalho consiste em cinco nós:

  1. Webhook — Recebe solicitações POST de entrada que acionam a automação de login
  2. Buscar Desafio GeeTest — Faz uma solicitação HTTP para o site de destino para obter um novo valor de challenge
  3. Resolver GeeTest V3 — Envia gt, challenge e websiteURL para o CapSolver
  4. Enviar Formulário de Login — Faz uma solicitação HTTP POST para o site de destino, que contém as credenciais e o token GeeTest V3 resolvido
  5. Responder ao Webhook — Retorna o resultado do login

Configuração do Nó

1. Nó Webhook

Configuração Valor
Método HTTP POST
Caminho login-geetest-v3
Responder Response Node

Isso cria um endpoint em: https://your-n8n-instance.com/webhook/login-geetest-v3

2. Buscar Desafio GeeTest (Solicitação HTTP)

Configuração Valor
URL https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}
Opções Full Response = false

Isso retornará uma resposta JSON contendo os valores gt e challenge.

3. Resolver GeeTest V3 (CapSolver)

Parâmetro Valor
Operação GeeTest V3
URL do Site https://YOUR-TARGET-SITE.com/login
GT ={{ $json.gt }}
Desafio ={{ $json.challenge }}

Também selecione suas credenciais CapSolver.

4. Enviar Formulário de Login (Solicitação HTTP)

Configuração Valor
Método POST
URL https://YOUR-TARGET-SITE.com/login
Tipo de Conteúdo form-urlencoded
Parâmetros do Corpo username=YOUR_USERNAME, password=YOUR_PASSWORD, geetest_challenge={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}, geetest_validate={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}, geetest_seccode={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}

Importante: Certifique-se de substituir YOUR_USERNAME e YOUR_PASSWORD pelas credenciais reais. Além disso, você pode precisar ajustar os nomes dos campos do formulário para corresponder ao HTML do site de destino.

5. Responder ao Webhook (Sucesso/Falha)

Configuração Valor
Responder com JSON
Corpo da Resposta ={{ JSON.stringify($json) }}

Teste

Envie uma solicitação POST para o seu endpoint de webhook:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/login-geetest-v3 \
  -H "Content-Type: application/json" \
  -d ''

Resposta esperada (sucesso):

json Copy
{
  "status": "success",
  "message": "Login successful",
  "solution": {
    "challenge": "...",
    "validate": "...",
    "seccode": "..."
  }
}

Resposta esperada (falha):

json Copy
{
  "status": "failed",
  "message": "Login failed: Invalid credentials or captcha",
  "error": "..."
}

Importar este fluxo de trabalho

Copie o JSON abaixo e importe-o para o n8n via Menu -> Import from JSON:

Clique para expandir o JSON do fluxo de trabalho
json Copy
{
  "name": "Account Login Automation — Solve GeeTest V3 & Submit Credentials",
  "nodes": [
    {
      "parameters": {
        "content": "## Automação de Login de Conta — Resolver GeeTest V3 e Enviar Credenciais\n\n**Para quem:** Equipes que precisam automatizar o login em contas protegidas por GeeTest V3.\n\n**O que faz:** Busca o desafio GeeTest V3, resolve-o com o CapSolver e, em seguida, envia o formulário de login com o token resolvido e as credenciais do usuário.\n\n**Como funciona:**\n1. O Webhook aciona o fluxo\n2. A solicitação HTTP busca um novo desafio GeeTest V3\n3. O CapSolver resolve o desafio\n4. A solicitação HTTP envia o formulário de login, que contém o token GeeTest V3 resolvido e as credenciais do usuário\n5. O Webhook responde com o resultado do login\n\n**Configuração:**\n1. Adicione sua chave de API CapSolver em **Settings → Credentials**\n2. Substitua as URLs de placeholder e as credenciais\n3. Ajuste os nomes dos campos do formulário para corresponder ao seu site de destino\n4. Ative o fluxo de trabalho",
        "height": 480,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1020,
        -280
      ],
      "id": "sticky-login-main-1773678228108-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "login-geetest-v3",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -700,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999901",
      "name": "Webhook Trigger",
      "webhookId": "99999999-aaaa-bbbb-cccc-999999999901",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999902",
      "name": "Fetch GeeTest Challenge"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/login",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999903",
      "name": "Solve GeeTest V3",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://YOUR-TARGET-SITE.com/login",
        "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": "YOUR_USERNAME"
            },
            {
              "name": "password",
              "value": "YOUR_PASSWORD"
            },
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999904",
      "name": "Submit Login Form"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        512,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999905",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Fetch GeeTest Challenge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3": {
      "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"
  }
}

Solução de Problemas

"Acesso ao GeeTest V3 não encontrado"

Este erro significa que sua conta ou plano CapSolver não inclui acesso ao GeeTest V3. Verifique seu painel CapSolver para verificar se seu plano inclui este serviço.

"Desafio expirado" ou "Desafio inválido"

O valor challenge do GeeTest V3 é dinâmico e expira rapidamente (geralmente em 60-120 segundos). Você deve buscar um novo challenge imediatamente antes de enviar a solicitação de resolução para o CapSolver. Certifique-se de que seu fluxo de trabalho busca o challenge mais recente antes de cada tentativa de resolução.

"URL do site inválida" ou "Parâmetro GT inválido"

Esses erros indicam que os parâmetros websiteURL ou gt que você forneceu no nó CapSolver estão incorretos. Verifique novamente a aba de rede das ferramentas do desenvolvedor do site de destino para garantir que você está usando os valores corretos.

Login falhou, mesmo que o GeeTest V3 tenha sido resolvido

Se o GeeTest V3 foi resolvido com sucesso, mas o login ainda falha, pode haver um problema com:

  • Credenciais incorretas: Verifique novamente o nome de usuário e a senha que você enviou no formulário de login.
  • Incompatibilidade de sessão: Se o processo de login envolve sessões ou cookies, certifique-se de manter a mesma sessão entre a busca do desafio GeeTest e o envio do formulário de login.
  • Outros campos do formulário: O site de destino pode exigir campos ocultos adicionais, tokens CSRF ou outros parâmetros para um login bem-sucedido. Inspecione o HTML do formulário para identificar quaisquer outros campos necessários.
  • Agente de usuário: Alguns sites podem rejeitar solicitações com base na string do agente de usuário. Tente definir um agente de usuário de navegador comum em suas solicitações HTTP.

"Credenciais do CapSolver inválidas"

Este erro indica que sua chave de API do CapSolver configurada no n8n está incorreta ou expirou. Verifique seu painel CapSolver e atualize as credenciais no n8n.


Melhores Práticas

  1. Sempre busque um novo desafio: Antes de cada tentativa de resolução do GeeTest V3, sempre faça uma solicitação HTTP para o site de destino para obter o valor challenge mais recente. Os desafios expiram rapidamente.
  2. Mantenha a sessão: Se o site de destino usa sessões ou cookies, certifique-se de manter a mesma sessão entre a busca do desafio e o envio do formulário. No n8n, você pode usar nós de solicitação HTTP para lidar com cookies.
  3. Valide os parâmetros: Verifique novamente se os parâmetros gt, websiteURL e challenge estão corretos. Estes são a chave para o sucesso da resolução do GeeTest V3.
  4. Lide com erros: Inclua lógica de tratamento de erros em seus fluxos de trabalho para lidar graciosamente com falhas de resolução ou login. Isso pode incluir mecanismos de repetição ou notificações.
  5. Use um agente de usuário apropriado: Defina uma string de agente de usuário de navegador comum em todas as suas solicitações HTTP para evitar ser bloqueado pelo site.
  6. Teste e itere: As implementações do GeeTest V3 podem variar de site para site. Comece pequeno, teste seu fluxo de trabalho e itere conforme necessário para garantir que ele funcione de forma confiável em seu alvo específico.
  7. Nenhum proxy necessário: Ao contrário de alguns outros tipos de captcha, a resolução do GeeTest V3 geralmente não requer que você forneça um proxy. O CapSolver lida com os requisitos de proxy internamente.

Pronto para começar? Cadastre-se no CapSolver e use o código de bônus n8n para obter um bônus adicional de 8% em sua primeira recarga!

Banner de código de bônus do CapSolver

Conclusão

Você aprendeu como construir uma API de resolução do GeeTest V3 e fluxos de trabalho de automação de login de conta usando n8n e CapSolver.

Resumo:

  • Como o GeeTest V3 funciona — Ele usa quebra-cabeças interativos e depende de um parâmetro gt estático e um parâmetro challenge dinâmico.
  • Como identificar os parâmetros do GeeTest V3 — Use a aba de rede das ferramentas do desenvolvedor para encontrar gt e o endpoint da API de desafio.
  • A importância do desafio dinâmico — Um novo valor de challenge deve ser buscado antes de cada tentativa de resolução.
  • Um endpoint de API de resolução — Aceita parâmetros do GeeTest V3 e retorna o desafio resolvido.
  • Um fluxo de trabalho de automação de login de conta — Resolve o GeeTest V3 antes de enviar as credenciais.
  • Dicas de solução de problemas — Lide com erros comuns, como desafios expirados, parâmetros inválidos e logins falhos.
  • Melhores práticas — Sempre busque um novo desafio, mantenha a sessão, valide os parâmetros e lide com erros.

A principal complexidade do GeeTest V3 reside em seu parâmetro challenge dinâmico e seu formato de solução de três partes. Ao adicionar um nó de solicitação HTTP antes do nó CapSolver para buscar um novo desafio, você pode automatizar efetivamente a resolução do GeeTest V3. Você pode então integrar perfeitamente esses tokens resolvidos em seus fluxos de trabalho de login ou raspagem.

Dica: Esses fluxos de trabalho usam gatilhos de Webhook, mas você pode trocar o nó de gatilho por qualquer outro gatilho n8n — manual, eventos de aplicativo, envios de formulário, etc. Uma vez que o GeeTest V3 é resolvido, use os nós embutidos do n8n para salvar os resultados em Planilhas Google, bancos de dados, armazenamento em nuvem ou enviar alertas via Telegram/Slack/Email.


Perguntas Frequentes

O que é o GeeTest V3?

O GeeTest V3 é um sistema CAPTCHA comportamental que verifica usuários por meio de quebra-cabeças interativos (como quebra-cabeças deslizantes, cliques em ícones e correspondência de palavras). Ele usa um parâmetro gt estático e um parâmetro challenge dinâmico que expira rapidamente.

Como o GeeTest V3 difere do GeeTest V4?

O GeeTest V4 usa uma estrutura de API diferente, como captcha_id em vez de gt, e não requer uma busca de challenge separada. Este guia se concentra especificamente no GeeTest V3. Se você vir captcha_id no código-fonte da página, você está lidando com o V4.

Quanto custa para resolver um desafio do GeeTest V3?

Os preços variam de acordo com o uso. Verifique a página de preços do CapSolver para os preços atuais do GeeTest V3. As tarefas de resolução do GeeTest V3 são geralmente mais caras do que o reconhecimento simples de imagem para texto, mas mais baratas do que alguns outros tipos de captcha complexos.

Quanto tempo leva para resolver um desafio do GeeTest V3?

As tarefas de resolução do GeeTest V3 geralmente levam de 10 a 30 segundos, dependendo da complexidade do desafio e da carga do servidor do CapSolver. Ao contrário do ImageToTextTask, a resolução do GeeTest V3 envolve a criação e o polling de tarefas, portanto, não é instantânea.

Preciso de um proxy para o GeeTest V3?

O serviço de resolução do GeeTest V3 do CapSolver geralmente não exige que você forneça um proxy. O CapSolver lida com os requisitos de proxy internamente. Você só precisa fornecer os parâmetros websiteURL, gt e challenge.

Por que meu valor challenge sempre expira?

O valor challenge do GeeTest V3 é dinâmico e expira rapidamente (geralmente em 60-120 segundos). Você deve buscar um novo challenge imediatamente antes de enviar a solicitação de resolução para o CapSolver. Certifique-se de que seu fluxo de trabalho inclui um nó de solicitação HTTP para buscar o challenge mais recente antes de cada tentativa de resolução.

E se o GeeTest V3 for resolvido com sucesso, mas o login ainda falhar?

Se o GeeTest V3 for resolvido com sucesso, mas o login ainda falhar, verifique o seguinte:

  • Credenciais: Certifique-se de ter enviado o nome de usuário e a senha corretos.
  • Sessão/Cookies: Certifique-se de manter a mesma sessão e cookies entre a busca do desafio e o envio do formulário de login.
  • Outros campos do formulário: Verifique o formulário HTML para ver se há outros campos ocultos ou tokens CSRF necessários.
  • Agente de usuário: Tente definir uma string de agente de usuário de navegador comum em suas solicitações HTTP.

Posso usar este fluxo de trabalho com o n8n Cloud?

Sim. Este fluxo de trabalho funciona tanto com o n8n auto-hospedado quanto com o n8n Cloud. O nó CapSolver já está disponível como uma integração oficial; você só precisa adicionar suas credenciais de API.

Ver mais

n8nMar 09, 2026

Como Resolver reCAPTCHA v2/v3 Usando CapSolver e n8n

Bangun API solver eCAPTCHA v2/v3 menggunakan CapSolver dan n8n. Pelajari cara mengotomatisasi penyelesaian token, mengirimkannya ke website, dan mengekstrak data yang dilindungi tanpa coding.

Adélia Cruz
Adélia Cruz
n8nMar 09, 2026

Como resolver o Cloudflare Turnstile usando CapSolver e n8n

Crie uma API para resolver o Cloudflare Turnstile usando CapSolver e n8n. Aprenda como automatizar a obtenção de tokens, enviá-los para sites e extrair dados protegidos sem necessidade de programação.

Índice

Adélia Cruz
Adélia Cruz
n8nMar 17, 2026

Como usar o CapSolver no n8n: O Guia Completo para resolver CAPTCHA em seus fluxos de trabalho

Aprenda como integrar o CapSolver com o n8n para resolver CAPTCHAs e criar fluxos de trabalho de automação confiáveis com facilidade.

Adélia Cruz
Adélia Cruz
n8nMar 16, 2026

Como resolver o problema ImageToText usando CapSolver e n8n

imagem para texto, solver de captcha, captcha OCR, capsolver, n8n, workflow n8n, automação, API de OCR, automação de captcha, imagem base64, reconhecimento de imagem, OCR com IA, webhook, workflow agendado, automatização de formulários, bypass de captcha, gestão de sessões, captcha sem proxy, OCR instantâneo, reconhecimento de texto

Rajinder Singh
Rajinder Singh