A cadeia de proxies SOCKS para HTTP do curl
Configure a cadeia SOCKS para HTTP suportada pelo curl, identifique a ordem dos endpoints e teste cada salto antes de combiná-los.
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.