This website uses cookies
We use cookies on this site to improve your experience, analyze traffic, and personalize content. You can reset your preferences with the "Reset Cookies" option in the footer.
Cookies settings
curl-con-proxies

Cómo usar cURL con proxies

Jason Grad
Cofundador
August 19, 2025
Tabla de contenido

¿Estás listo para testear proxies de performance premium?

Conéctese con los principales proveedores de web scraping

Explore nuestro mercado y encuentre el socio perfecto para sus proyectos de datos

curl-con-proxies

Cómo usar cURL con proxies

Jason Grad
Cofundador
August 19, 2025

L; SECAR

  • Proxy HTTP básico: curl -x http://proxy:port https://example.com
  • Proxy SOCKS5: curl --socks5 proxy: puerto https://example.com
  • Autenticación proxy: curl -x http://proxy:port -U nombre de usuario: contraseña https://example.com
  • Variables de entorno: Conjunto exportar http_proxy= http://proxy:port para uso persistente
  • Omitir el proxy: Uso --noproxy domain.com para dominios específicos
  • Conexiones seguras: Prefiera siempre los proxies HTTPS para datos confidenciales
  • Solución de problemas: Uso -v indicador para salida detallada y -k omitir la verificación SSL (solo pruebas)

Dominar cURL con proxies es esencial para los desarrolladores, analistas de datos y administradores de sistemas. Ya sea que te dediques a analizar contenido web, a probar las API desde diferentes ubicaciones o a mantener el anonimato, la combinación de cURL con servidores proxy proporciona potentes funciones para la recopilación de datos y las pruebas de red.

Esta guía completa cubre todo, desde configuraciones de proxy básicas hasta implementaciones avanzadas de nivel empresarial, con ejemplos reales y soluciones de solución de problemas.

Comprensión de cURL y proxies

¿Qué es cURL?

cURL (URL de cliente) es una potente biblioteca y herramienta de línea de comandos para transferir datos mediante varios protocolos de red, incluidos HTTP, HTTPS, FTP, FTPS y muchos otros. Integrado en más de 20 mil millones de aplicaciones de software en todo el mundo, cURL lo alimenta todo, desde teléfonos inteligentes y automóviles hasta equipos médicos y consolas de videojuegos.

Capacidades clave de cURL:

  • Enviar solicitudes HTTP (GET, POST, PUT, DELETE, etc.)
  • Gestionar la autenticación y las cookies
  • Soporte para el cifrado SSL/TLS
  • Carga y descarga de archivos
  • Encabezados y agentes de usuario personalizados
  • Soporte de proxy para todos los principales tipos de proxy

¿Qué son los proxies?

Un servidor proxy actúa como intermediario entre su dispositivo e Internet y dirige sus solicitudes a través de una dirección IP diferente. Proxies residenciales son particularmente eficaces para las tareas de recopilación de datos y extracción de datos de la web.

¿Por qué usar cURL con proxies?

  1. Omitir las restricciones geográficas: Acceder al contenido de diferentes regiones
  2. Evite el bloqueo de IP: Rotar a través de varias direcciones IP
  3. Privacidad mejorada: Enmascara tu ubicación e identidad reales
  4. Automatización escalable: Gestione la recopilación de datos de gran volumen
  5. Flexibilidad de pruebas: Simule usuarios de varias ubicaciones

Configuración de cURL

Instalación de Windows

  1. Descarga cURL desde sitio web oficial
  2. Extraiga los archivos a su directorio preferido (p. ej., C:\curl)
  3. Agregar a PATH mediante Propiedades del sistema → Variables de entorno
  4. Verificar: curl --versión

Instalación de macOS

macOS incluye cURL de forma predeterminada. Para la versión más reciente:

# Check current version
curl --version

# Install latest via Homebrew
brew install curl

Instalación de Linux

La mayoría de las distribuciones incluyen cURL:

# Ubuntu/Debian
sudo apt update && sudo apt install curl

