Tutorials

Usando o Fiddler para inspecionar o tráfego da API CaptchaAI

Um erro como {"status":0,"request":"ERROR_ZERO_BALANCE"} não diz muito até você ver a requisição inteira que o gerou.

O Fiddler fica entre o seu código e ocr.captchaai.com, mostra o corpo exato de cada requisição e resposta e revela o que nenhum log de aplicação captura sozinho: headers completos, tempo de resposta e se aquele parâmetro que você jura estar certo realmente chegou certo ao servidor.

Quando vale a pena abrir o Fiddler

  • A API retorna erro, mas os logs do seu código são escassos — o Fiddler mostra o corpo completo da requisição, os headers e a resposta.
  • As requisições de resolução parecem travar — dá para confirmar se a requisição chega ao servidor ou só expira sem resposta.
  • O token parece inválido ao ser injetado — o conteúdo exato do token fica visível, junto com eventuais problemas de codificação.
  • Há falhas relacionadas a proxy — o Fiddler confirma se as requisições realmente passam pelo proxy esperado.
  • Há problemas de rate limit — mostra o tempo de cada requisição e o padrão dos códigos 429.

Configurando a captura HTTPS no Fiddler

O Fiddler atua como um proxy local que intercepta o tráfego HTTPS. Para ver os payloads reais da API CaptchaAI, é preciso ativar a descriptografia antes de qualquer coisa.

No Fiddler Everywhere, abra Settings → HTTPS, ative "Capture HTTPS traffic" e instale o certificado raiz do Fiddler quando solicitado — depois confie nele no repositório de certificados do seu sistema operacional.

No Fiddler Classic (Windows), o caminho é Tools → Options → HTTPS: marque "Decrypt HTTPS traffic" e clique em "Actions" → "Trust Root Certificate".

Aponte seu código para o proxy do Fiddler

O Fiddler escuta em 127.0.0.1:8866 (Fiddler Everywhere) ou 127.0.0.1:8888 (Fiddler Classic).

Python (requests):

import requests

proxies = {
    "http": "http://127.0.0.1:8866",
    "https": "http://127.0.0.1:8866",
}

# Submit CAPTCHA task through Fiddler
response = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "userrecaptcha",
        "googlekey": "SITE_KEY",
        "pageurl": "https://example.com",
        "json": 1,
    },
    proxies=proxies,
    verify=False,  # Required for Fiddler's self-signed cert
)
print(response.json())

JavaScript (Node.js com axios):

const axios = require("axios");
const HttpsProxyAgent = require("https-proxy-agent");

const agent = new HttpsProxyAgent("http://127.0.0.1:8866");

async function submitTask() {
  const response = await axios.post(
    "https://ocr.captchaai.com/in.php",
    new URLSearchParams({
      key: "YOUR_API_KEY",
      method: "userrecaptcha",
      googlekey: "SITE_KEY",
      pageurl: "https://example.com",
      json: 1,
    }),
    {
      httpsAgent: agent,
      proxy: false, // Disable axios default proxy handling
    }
  );
  console.log(response.data);
}

submitTask();

Observação: verify=False (Python) desativa a verificação SSL para o certificado de interceptação do Fiddler. Use isso só durante a depuração — remova antes de ir para produção.

Filtrando o tráfego da CaptchaAI em uma sessão cheia

Adicione filtros para ver só as requisições da CaptchaAI quando a sessão do Fiddler está cheia de outro tráfego. No Fiddler Everywhere, clique na aba Filters, adicione uma regra Hostcontainsocr.captchaai.com e aplique o filtro. No Fiddler Classic, clique na aba Filters, marque "Use Filters" e, em "Hosts", selecione "Show only the following Hosts" e digite ocr.captchaai.com.

A partir daí, só as requisições da API CaptchaAI aparecem na lista de sessões.

Como ler a requisição e a resposta no Fiddler

Envio da tarefa (in.php)

