Troubleshooting

ERROR_PROXY_NOT_AUTHORIZED: Correções de autenticação de proxy

Se a sua requisição a in.php volta com ERROR_PROXY_NOT_AUTHORIZED, quase sempre o problema não é a credencial em si — é o formato da string, uma lista de permissões de IP desatualizada no provedor, ou o tipo declarado errado em proxytype. Este guia mostra como isolar cada causa com testes objetivos e código pronto para validar o proxy antes de reenviar a tarefa.

Dica rápida: teste o proxy fora da CaptchaAI primeiro (com curl ou o script de teste mais abaixo). Isso isola em segundos se o problema está no proxy ou na integração.


Por que a CaptchaAI recusa o proxy

Causa Como verificar
Formato incorreto Confira o padrão type:host:port:user:pass
Provedor exige lista de permissões de IP Veja se os IPs de saída da CaptchaAI estão liberados
Credenciais expiraram Teste a conexão do proxy fora da CaptchaAI
Tipo de proxy declarado errado Confirme HTTP, SOCKS4 ou SOCKS5
Servidor de proxy fora do ar Teste a conectividade com host e porta
Caracteres especiais na senha Codifique a senha em URL

Esse segundo ponto é comum em QA autorizado em staging na sa-east-1 da AWS: o proxy funciona no notebook, mas falha ao sair dos servidores da CaptchaAI, pois o provedor libera por IP. Correção: usuário/senha em vez de lista de IP.

Antes de abrir um chamado de suporte, isole a causa localmente: teste o proxy fora da CaptchaAI, confira o proxytype declarado e valide se a senha tem caracteres especiais sem escape. As seções abaixo cobrem cada um desses testes com código.


Ordem de diagnóstico recomendada

  1. Confirme o formato type:host:port:user:pass, sem espaços extras.
  2. Teste o proxy fora da CaptchaAI (curl ou o script de teste abaixo).
  3. Confirme se o provedor libera acesso por lista de IP — se sim, troque para autenticação usuário/senha.
  4. Declare o proxytype certo: HTTP, SOCKS4 ou SOCKS5.
  5. Codifique a senha em URL se ela tiver :, @ ou #.

Formato correto do proxy para a API

A CaptchaAI espera o proxy neste 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)

Esse payload usa os mesmos parâmetros de sempre — key, method, googlekey, pageurl — mais proxytype e proxy no formato acima. Sem esses dois campos corretos, a CaptchaAI carrega a página sem passar pelo proxy, e o token pode não bater com o IP esperado pelo site de destino.


Variações de formato aceitas

Os formatos abaixo são aceitos pela API:

# 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"

Prefira sempre autenticação por usuário e senha na string de proxy: listas de permissões por IP quebram assim que a infraestrutura muda de IP de saída, o que é comum em ambientes com autoscaling ou contêineres efêmeros.


Valide o proxy antes de enviar a tarefa

Valide formato e conectividade localmente antes de gastar uma chamada de API:

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 with CaptchaAI
proxy = "192.168.1.1:8080:user:pass"
if test_proxy(proxy, "HTTP"):
    print("Proxy is ready to use")

Rodar esse teste localmente evita desperdiçar chamadas à API: uma tarefa enviada com proxy inválido ainda consome parte da sua cota, mesmo que retorne erro.


Senhas com caracteres especiais

Senha com :, @ ou # sem escape quebra o parsing da string de proxy. Codifique em URL antes de montar a string final:

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!")

Aplique essa codificação antes de montar a string final — nunca depois, para não escapar caracteres que já foram tratados.


Identifique o tipo de proxy certo

Quando o provedor não informa o protocolo, teste a porta antes de declarar proxytype.

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

Esse teste não substitui a documentação do provedor, mas ajuda a confirmar rapidamente qual protocolo está realmente aberto na porta informada.


Diagnóstico rápido por sintoma

Mapeie o sintoma exato ao ajuste necessário:

  • Erro mesmo com credenciais corretas — o proxy exige lista de permissões de IP. Libere os IPs da CaptchaAI no provedor ou troque para autenticação usuário/senha.
  • Funciona local, falha via CaptchaAI — o IP de saída da CaptchaAI não está liberado no provedor. Use autenticação usuário/senha em vez de lista de IP.
  • Proxy SOCKS falha — o tipo declarado está errado. Teste SOCKS5 e, se não funcionar, SOCKS4.
  • Falhas intermitentes de autenticação — rate limit do provedor de proxy. Migre para um proxy dedicado ou um plano com mais conexões simultâneas.
  • Senha com : quebra o formato — caractere especial sem escape. Codifique a senha em URL antes de montar a string.

Perguntas frequentes

Por que recebo ERROR_PROXY_NOT_AUTHORIZED mesmo com usuário e senha corretos?

Na maioria dos casos o provedor libera acesso por lista de permissões de IP. Se o IP de saída da CaptchaAI não estiver liberado, a autenticação falha. Troque para autenticação usuário/senha.

A CaptchaAI resolve o CAPTCHA usando o meu proxy?

Sim. Ao enviar proxytype e proxy, o solucionador carrega a página de destino por esse proxy, e o token final corresponde ao mesmo IP que envia a resposta ao site.

Um proxy gratuito funciona com a API da CaptchaAI?

Tecnicamente sim, mas costuma falhar: proxies grátis derrubam conexões e vivem em blocklists públicas. Para produção, use um proxy pago com autenticação usuário/senha.

Preciso sempre usar um proxy para resolver CAPTCHA?

Não. O proxy é opcional e a maioria dos CAPTCHAs resolve sem ele. Use proxy quando o site verificar se o IP que resolveu o desafio é o mesmo que envia o token.

Posso usar o mesmo proxy para várias tarefas em paralelo?

Depende do plano do seu provedor de proxy. Se ele limitar conexões simultâneas por IP fixo, várias tarefas ao mesmo tempo podem esbarrar nesse limite e gerar ERROR_PROXY_NOT_AUTHORIZED de forma intermitente — nesse caso, confirme com o provedor quantas conexões simultâneas o plano contratado permite.


Guias relacionados


Corrigir problemas de proxy — resolva com a CaptchaAI.

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