# CentOS/RHEL
sudo yum install curl

# Verify installation
curl --version

Configuración básica del proxy cURL

Configuración del proxy HTTP

La configuración de proxy más común utiliza el -x o --proxy bandera:

# Basic HTTP proxy
curl -x http://proxy.example.com:8080 https://httpbin.org/ip

# Alternative syntax
curl --proxy http://proxy.example.com:8080 https://httpbin.org/ip

Configuración del proxy HTTPS

Para conexiones proxy seguras:

# HTTPS proxy for encrypted proxy communication
curl -x https://secure-proxy.example.com:8443 https://httpbin.org/ip

Probar la configuración de su proxy

Para comprobar que el proxy funciona:

# Check your IP without proxy
curl https://httpbin.org/ip

# Check your IP with proxy
curl -x http://proxy.example.com:8080 https://httpbin.org/ip

# The response should show different IP addresses

Autenticación de proxy cURL

Autenticación de usuario y contraseña

Muchos servidores proxy requieren credenciales:

# Basic authentication
curl -x http://proxy.example.com:8080 -U username:password https://httpbin.org/ip

# Alternative format (embed credentials in URL)
curl -x http://username:password@proxy.example.com:8080 https://httpbin.org/ip

Métodos de autenticación avanzada

# Digest authentication
curl -x http://proxy.example.com:8080 -U username:password --proxy-digest https://httpbin.org/ip

# NTLM authentication (Windows environments)
curl -x http://proxy.example.com:8080 -U domain\\username:password --proxy-ntlm https://httpbin.org/ip

# Bearer token authentication
curl -x http://proxy.example.com:8080 --proxy-header "Authorization: Bearer your-token" https://httpbin.org/ip

Implementación del proxy SOCKS

Proxy SOCKS5 (recomendado)

SOCKS5 ofrece el mejor equilibrio entre funciones y seguridad:

# Basic SOCKS5
curl --socks5 proxy.example.com:1080 https://httpbin.org/ip

# SOCKS5 with authentication
curl --socks5 proxy.example.com:1080 --socks5-basic --user username:password https://httpbin.org/ip

SOCKS4 y SOCKS4a

Para sistemas heredados:

# SOCKS4
curl --socks4 proxy.example.com:1080 https://httpbin.org/ip

# SOCKS4a (supports domain name resolution through proxy)
curl --socks4a proxy.example.com:1080 https://httpbin.org/ip

Variables de entorno y configuración

Configuración de variables de entorno de proxy

Configure los ajustes de proxy en todo el sistema:

# HTTP proxy
export http_proxy=http://proxy.example.com:8080
export HTTP_PROXY=http://proxy.example.com:8080

# HTTPS proxy
export https_proxy=https://secure-proxy.example.com:8443
export HTTPS_PROXY=https://secure-proxy.example.com:8443

# SOCKS proxy
export all_proxy=socks5://proxy.example.com:1080

# No proxy for specific domains
export no_proxy=localhost,127.0.0.1,.example.com

Hacer que la configuración sea persistente

Añádelo a tu perfil de shell (.bashrc, .zshrc, etc.):

echo 'export http_proxy=http://proxy.example.com:8080' >> ~/.bashrc
echo 'export https_proxy=http://proxy.example.com:8080' >> ~/.bashrc
source ~/.bashrc

Uso de archivos de configuración

Crea archivos de configuración de cURL reutilizables:

# ~/.curlrc for global settings
proxy = http://proxy.example.com:8080
user-agent = "DataCollector/1.0"
retry = 3
connect-timeout = 10

# Project-specific config
# Use with: curl -K project.curlrc https://api.example.com

Técnicas avanzadas de proxy cURL

Omitir el proxy para dominios específicos

# Bypass proxy for specific domain
curl -x http://proxy:8080 --noproxy example.com https://example.com

# Bypass proxy for multiple domains
curl -x http://proxy:8080 --noproxy "example.com,internal.local" https://internal.local

