Socks5Proxy

Uso de proxy com cURL: como testar proxies HTTP e SOCKS5 na linha de comando

Este guia ensina a conectar proxies HTTP e SOCKS5 da Socks5Proxy via cURL, com autenticação, medição de tempo de resposta e script shell para verificar listas inteiras de uma vez.

Por que usar cURL para testar proxies?

O cURL está presente na maioria dos servidores e ambientes de desenvolvimento, sendo a forma mais rápida de verificar proxies. Em problemas com código ou configurações de navegador, testes com cURL ajudam a isolar a causa.

O exemplo usa IP 198.51.100.23, porta HTTP 8000, porta SOCKS5 1080, nome de usuário spx_user e senha spx_pass.

Como conectar a um proxy HTTP?

Use a opção -x (ou --proxy) para inserir o endereço do proxy. O nome de usuário e senha podem ser incluídos no endereço ou separadamente com a opção -U. Ao solicitar um endereço HTTPS, o cURL cria um túnel CONNECT e faz a solicitação criptografada dentro dele.

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

Como conectar um proxy SOCKS5?

--socks5-hostname resolve nomes de domínio pelo proxy. As solicitações DNS do seu servidor não são expostas e os nomes são resolvidos com base no país do proxy. --socks5 resolve os nomes no seu servidor e envia apenas o IP para o proxy. Na maioria dos casos, recomendamos --socks5-hostname.

O formato socks5h:// também funciona quando inserido em -x.

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

Como ver tempo de resposta e status juntos?

A opção -w permite exibir o tempo de conexão, tempo até o primeiro byte, tempo total e código de resposta em uma única linha. É útil para comparar a velocidade de proxies em diferentes países ou para determinar se o site de destino ou o proxy está lento.

Use -o /dev/null para descartar o corpo e -s para desativar a exibição de progresso, mostrando apenas o resultado de forma limpa.

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

Como verificar toda a lista de uma vez?

Para verificar o status de todos os proxies de uma vez, obtenha a lista via API e execute cURL para cada linha. Este script obtém lista no formato ip:port:user:pass e exibe o IP de resposta e tempo para cada linha, com timeout para evitar travamentos.

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

Posso chamar a API via cURL?

Sim. Saldo, lista de planos ativos e lista de proxies podem ser consultados com um único header Authorization: Bearer. Use ferramentas como jq para filtrar campos específicos na resposta JSON.

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

Também é possível configurar o proxy por variáveis de ambiente?

Sim. cURL e muitas ferramentas de linha de comando leem as variáveis de ambiente http_proxy, https_proxy e all_proxy. Definindo-as no shell, ferramentas como cURL, wget e pip usarão o mesmo proxy. Para SOCKS5, use socks5h:// em all_proxy.

Liste endereços que não devem passar por proxy em no_proxy, separados por vírgulas. Isso evita que servidores internos ou localhost sejam acessados via proxy.

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

Como comparar resultados entre proxies HTTP e SOCKS5?

Compare o tempo de resposta e o IP retornado ao solicitar o mesmo endereço pelas duas portas do mesmo IP para ver qual método é mais rápido no seu ambiente. Embora sejam semelhantes, servidores distantes ou DNS lento podem causar diferenças.

O IP de resposta deve ser o mesmo em ambos os métodos. Se for diferente, verifique se você não misturou portas de linhas diferentes na lista.

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

Como o servidor verifica os IPs para autorização?

Para autorização por IP, registre o IPv4 público que seu servidor usa para acessar a internet. Execute curl -4 https://api.ipify.org sem proxy para ver esse valor. Registre-o no dashboard para conexão sem usuário/senha.

curl -4 -s https://api.ipify.org

O proxy pode ver o conteúdo de sites HTTPS?

Ao solicitar um endereço HTTPS com um proxy HTTP, o cURL primeiro cria um túnel CONNECT até o servidor de destino e, dentro dele, estabelece uma conexão criptografada diretamente com o servidor de destino. O proxy sabe apenas para qual servidor está se conectando, e o conteúdo trafegado está criptografado e invisível. Use a opção -v para ver o processo CONNECT e a conexão criptografada.

O mesmo se aplica ao SOCKS5. O proxy apenas encaminha a conexão, e a criptografia ocorre entre o cURL e o servidor de destino. Por isso, é mais seguro não usar a opção de verificação de certificado (-k), pois o certificado do servidor de destino ainda será verificado mesmo através do proxy.

Usar --socks5-hostname faz com que o proxy resolva o nome de domínio que você está tentando acessar, então não há registro das solicitações DNS do seu servidor.

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

Como interpretar mensagens de erro do cURL?

Receber o código HTTP 407 do proxy após CONNECT indica falha de autenticação. Verifique o nome de usuário e senha, ou o IP do servidor registrado na autenticação por IP. Se a senha contiver @ ou :, não a inclua no endereço, use -U ou --proxy-user.

Failed to connect ou Connection timed out ocorre quando a porta está incorreta ou o firewall do servidor bloqueia conexões de saída. Use a porta HTTP para endereços HTTP e a porta SOCKS5 para SOCKS5, e verifique se a porta de saída está aberta. A opção -v exibe o processo de conexão passo a passo, facilitando a identificação da causa.

Uso de proxy com cURL: verificando conexões -x e SOCKS5 | Socks5Proxy