Tutoriales

Depuración de llamadas API CAPTCHA con Charles Proxy

Cuando tu integración CAPTCHA arroja errores inesperados, la inspección del tráfico HTTP sin procesar revela exactamente lo que se envía y recibe. Charles Proxy se sitúa entre tu código y CaptchaAI, permitiendo ver cada solicitud, respuesta y detalle de timing.


Configuración

1. Instale el proxy Charles

Descarga desde charlesproxy.com. Disponible en Windows, macOS y Linux.

2. Habilite el proxy SSL

CaptchaAI utiliza HTTPS. Para inspeccionar el tráfico cifrado:

  1. Proxy -> Configuración de proxy SSL -> Agregar
  2. Anfitrión: ocr.captchaai.com, Puerto: 443
  3. Ayuda -> Proxy SSL -> Instalar certificado raíz de Charles
  4. Confíe en el certificado en el almacén de certificados de su sistema operativo

3. Configure su código para usar Charles

Charles se ejecuta en localhost:8888 de forma predeterminada.

Python:

import requests

proxies = {
    "http": "http://localhost:8888",
    "https": "http://localhost:8888",
}

# Disable SSL verification for Charles (development only)
resp = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={"key": "YOUR_API_KEY", "method": "userrecaptcha", "json": "1"},
    proxies=proxies,
    verify=False,
)

Node.js:

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

const agent = new HttpsProxyAgent('http://localhost:8888');

const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: { key: 'YOUR_API_KEY', method: 'userrecaptcha', json: 1 },
  httpsAgent: agent,
});

Qué inspeccionar

Solicitud de envío (POST /in.php)

En Charles, haz clic en la solicitud a /in.php. Verifica:

Pestaña Qué verificar
Request → Cabeceras El Content-Type es correcto
Request → Cuerpo Todos los parámetros requeridos presentes
Response → Cuerpo {"status":1,"request":"TASK_ID"} en éxito
Timing Duración de la solicitud (debe ser <1 s)

Problemas comunes visibles en Charles:

  • Falta el parámetro method -> ERROR_BAD_PARAMETERS
  • Tipo de contenido incorrecto -> Parámetros no analizados
  • Vacío googlekey -> ERROR_WRONG_GOOGLEKEY
  • Cuerpo JSON con formato incorrecto -> Utilice datos de formulario, no cuerpo JSON

Solicitud de sondeo (GET /res.php)

Consulta las solicitudes de consulta:

  • Parámetros: key, action=get, id=TASK_ID
  • Respuesta: CAPCHA_NOT_READY (seguir sondeando) o {"status":1,"request":"TOKEN"}
  • Tiempo: Cada consulta seguida de su intervalo de sueño

Depurar problemas comunes

Problema: ERROR_WRONG_GOOGLEKEY

En Charles, mire el cuerpo de envío de solicitud. Busque el campo googlekey:

# What Charles shows:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
                                      ^^^^^^^^ empty!

Solución: la extracción de la clave del sitio falló en sentido ascendente. Verifique su código de extracción.

Problema: token rechazado por el sitio de destino

Compare lo que devolvió CaptchaAI con lo que está inyectando:

  1. En Charles, encuentre la respuesta /res.php con status: 1
  2. Copie el token completo del campo request
  3. Encuentre la solicitud posterior al sitio de destino
  4. Verifique que el token esté en el cuerpo del formulario como g-recaptcha-response

Problema: Se agota el tiempo de espera de las solicitudes

Utilice la vista Charles Secuencia para ver el tiempo:

POST /in.php     → 234ms ✓
GET  /res.php    → 189ms (CAPCHA_NOT_READY)
GET  /res.php    → 201ms (CAPCHA_NOT_READY)
GET  /res.php    → 195ms (CAPCHA_NOT_READY)
... 23 more ...
GET  /res.php    → 188ms (CAPCHA_NOT_READY)  ← never resolves

Si nunca se resuelve: verifique si la clave del sitio y la URL de la página son correctas.


Funciones de Charles para la depuración de CAPTCHA

Repetir solicitud

Haga clic derecho en cualquier solicitud -> Repetir para volver a enviarla. Útil para probar solicitudes de consulta sin volver a ejecutar todo el script.

Puntos de interrupción

Establezca un punto de interrupción en /in.php para inspeccionar y modificar la solicitud antes de enviarla:

  1. Proxy -> Configuración de punto de interrupción -> Agregar
  2. Anfitrión: ocr.captchaai.com, Ruta: /in.php
  3. Consultar Solicitar
  4. Ahora su código se detiene antes de enviarlo; puede editar los parámetros

Mapa local

Reemplace las respuestas de la API con archivos locales para realizar pruebas:

  1. Herramientas -> Mapa local -> Agregar
  2. Asigne https://ocr.captchaai.com/res.php a un archivo JSON local
  3. Crear mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}

Esto le permite probar su código de inyección de token sin utilizar créditos API.

acelerador

Simular conexiones lentas:

  1. Proxy -> Configuración del acelerador -> Habilitar
  2. Establezca velocidades preestablecidas en 3G o EDGE-level
  3. Pruebe si su código maneja correctamente las respuestas lentas y los tiempos de espera

Alternativas a Carlos

Herramienta Plataforma HTTPS Costo
Charles Proxy Win/Mac/Linux Requiere instalación de certificado De pago (prueba gratuita)
mitmproxy Win/Mac/Linux Requiere instalación de certificado Gratis
Fiddler Windows Descifrado HTTPS incorporado Gratis
Proxyman macOS Configuración HTTPS con un clic Freemium

Configuración rápida de mitmproxy

# Install
pip install mitmproxy

# Run
mitmproxy --listen-port 8080

# Configure Python
proxies = {"https": "http://localhost:8080"}

Solución de problemas

Problema Causa Solución
Errores SSL en el código Certificado de Charles no confiable Instala el certificado raíz de Charles; usa verify=False en desarrollo
No hay solicitudes visibles El código no usa proxy Establece el proxy en la configuración de requests/axios
Respuesta HTTPS confusa Proxy SSL no habilitado Agrega ocr.captchaai.com a la configuración de proxy SSL
Charles ralentiza las solicitudes Breakpoints habilitados Deshabilita los breakpoints cuando no sean necesarios

Preguntas frecuentes

¿Debería utilizar Charles en producción?

No. Charles es una herramienta de desarrollo y depuración. Utilice registros y monitoreo estructurados para la observabilidad de la producción.

¿El enrutamiento a través de Charles afecta la resolución de CAPTCHA?

No. CaptchaAI no ve a Charles como un representante: sus solicitudes se transmiten de forma transparente.


Guías relacionadas

Los comentarios están deshabilitados para este artículo.