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 Host → contains → ocr.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/sitekeyepageurlestã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ção —
key,action=get,id=TASK_ID,json=1. - Corpo da resposta —
CAPCHA_NOT_READYdurante 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
googlekeyvazio — 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
- Como proteger a chave de API com whitelist de IP
- Como rotacionar a chave de API da CaptchaAI
- Mapeamento de endpoints: CaptchaAI vs concorrentes
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: