Solución de Problemas

ERROR_PROXY_NOT_AUTHORIZED: Correcciones de autenticación de proxy

ERROR_PROXY_NOT_AUTHORIZED significa que CaptchaAI no puede conectarse a través del proxy especificado. Esta guía cubre todas las causas y soluciones.


Causas comunes

causa Cómo comprobar
Formato de proxy incorrecto Verificar el formato type:host:port:user:pass
El proxy requiere una lista blanca de IP Compruebe si el proveedor de proxy incluye direcciones IP en la lista blanca
Las credenciales de proxy caducaron Pruebe la conexión proxy directamente
Se ha especificado un tipo de proxy incorrecto Verificar HTTP frente a SOCKS4 frente a SOCKS5
Servidor proxy caído Probar la conectividad al proxy
Caracteres especiales en contraseña Codifica la contraseña mediante URL

Formato de proxy correcto

CaptchaAI espera el proxy en este formato:

proxytype: HTTP | HTTPS | SOCKS4 | SOCKS5
proxy: host:port:username:password
import requests

# Correct format
data = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "proxytype": "HTTP",
    "proxy": "192.168.1.1:8080:myuser:mypass",
    "json": 1,
}

resp = requests.post("https://ocr.captchaai.com/in.php", data=data)

Variaciones del formato de proxy

# With authentication
proxy = "192.168.1.1:8080:username:password"

# Without authentication (rare — most captcha proxies need auth)
proxy = "192.168.1.1:8080"

# SOCKS5
proxytype = "SOCKS5"
proxy = "192.168.1.1:1080:user:pass"

Validación antes del envío

import re
import requests


def validate_proxy(proxy_str, proxy_type="HTTP"):
    """Validate proxy format and connectivity."""
    # Check format
    parts = proxy_str.split(":")
    if len(parts) < 2:
        raise ValueError(f"Invalid proxy format: {proxy_str}")

    host = parts[0]
    port = parts[1]

    if not port.isdigit():
        raise ValueError(f"Invalid port: {port}")

    # Check proxy type
    valid_types = {"HTTP", "HTTPS", "SOCKS4", "SOCKS5"}
    if proxy_type not in valid_types:
        raise ValueError(f"Invalid proxy type: {proxy_type}")

    return True


def test_proxy(proxy_str, proxy_type="HTTP"):
    """Test if proxy is working."""
    parts = proxy_str.split(":")
    host = parts[0]
    port = parts[1]

    if len(parts) == 4:
        user, password = parts[2], parts[3]
        proxy_url = f"{proxy_type.lower()}://{user}:{password}@{host}:{port}"
    else:
        proxy_url = f"{proxy_type.lower()}://{host}:{port}"

    proxies = {"http": proxy_url, "https": proxy_url}

    try:
        resp = requests.get(
            "https://httpbin.org/ip",
            proxies=proxies,
            timeout=10,
        )
        print(f"Proxy working. IP: {resp.json()['origin']}")
        return True
    except Exception as e:
        print(f"Proxy failed: {e}")
        return False


# Test before using con CaptchaAI
proxy = "192.168.1.1:8080:user:pass"
if test_proxy(proxy, "HTTP"):
    print("Proxy is ready to use")

Manejo de caracteres especiales en contraseñas

from urllib.parse import quote


def format_proxy(host, port, username, password):
    """Format proxy string, handling special characters."""
    # URL-encode password if it contains special characters
    safe_password = quote(password, safe="")
    return f"{host}:{port}:{username}:{safe_password}"


# Password with special characters
proxy = format_proxy("192.168.1.1", "8080", "user", "p@ss:word!")

Detección de tipo de proxy

def detect_proxy_type(host, port):
    """Try to detect which proxy protocol works."""
    import socket

    for proxy_type in ["HTTP", "SOCKS5", "SOCKS4"]:
        try:
            # Basic TCP connection test
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.settimeout(5)
            result = sock.connect_ex((host, int(port)))
            sock.close()

            if result == 0:
                return proxy_type  # Port is open, try this type
        except Exception:
            continue

    return None

Solución de problemas

