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:
- 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).
- Su test envía a CaptchaAI los datos públicos del widget (
sitekey, URL de la página, tipo de CAPTCHA). - CaptchaAI devuelve un token válido para esa página.
- Su test inyecta ese token en el campo correspondiente y envía el formulario.
- 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 (
backoffexponencial) 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.