A opção --preproxy do curl conecta a um proxy SOCKS antes de alcançar um proxy HTTP ou HTTPS. Ela suporta essa cadeia específica, não uma lista arbitrária de servidores proxy.

O caminho é cliente → endpoint SOCKS → proxy HTTP → destino. Substitua os dois endpoints de documentação no comando:

curl --preproxy socks5h://203.0.113.10:1080 --proxy http://203.0.113.20:8080 --noproxy '' --connect-timeout 5 --max-time 20 --verbose https://example.com/

O serviço SOCKS precisa alcançar o endereço e a porta do proxy HTTP. Depois, o proxy HTTP precisa aceitar a requisição ao destino. Se o segundo proxy usa nome de host, o primeiro modo SOCKS determina onde esse nome é resolvido; um endpoint numérico evita essa consulta.

Encontrando o salto com falha

Primeiro confirme uma requisição por cada endpoint separadamente; para o salto HTTP, use um teste de proxy HTTP com limites de tempo. Mesmo que ambos funcionem, a rota combinada ainda pode falhar porque o primeiro proxy não consegue alcançar o segundo.

Leia o rastreamento detalhado na ordem de conexão. Uma falha SOCKS ao alcançar o segundo proxy acontece antes da decisão do proxy HTTP de aceitar ou rejeitar CONNECT ao site. Registre qual handshake falhou.

Quando o salto extra ajuda

Essa configuração pode ser útil quando um proxy HTTP autorizado é alcançável por um caminho SOCKS. Ela também acrescenta outro serviço e outra rota de rede que podem falhar ou aumentar a demora. Encadear endpoints de uma lista pública de proxies não garante confiabilidade nem anonimato e ainda exige confiança nas partes que lidam com a conexão.

--preproxy exige curl 7.52.0 ou mais recente; outros aplicativos podem não suportar a mesma configuração.

Artigos relacionados