Problema causa Solución
Error con las credenciales correctas El proxy requiere una lista blanca de IP Incluya en la lista blanca las IP de CaptchaAI o utilice proxies de solo autenticación
Funciona localmente, falla a través de CaptchaAI La IP del servidor CaptchaAI no está en la lista blanca Utilice la autenticación nombre de usuario/password en su lugar
El proxy SOCKS falla Tipo incorrecto especificado Pruebe SOCKS5 o SOCKS4
Fallos de autenticación intermitentes Limitación de tasa de proxy Utilice proxies dedicados/premium
Contraseña con formato de saltos : Caracteres especiales sin escape Codifica la contraseña mediante URL

Preguntas frecuentes

¿CaptchaAI se conecta a través de mi proxy?

Sí. Cuando proporciona parámetros de proxy, el solucionador de CaptchaAI carga la página de destino a través de su proxy. Esto garantiza que el token coincida con su contexto de navegación.

¿Qué tipo de proxy debo utilizar?

Utilice HTTP/HTTPS para la mayoría de los sitios. Utilice SOCKS5 cuando el objetivo lo requiera o para un mejor anonimato. Rara vez se necesita SOCKS4.

¿Siempre necesito un proxy?

No. Los poderes son opcionales. Muchos CAPTCHA se resuelven bien sin un proxy. Utilice servidores proxy cuando el sitio de destino verifique si la IP del solucionador coincide con la IP de envío del token.


Guías relacionadas


Configuración recomendada para su pipeline

Use exactamente la misma configuración de navegador en todos sus entornos de QA, staging y CI. Esto evita que un test funcione en local y falle en CI sin razón aparente.

from selenium import webdriver

def make_driver(headless: bool = True) -> webdriver.Chrome:
    options = webdriver.ChromeOptions()
    if headless:
        options.add_argument('--headless=new')
    options.add_argument('--window-size=1280,800')
    options.add_argument('--lang=es-ES')
    return webdriver.Chrome(options=options)

Mantener viewport, idioma y user-agent por defecto idénticos en todos los runners reduce la varianza y facilita comparar resultados entre ejecuciones de su propio QA.

Cómo se integra CaptchaAI en su pipeline propio

El patrón de integración con CaptchaAI siempre es el mismo, independientemente del lenguaje o framework de pruebas que use:

  1. Su test detecta el widget de CAPTCHA en la página de su propia aplicación (formulario de QA, landing de staging, endpoint de preproducción).
  2. Su test envía a CaptchaAI los datos públicos del widget (sitekey, URL de la página, tipo de CAPTCHA).
  3. CaptchaAI devuelve un token válido para esa página.
  4. Su test inyecta ese token en el campo correspondiente y envía el formulario.
  5. Su backend verifica el token con el proveedor de CAPTCHA, exactamente igual que con un usuario real.

Este flujo se aplica únicamente a integraciones que usted controla. No se utiliza para sortear protecciones de sitios de terceros.

Métricas y observabilidad

Incluya métricas específicas para los pasos relacionados con CAPTCHA en sus pipelines de QA. Esto le permite detectar regresiones en su propia integración antes de que lleguen a producción:

  • Tiempo de resolución por intento — desde la solicitud a CaptchaAI hasta la entrega del token.
  • Tasa de éxito por endpoint propio — cuántas verificaciones backend pasan respecto al total de intentos.
  • Distribución de errores — agrupados por código (ERROR_*, timeouts internos, fallos de red).
  • Latencia extremo a extremo — incluyendo render de la página, resolución de CAPTCHA y respuesta de su backend.

Conserve trazas (logs, capturas, HAR) durante un período razonable para poder reproducir incidentes en su entorno QA cuando un test falle de forma intermitente.

Buenas prácticas en su entorno QA

  • Pruebe siempre sobre su propia aplicación o sobre entornos explícitamente autorizados.
  • Mantenga una API key de CaptchaAI separada para QA, distinta de la de producción, para no mezclar métricas.
  • Defina timeouts y reintentos razonables (backoff exponencial) para no acumular trabajos pendientes en CaptchaAI durante caídas.
  • Versione sus snapshots de configuración (sitekey, action, umbrales) junto al código de los tests.
  • Revise periódicamente el changelog de su proveedor de CAPTCHA para anticipar cambios que afecten a su propia integración.

Solucionar problemas de proxy:resolver con CaptchaAI.

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