# Bypass proxy for all requests
curl --noproxy "*" https://example.com

Gestión de certificados SSL

Al trabajar con proxies HTTPS:

# Skip certificate verification (testing only!)
curl -k -x https://proxy.example.com:8443 https://httpbin.org/ip

# Specify custom CA certificate
curl --cacert /path/to/ca-cert.pem -x https://proxy.example.com:8443 https://httpbin.org/ip

⚠️ Nota de seguridad: Uso exclusivo -k para realizar pruebas. En producción, verifique siempre los certificados SSL.

Scripts de rotación de proxy

Implemente la rotación automática de proxy:

#!/bin/bash
# proxy-rotation.sh

proxies=(
    "http://proxy1.example.com:8080"
    "http://proxy2.example.com:8080"
    "http://proxy3.example.com:8080"
)

# Function to test proxy
test_proxy() {
    local proxy=$1
    if curl -x "$proxy" --max-time 10 -s https://httpbin.org/ip >/dev/null 2>&1; then
        echo "✓ $proxy - Working"
        return 0
    else
        echo "✗ $proxy - Failed"
        return 1
    fi
}

# Test and use working proxies
working_proxies=()
for proxy in "${proxies[@]}"; do
    if test_proxy "$proxy"; then
        working_proxies+=("$proxy")
    fi
done

# Make requests with working proxies
for proxy in "${working_proxies[@]}"; do
    curl -x "$proxy" https://api.example.com/data
done

Casos de uso del mundo real

Extracción web con cURL y proxies

El raspado web a menudo requiere la rotación del proxy para evitar la detección. A diferencia de las herramientas de automatización de navegadores, como las que analizamos en nuestra comparación entre Puppeteer y Selenium, cURL proporciona una extracción de datos ligera y eficiente:

#!/bin/bash
# web-scraping.sh

urls=(
    "https://example.com/page1"
    "https://example.com/page2"
    "https://example.com/page3"
)

proxies=(
    "http://residential1.proxy.com:8080"
    "http://residential2.proxy.com:8080"
    "http://residential3.proxy.com:8080"
)

