Ir al contenido
GProxy
Registro
Гайды 6 min de lectura 34 vistas

Usando Proxy con cURL

Este artículo detalla cómo usar proxies de manera efectiva con cURL. Encuentre ejemplos de comandos para solicitudes web seguras, anónimas y eficientes.

Usando Proxy con cURL

Usar un proxy con cURL implica especificar la dirección y el puerto del servidor proxy utilizando la opción de línea de comandos -x o --proxy, lo que permite enrutar las solicitudes de cURL a través de un servidor intermediario.

Este artículo detalla los diversos métodos y opciones de línea de comandos disponibles en cURL para interactuar con servicios proxy, cubriendo proxies HTTP/HTTPS básicos, proxies autenticados, proxies SOCKS y configuración a través de variables de entorno.

Configuración Básica del Proxy

El método más común para indicar a cURL que use un proxy es con la opción -x o --proxy, seguida de la dirección y el puerto del servidor proxy.

Proxy HTTP/HTTPS

Para enrutar una solicitud HTTP o HTTPS a través de un proxy HTTP/HTTPS, especifique la dirección y el puerto del proxy.

Sintaxis:

curl -x [protocolo://][usuario:contraseña@]hostproxy[:puerto] [URL]

Ejemplos:

  1. Usando un proxy HTTP para un destino HTTP:
    bash curl -x http://tu.servidor.proxy:8080 http://example.com
    Este comando dirige a cURL para enviar la solicitud de http://example.com a través de tu.servidor.proxy en el puerto 8080 usando el protocolo proxy HTTP.

  2. Usando un proxy HTTP para un destino HTTPS:
    bash curl -x http://tu.servidor.proxy:8080 https://secure.example.com
    Al usar un proxy HTTP para un destino HTTPS, cURL típicamente usa el método CONNECT para establecer un túnel a través del proxy hacia el servidor de destino. El handshake SSL/TLS ocurre entonces directamente entre cURL y secure.example.com, sin involucrar al proxy HTTP en el cifrado.

  3. Usando un proxy HTTPS para un destino HTTP:
    bash curl -x https://tu.servidor.proxy.seguro:8443 http://example.com
    Esto enruta la solicitud a través de un proxy que a su vez usa HTTPS. La conexión entre cURL y tu.servidor.proxy.seguro está cifrada.

Proxies Autenticados

Muchos servicios proxy requieren autenticación. cURL soporta varios métodos de autenticación para proxies, principalmente Basic, NTLM y Digest.

Autenticación Básica

Para proxies que requieren un nombre de usuario y contraseña, use la opción --proxy-user o incruste las credenciales directamente en la URL del proxy.

Sintaxis:

curl -x [protocolo://]hostproxy[:puerto] --proxy-user "usuario:contraseña" [URL]
curl -x [protocolo://]usuario:contraseña@hostproxy[:puerto] [URL]

Ejemplos:

  1. Usando --proxy-user:
    bash curl -x http://tu.servidor.proxy:8080 --proxy-user "usuarioproxy:contraseñaproxy" http://example.com

  2. Incrustando credenciales en la URL:
    bash curl -x http://usuarioproxy:contraseñaproxy@tu.servidor.proxy:8080 http://example.com
    Se requiere codificación URL para caracteres especiales en el nombre de usuario o contraseña si están presentes. Por ejemplo, una contraseña p@ssword debería ser p%40ssword.

Otros Métodos de Autenticación

Aunque la autenticación Básica es común, cURL soporta otros métodos para entornos específicos.

  • --proxy-ntlm: Habilita la autenticación NTLM para el proxy.
  • --proxy-digest: Habilita la autenticación Digest para el proxy.

Ejemplo (NTLM):

curl -x http://tu.servidor.proxy:8080 --proxy-ntlm --proxy-user "DOMINIO\usuarioproxy:contraseñaproxy" http://example.com

Proxies SOCKS

Los proxies SOCKS (Socket Secure) operan a un nivel inferior que los proxies HTTP, manejando varios protocolos de red. cURL soporta SOCKS4, SOCKS4a y SOCKS5.

Proxy SOCKS5

SOCKS5 es el protocolo SOCKS más versátil, soportando IPv4, IPv6, UDP y autenticación.

Sintaxis:

curl --socks5 [usuario:contraseña@]hostproxy[:puerto] [URL]

Ejemplos:

  1. Proxy SOCKS5 básico:
    bash curl --socks5 tu.servidor.socks5:1080 http://example.com
    Por defecto, cURL resuelve el nombre de host example.com localmente antes de enviar la dirección IP al proxy SOCKS5.

  2. Proxy SOCKS5 con resolución DNS remota:
    bash curl --socks5-hostname tu.servidor.socks5:1080 http://example.com
    La opción --socks5-hostname indica a cURL que envíe el nombre de host example.com al proxy SOCKS5, permitiendo que el proxy realice la resolución DNS. Esto es crucial para el anonimato y para eludir restricciones geográficas donde la resolución DNS local podría revelar su ubicación.

  3. Proxy SOCKS5 con autenticación:
    bash curl --socks5-hostname usuariosocks:contraseñasocks@tu.servidor.socks5:1080 http://example.com

Proxy SOCKS4/SOCKS4a

SOCKS4 es un protocolo más antiguo, principalmente para IPv4, y no soporta autenticación. SOCKS4a extiende SOCKS4 para permitir que el proxy resuelva nombres de host.

Sintaxis:

curl --socks4 hostproxy[:puerto] [URL]
curl --socks4a hostproxy[:puerto] [URL]

Ejemplo (SOCKS4a):

curl --socks4a tu.servidor.socks4:1080 http://example.com

Similar a --socks5-hostname, --socks4a asegura que el proxy resuelva el nombre de host de destino.

Uso de Proxy para Destinos HTTPS con SSL/TLS

Cuando cURL usa un proxy para una solicitud HTTPS a través de un proxy HTTP, inicia una solicitud CONNECT al proxy. El proxy luego establece un túnel TCP al servidor HTTPS de destino. cURL realiza el handshake SSL/TLS directamente con el servidor de destino a través de este túnel.

Verificación de Certificado SSL

Por defecto, cURL verifica el certificado SSL del servidor de destino. Si el certificado es inválido, ha caducado o es autofirmado, cURL abortará la conexión.

  • --insecure o -k: Deshabilita la verificación del certificado SSL. Úselo con precaución, principalmente para pruebas o entornos de confianza conocidos con certificados autofirmados.
    bash curl -x http://tu.servidor.proxy:8080 https://autofirmado.example.com -k

  • --cacert [archivo]: Especifica un paquete de certificados CA personalizado para la verificación.
    bash curl -x http://tu.servidor.proxy:8080 https://secure.example.com --cacert /ruta/a/ca_personalizada.pem

Variables de Entorno para la Configuración del Proxy

cURL también puede tomar la configuración del proxy de variables de entorno. Esto es útil para configuraciones de proxy a nivel de sistema o de sesión sin especificar la opción -x para cada comando.

Variables de Entorno Comunes

  • http_proxy: Proxy para solicitudes HTTP.
  • https_proxy: Proxy para solicitudes HTTPS.
  • all_proxy: Un proxy de respaldo para todos los protocolos si http_proxy o https_proxy no están configurados.
  • no_proxy: Una lista separada por comas de nombres de host, dominios o direcciones IP que deben omitir el proxy.

Sintaxis:

export http_proxy="http://tu.servidor.proxy:8080"
export https_proxy="http://tu.servidor.proxy:8080" # Nota: a menudo se usa un proxy HTTP para destinos HTTPS
export no_proxy="localhost,127.0.0.1,.dominio_local"

Ejemplos:

  1. Configurando proxy HTTP:
    bash export http_proxy="http://usuarioproxy:contraseñaproxy@tu.servidor.proxy:8080" curl http://example.com

  2. Configurando proxy HTTPS (a través de proxy HTTP):
    bash export https_proxy="http://tu.servidor.proxy:8080" curl https://secure.example.com

  3. Omitiendo el proxy para hosts específicos:
    bash export http_proxy="http://tu.servidor.proxy:8080" export no_proxy="interno.example.com" curl http://interno.example.com # Esta solicitud omitirá el proxy curl http://externo.example.com # Esta solicitud usará el proxy

Precedencia

Las opciones de línea de comandos tienen precedencia sobre las variables de entorno. Si se especifica -x, anula cualquier variable de entorno http_proxy, https_proxy o all_proxy.

Solución de Problemas de Conexiones Proxy

Al encontrar problemas con cURL y proxies, varias opciones pueden ayudar en el diagnóstico.

  • --verbose o -v: Proporciona información detallada sobre la solicitud y la respuesta, incluidos los intentos de conexión proxy, encabezados y negociación SSL/TLS. Este suele ser el primer paso en la depuración.
    bash curl -v -x http://tu.servidor.proxy:8080 http://example.com

  • --trace [archivo]: Vuelca un rastreo completo de todos los datos entrantes y salientes, incluidos encabezados y cuerpo, a un archivo especificado.
    bash curl --trace depuracion.log -x http://tu.servidor.proxy:8080 http://example.com

  • Registros del Servidor Proxy: Verifique los registros de su servidor proxy en busca de intentos de conexión, fallos de autenticación o mensajes de error relacionados con sus solicitudes cURL.

  • Conectividad de Red: Verifique que la máquina que ejecuta cURL pueda alcanzar el servidor proxy en el puerto especificado utilizando herramientas como ping, telnet o netcat.
    bash telnet tu.servidor.proxy 8080
    Una conexión telnet exitosa indica una accesibilidad de red básica.

Comparación de Opciones Clave de Proxy

Opción de cURL Descripción Protocolos Autenticación Resolución DNS
-x, --proxy Especificación genérica de proxy (proxy HTTP/HTTPS) HTTP, HTTPS Local
--proxy-user Especifica nombre de usuario y contraseña para la autenticación del proxy HTTP, HTTPS N/A
--socks5 Proxy SOCKS5, resolución DNS local por defecto Todos Local
--socks5-hostname Proxy SOCKS5, resolución DNS remota Todos Remota (proxy)
--socks4 Proxy SOCKS4, resolución DNS local Todos No Local
--socks4a Proxy SOCKS4a, resolución DNS remota Todos No Remota (proxy)
http_proxy (env) Variable de entorno para proxy HTTP HTTP Local
https_proxy (env) Variable de entorno para proxy HTTPS (a menudo un proxy HTTP para túnel) HTTPS Local
all_proxy (env) Variable de entorno para todos los protocolos si no se configuran otros Todos Local
no_proxy (env) Variable de entorno para especificar hosts que deben omitir el proxy N/A N/A N/A
Actualizado: 03.03.2026
Volver a la categoría

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.