Ao capturar o envio de uma tarefa, confira estes pontos no Fiddler:

  • Headers — o Content-Type deve ser application/x-www-form-urlencoded.
  • Corpo da requisição — confirme se key, method, googlekey/sitekey e pageurl estão corretos.
  • Corpo da resposta — deve retornar {"status":1,"request":"TASK_ID"} em caso de sucesso.
  • Código de resposta — 200 = OK, 403 = problema de chave, 429 = rate limit.

Consulta de status (res.php)

Ao consultar o resultado, verifique o mesmo tipo de pontos:

  • Corpo da requisiçãokey, action=get, id=TASK_ID, json=1.
  • Corpo da respostaCAPCHA_NOT_READY durante o processamento, {"status":1,"request":"TOKEN"} em caso de sucesso.
  • Tempo — verifique o intervalo entre as consultas, que deve ser de 5 segundos ou mais.

Erros comuns que aparecem no Fiddler

  • Corpo da requisição com googlekey vazio — a extração da sitekey falhou no seu código, antes mesmo de chegar à CaptchaAI.
  • Resposta {"status":0,"request":"ERROR_WRONG_USER_KEY"} — a chave de API é inválida.
  • Resposta {"status":0,"request":"ERROR_ZERO_BALANCE"} — a conta está sem saldo.
  • Resposta {"status":0,"request":"ERROR_NO_SLOT_AVAILABLE"} — servidor ocupado, tente novamente.
  • Sem resposta (timeout) — rede ou proxy bloqueando a conexão.
  • Código de status 429 — muitas requisições, reduza o ritmo das consultas.

Pausando requisições com breakpoints

Breakpoints pausam a requisição antes de ela ser enviada, permitindo editá-la. No Fiddler Everywhere, o caminho é Rules → Add Rule, com Match "URL contains ocr.captchaai.com/in.php" e Action "Pause before sending". No Fiddler Classic, use Rules → Automatic Breakpoints → Before Requests, ou digite bpu ocr.captchaai.com direto na barra QuickExec.

Com a requisição em pausa, primeiro inspecione o corpo da requisição para conferir se todos os parâmetros estão corretos. Depois edite os parâmetros — altere method, googlekey ou pageurl para testar valores diferentes. Em seguida retome, clicando em "Run to Completion" para enviar a requisição modificada, e por fim verifique a resposta para ver se a alteração resolveu o problema.

Isso é útil para testar se um valor de parâmetro está causando a falha sem tocar no código.

Solução de problemas comuns

Problema Causa Correção
Fiddler não mostra tráfego O código não está passando pelo proxy do Fiddler Configure o proxy como 127.0.0.1:8866 (Everywhere) ou 8888 (Classic)
Erros de certificado SSL O certificado raiz do Fiddler não é confiável Reinstale o certificado do Fiddler e adicione-o às raízes confiáveis
Corpo da resposta ilegível no Fiddler A resposta está compactada Ative o botão "Decode" na barra de ferramentas (ou Rules → Remove All Encodings)
Breakpoints não são acionados Filtro ou regra não corresponde à URL Confirme se o padrão bate exatamente com ocr.captchaai.com
Tráfego aparece, mas o corpo vem vazio Content-Length não bate ou a resposta é streaming Clique na sessão e aguarde o carregamento completo da resposta

Reproduzindo requisições que falharam

Quando uma requisição falha, dá para reproduzi-la direto no Fiddler: clique com o botão direito na sessão com falha e selecione Replay → Reissue Requests. A mesma requisição é reenviada com headers e corpo idênticos.

Para reproduzir com modificações, clique com o botão direito e escolha Edit in Composer, altere os parâmetros que quiser testar e clique em Execute.

Assim você testa uma correção sem reiniciar a aplicação.

Montando requisições de teste no Composer

Use o Composer do Fiddler para criar requisições da CaptchaAI do zero, sem escrever código:

Envio de tarefa:

POST https://ocr.captchaai.com/in.php
Content-Type: application/x-www-form-urlencoded