# Scrape with rotation
for i in "${!urls[@]}"; do
    proxy=${proxies[$((i % ${#proxies[@]}))]}
    url=${urls[i]}
    
    echo "Scraping $url via $proxy"
    curl -x "$proxy" \
         -H "User-Agent: Mozilla/5.0 (compatible; DataBot/1.0)" \
         -H "Accept: text/html,application/xhtml+xml" \
         -s "$url" > "page_$((i+1)).html"
    
    # Respectful delay
    sleep $((RANDOM % 5 + 2))
done

Para escenarios de raspado web más avanzados, proxies residenciales suelen ofrecer mejores tasas de éxito frente a las medidas antibots en comparación con los proxies de centros de datos.

Pruebas de API desde múltiples ubicaciones

Pon a prueba el rendimiento global de tu API:

#!/bin/bash
# api-geo-test.sh

declare -A regional_proxies=(
    ["us-east"]="http://us-east.proxy.com:8080"
    ["us-west"]="http://us-west.proxy.com:8080"
    ["eu-west"]="http://eu-west.proxy.com:8080"
    ["asia"]="http://asia.proxy.com:8080"
)

# Test API endpoint from each region
for region in "${!regional_proxies[@]}"; do
    proxy=${regional_proxies[$region]}
    echo "Testing from $region via $proxy"
    
    response_time=$(curl -x "$proxy" \
                         -w "%{time_total}" \
                         -o /dev/null \
                         -s \
                         https://api.yourservice.com/health)
    
    echo "$region: ${response_time}s response time"
done

Supervisión y comprobaciones del tiempo de funcionamiento

Supervise la disponibilidad del sitio web desde diferentes ubicaciones:

#!/bin/bash
# uptime-monitor.sh

target_url="https://yourwebsite.com"
log_file="uptime_$(date +%Y%m%d).log"

monitor_proxies=(
    "http://monitor1.proxy.com:8080"
    "http://monitor2.proxy.com:8080"
    "http://monitor3.proxy.com:8080"
)

# Check function
check_website() {
    local proxy=$1
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    local http_code=$(curl -x "$proxy" \
                           --max-time 10 \
                           -w "%{http_code}" \
                           -o /dev/null \
                           -s \
                           "$target_url")
    
    if [[ "$http_code" == "200" ]]; then
        echo "$timestamp [OK] $proxy - HTTP $http_code" | tee -a "$log_file"
    else
        echo "$timestamp [FAIL] $proxy - HTTP $http_code" | tee -a "$log_file"
    fi
}

# Monitor continuously
while true; do
    for proxy in "${monitor_proxies[@]}"; do
        check_website "$proxy"
    done
    sleep 300  # Check every 5 minutes
done

Estos ejemplos demuestran cómo cURL con proxies puede reemplazar soluciones de automatización de navegadores más complejas para muchas tareas de recopilación de datos, ofreciendo un mejor rendimiento y eficiencia de los recursos que los navegadores sin interfaz.

Solución de problemas comunes

Problemas de conexión

Asunto: errores de conexión rechazada

curl: (7) Failed to connect to proxy.example.com port 8080: Connection refused

Soluciones:

  1. Verifique que el servidor proxy esté funcionando
  2. Compruebe la configuración del firewall
  3. Prueba con: telnet proxy.example.com 8080

Asunto: errores de autenticación de proxy

curl: (407) Proxy Authentication Required

Soluciones:

# Verify credentials
curl -x http://proxy:8080 -U correct_user:correct_pass https://httpbin.org/ip

# Try different auth methods
curl -x http://proxy:8080 -U user:pass --proxy-digest https://httpbin.org/ip

Problemas con el certificado SSL

Problema: errores de verificación de SSL

curl: (60) SSL certificate problem: self signed certificate

Soluciones:

# Temporary fix (testing only)
curl -k -x https://proxy:8443 https://example.com

# Proper fix: Add CA certificate
curl --cacert /path/to/ca-bundle.crt -x https://proxy:8443 https://example.com

Problemas de rendimiento

Comandos de diagnóstico:

# Verbose output for debugging
curl -v -x http://proxy:8080 https://example.com

# Set timeouts
curl --connect-timeout 10 --max-time 30 -x http://proxy:8080 https://example.com

# Test proxy speed
time curl -x http://proxy:8080 -o /dev/null -s https://httpbin.org/ip

Para obtener información sobre la optimización del rendimiento, consulte nuestra puntos de referencia de rendimiento de proxy residenciales.

Mejores prácticas

Mejores prácticas de seguridad

1. Usa proxies HTTPS para datos confidenciales:

curl -x https://secure-proxy:8443 https://api.bank.com/account

2. Verifique los certificados SSL en producción:

curl --cacert company-ca.crt -x https://proxy:8443 https://api.example.com

3. Administración segura de credenciales:

# Use environment variables
export PROXY_USER="username"
export PROXY_PASS="password"
curl -x http://proxy:8080 -U "$PROXY_USER:$PROXY_PASS" https://example.com

Optimización del rendimiento

1. Reutilización de conexiones:

curl -x http://proxy:8080 --keepalive-time 60 https://example.com

2. Procesamiento paralelo:

# Process multiple URLs concurrently
parallel -j 10 curl -x http://proxy:8080 {} ::: url1 url2 url3

3. Optimizar para el raspado web:

curl -x http://proxy:8080 \
     --compressed \
     --location \
     --user-agent "Mozilla/5.0..." \
     --cookie-jar cookies.txt \
     https://example.com

Limitación de tarifas y cumplimiento

1. Implemente un raspado respetuoso:

# Rate limiting
request_with_delay() {
    curl -x http://proxy:8080 "$1"
    sleep $((RANDOM % 5 + 2))
}

2. Rotación usuario-agente:

user_agents=(
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
)
ua=${user_agents[$((RANDOM % ${#user_agents[@]}))]}
curl -x http://proxy:8080 -H "User-Agent: $ua" https://example.com

Referencia completa de comandos de cURL Proxy

<table class="GeneratedTable">
<thead>
<tr>
<th>Comando</th>
<th>Descripción</th>
<th>Ejemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td>-x, --proxy</td>
<td>Especifique el servidor proxy</td>
<td><code>curl -x http://proxy:8080 https://example.com</code></td>
</tr>
<tr>
<td>-U, --proxy-user</td>
<td>Autenticación proxy</td>
<td><code>curl -x http://proxy:8080 -U user: pass https://example.com</code></td>
</tr>
<tr>
<td>--calcetines 5</td>
<td>Usa el proxy SOCKS5</td>
<td><code>curl --socks5 proxy:1080 https://example.com</code></td>
</tr>
<tr>
<td>--calcetines 4</td>
<td>Usa el proxy SOCKS4</td>
<td><code>curl --socks4 proxy:1080 https://example.com</code></td>
</tr>
<tr>
<td>--sin proxy</td>
<td>Omitir el proxy para los hosts</td>
<td><code>curl --noproxy example.com https://example.com</code></td>
</tr>
<tr>
<td>--encabezado de proxy</td>
<td>Encabezados de proxy personalizados</td>
<td><code>curl --proxy-header «Auth: token» https://example.com</code></td>
</tr>
<tr>
<td>--resumen proxy</td>
<td>autenticación implícita</td>
<td><code>usuario de curl -U: pass --proxy-digest https://example.com</code></td>
</tr>
<tr>
<td>--proxy-ntlm</td>
<td>Autenticación NTLM</td>
<td><code>usuario de curl -U: pass --proxy-ntlm https://example.com</code></td>
</tr>
</tbody>
</table>

Ejemplos de comandos complejos

# Download file through authenticated proxy
curl -x http://proxy:8080 -U user:pass -O https://example.com/file.zip

# POST data through SOCKS5 proxy
curl --socks5 proxy:1080 -X POST -d "name=John" https://api.example.com/users

# Custom headers with proxy
curl -x http://proxy:8080 -H "User-Agent: Bot/1.0" https://api.example.com

# Upload file through proxy
curl -x http://proxy:8080 -U user:pass -F "file=@document.pdf" https://upload.example.com

# Complex authentication with headers
curl -x https://secure-proxy:8443 \
     --proxy-header "X-API-Key: your-key" \
     -H "Authorization: Bearer api-token" \
     https://api.example.com/data

Conclusión

Dominar cURL con proxies proporciona potentes capacidades para la recopilación de datos, las pruebas de API, el raspado web y la automatización de redes. Esta guía abarca desde la configuración básica del proxy hasta las configuraciones empresariales avanzadas.

Conclusiones clave:

  • Comience con una configuración básica de proxy HTTP mediante -x marcar
  • Utilice proxies HTTPS y una autenticación adecuada para una transmisión de datos segura
  • Implemente la rotación de proxies y la supervisión del estado de los sistemas de producción
  • Elija el tipo de proxy correcto en función de sus requisitos específicos
  • Supervise el rendimiento y optimice las configuraciones para obtener mejores resultados

Ya sea que esté creando canalizaciones de datos, probando aplicaciones globales o implementando soluciones de raspado web, estas técnicas lo ayudarán a aprovechar cURL y los proxies de manera efectiva.

Para las necesidades de recolección de datos y raspado web de producción, considere La red de proxy residencial de Massive, que proporciona una infraestructura proxy confiable y de alto rendimiento diseñada para los desafíos modernos de recopilación de datos.

About the author
Jason Grad
Cofundador

Soy el cofundador y director ejecutivo de Massive. Además de trabajar en nuevas empresas, soy músico, atleta, mentor, anfitrión de eventos y voluntario.

Pregunta frecuente

+

+

+

+

+

+

+

+

+

+

Ready to test premium proxy performance?