Usando Proxies com cURL
cURL é um utilitário de linha de comando poderoso para HTTP. Ele suporta excelentemente todos os tipos de proxy.
Sintaxe Básica
curl -x [protocol://]host:port URL
Proxy HTTP
# Requisição simples através do proxy
curl -x http://proxy.example.com:8080 https://httpbin.org/ip
# Com autenticação
curl -x http://user:[email protected]:8080 https://httpbin.org/ip
# Ou separadamente
curl -x http://proxy.example.com:8080 -U user:password https://httpbin.org/ip
Proxy HTTPS
curl -x https://proxy.example.com:8080 https://httpbin.org/ip
Proxy SOCKS
# SOCKS4
curl --socks4 proxy.example.com:1080 https://httpbin.org/ip
# SOCKS4A (DNS através do proxy)
curl --socks4a proxy.example.com:1080 https://httpbin.org/ip
# SOCKS5
curl --socks5 proxy.example.com:1080 https://httpbin.org/ip
# SOCKS5 com DNS através do proxy (recomendado)
curl --socks5-hostname proxy.example.com:1080 https://httpbin.org/ip
Variáveis de Ambiente
# Definir o proxy globalmente
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
# Agora todas as requisições passam pelo proxy
curl https://httpbin.org/ip
# Ignorar o proxy para determinados hosts
export no_proxy=localhost,127.0.0.1,.internal.com
Opções Úteis
# Mostrar o tempo de conexão
curl -x http://proxy:8080 -w "Time: %{time_total}s\n" https://httpbin.org/ip
# Ignorar erros de SSL
curl -x http://proxy:8080 -k https://example.com
# Definir timeout
curl -x http://proxy:8080 --connect-timeout 10 https://httpbin.org/ip
# Seguir redirecionamentos
curl -x http://proxy:8080 -L https://httpbin.org/redirect/3
# Salvar cookies
curl -x http://proxy:8080 -c cookies.txt https://example.com
# Enviar requisição POST
curl -x http://proxy:8080 -X POST -d "data=value" https://httpbin.org/post
Script para Checar uma Lista de Proxies
#!/bin/bash
while read proxy; do
result=$(curl -x "$proxy" -s --connect-timeout 5 https://httpbin.org/ip)
if [ $? -eq 0 ]; then
echo "[OK] $proxy"
else
echo "[FAIL] $proxy"
fi
done < proxies.txt
Depuração
# Saída detalhada
curl -x http://proxy:8080 -v https://httpbin.org/ip
# Mostrar apenas os cabeçalhos
curl -x http://proxy:8080 -I https://httpbin.org/ip