key=YOUR_API_KEY&method=userrecaptcha&googlekey=SITE_KEY&pageurl=https://example.com&json=1

Consulta de resultado:

GET https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=TASK_ID&json=1

Isso tem menor latência do que escrever e rodar código só para confirmar se a API está de pé.

Lendo o tempo de cada etapa na aba Timeline

A visualização Timeline do Fiddler mostra a duração de cada trecho da requisição:

  • Resolução de DNS — saudável abaixo de 50 ms; acima de 500 ms indica problema de DNS.
  • Conexão TCP — saudável abaixo de 100 ms; acima de 1.000 ms indica problema de rede.
  • TLS handshake — saudável abaixo de 200 ms; acima de 1.000 ms costuma ser emissão de certificado.
  • Resposta do servidor (in.php) — saudável abaixo de 500 ms; acima de 2.000 ms indica congestionamento do servidor.
  • Resposta do servidor (res.php) — saudável abaixo de 200 ms; acima de 1.000 ms é incomum — verifique o status.

Se os seus workers rodam em uma região como sa-east-1 (São Paulo) e o endpoint da API fica do outro lado do mundo, é normal que a resolução de DNS e o handshake TLS fiquem um pouco acima da faixa saudável mesmo sem nenhum problema real — meça o RTT de referência do seu próprio ambiente antes de declarar uma anomalia de rede.

Exportando sessões para o suporte da CaptchaAI

Se precisar compartilhar dados de depuração com o suporte da CaptchaAI, selecione as sessões relevantes no Fiddler e vá em File → Export Sessions → Selected Sessions, escolhendo o formato HTTPArchive (.har). Remova sua chave de API do arquivo exportado antes de compartilhar:

Find and replace your actual API key with "REDACTED" in the .har file

Perguntas frequentes

O Fiddler expõe minha chave de API no tráfego capturado?

Sim. A chave aparece em texto puro no corpo de cada requisição para in.php e res.php, porque a API da CaptchaAI recebe a chave como parâmetro de formulário. Ao exportar sessões (.har) para o suporte ou para um ticket, remova a chave antes de compartilhar — veja a seção sobre exportação acima.

Dá para depurar chamadas feitas com cURL, ou só bibliotecas HTTP como requests e axios?

Qualquer processo que respeite as variáveis de proxy do sistema operacional funciona, incluindo curl --proxy 127.0.0.1:8866 .... A única exigência é rotear o tráfego pela porta do Fiddler e confiar no certificado raiz — não importa se a chamada vem de um script Python, um comando cURL ou um worker em Go.

O Fiddler ajuda a descobrir por que o googlekey chega vazio na CaptchaAI?

Sim, e é um dos usos mais comuns. Se o corpo da requisição capturado no Fiddler mostra googlekey vazio, o problema está na extração da sitekey no seu próprio código — antes mesmo de a requisição sair para ocr.captchaai.com. Sem o Fiddler, esse tipo de falha costuma aparecer só como um erro genérico no log da aplicação.

O Fiddler serve para depurar CAPTCHA resolvido via Selenium ou Puppeteer, e não só chamadas diretas à API?

Sim. Configure o navegador para usar o Fiddler como proxy e você verá todas as requisições relacionadas ao CAPTCHA — carregamento do widget, busca do desafio e envio do token. É útil para entender o ciclo completo, não só a chamada à API.

Fiddler Classic ou Fiddler Everywhere: qual escolher para depurar a API da CaptchaAI?

Fiddler Everywhere é multiplataforma (Windows, macOS, Linux) e tem interface mais moderna. Fiddler Classic é só para Windows, mas tem recursos de script mais avançados (FiddlerScript). Para depuração básica da API CaptchaAI, qualquer um dos dois resolve.

Artigos relacionados

Próximas etapas

Mensagens de erro claras na API já cortam boa parte do tempo de depuração — comece pela CaptchaAI e recorra ao Fiddler quando precisar descer ao nível da requisição.

Guias relacionados:

Os comentários estão desativados para este artigo.