En este artículo, cubriremos:
- Qué es curl
- Instalación de curl.
- Qué necesitarás para empezar a usar proxies
- Cómo especificar un proxy HTTP/HTTPS en curl.
- Cómo configurar proxies SOCKS en curl
- Consejos y trucos que deberías conocer
- ¿Qué proxies son mejores para curl?
¿Qué Es cURL?
cURL, abreviatura de “Client URL,” es una herramienta para enviar y recibir datos a través de Internet usando URLs. Como proyecto de software, ofrece tanto una biblioteca (libcurl) como una herramienta de línea de comandos (curl). Aquí, nos centraremos en curl, la herramienta de línea de comandos para transferir datos mediante la sintaxis URL.
El proyecto admite una amplia gama de protocolos, incluyendo HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP, y más. Esto hace que curl sea el cliente HTTP de línea de comandos más popular y usado del mundo.
cURL es muy versátil y representa una solución común para realizar diversas tareas, como hacer solicitudes HTTP, descargar archivos, subir datos e interactuar con APIs. Ofrece varias funciones, desde la personalización de solicitudes hasta el soporte de proxies.
Instalando curl
Ahora aprendamos a instalar curl en tu máquina.
macOS
No necesitas instalar curl en macOS. La herramienta ya está incluida en el sistema operativo, y puedes usarla de forma nativa en la aplicación Terminal.
Windows
A partir de Windows 10, Windows incluye una copia de curl. Al mismo tiempo, el comando curl es un alias del comando Invoke-WebRequest de PowerShell. Esto significa que los comandos curl en la terminal de Windows invocarán Invoke-Request internamente. Para evitarlo y usar realmente curl de cURL, reemplaza “curl” por “curl.exe.” Así, PowerShell ejecutará curl y no Invoke-Request.
Por ejemplo, puedes verificar la versión actual de curl instalada en tu máquina Windows en la terminal con:
curl.exe --version
Esto debería mostrar algo similar a:
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets
Si eres usuario de Windows, reemplaza todas las instancias de “curl” en los comandos del artículo por la cadena “curl.exe”. De lo contrario, configura el Subsistema de Windows para Linux (WSL) y sigue las instrucciones de abajo.
Linux
En Linux, el procedimiento para instalar curl cambia según la distribución específica que estés usando. Las distribuciones Linux populares, como Ubuntu y Fedora, lo incluyen por defecto. Así que puedes usar curl directamente en la terminal.
En otras distribuciones, curl puede no estar incluido. En este caso, puedes agregarlo usando el gestor de paquetes de la distribución. En un sistema basado en Debian, puedes instalar curl con el siguiente comando:
sudo apt-get install curl
Qué Necesitas para Usar un Proxy en curl
Un proxy actúa como intermediario entre el cliente y el servidor de destino. Intercepta las solicitudes del cliente, las reenvía al servidor, recibe la respuesta del servidor y la envía de vuelta al cliente. Este enfoque intermedio aumenta el anonimato y ayuda a evitar restricciones de red. Esto se debe a que el servidor de destino verá las solicitudes como provenientes de la IP y ubicación del servidor proxy elegido, y no de ti.
Para comenzar a usar curl con servicios de proxy, primero necesitas acceso a un proxy. Específicamente, aquí está la sintaxis de una URL de proxy:
[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
Esto consiste en:
<PROTOCOL>: El protocolo a usar para conectarse al servidor proxy. Si no se especifica ningún protocolo, curl usará http:// por defecto.<HOST>: La dirección IP requerida o URL del nombre de host del servidor proxy.<PORT>: El número de puerto que escucha el servidor proxy. Si no se especifica ningún puerto, curl usará 1080 por defecto.<USERNAME>: El nombre de usuario opcional a especificar cuando se requiere autenticación.<PASSWORD>: La contraseña opcional a especificar cuando se requiere autenticación.
En cuanto a los protocolos de proxy, los más populares son HTTP y HTTPS, seguidos de SOCKS.
¡Es hora de obtener un proxy HTTP válido!
Puedes obtener uno gratis en Free Proxy List, como se muestra abajo:
IP Address: 71.19.249.97; Port: 8443
Esto significa que la URL del proxy es:
http://71.19.249.97:8443
Optar por tal solución está bien con fines de aprendizaje, pero no puedes confiar en ella en un escenario real. ¡Los servicios de proxy gratuitos no son confiables, son propensos a errores, lentos, consumen muchos datos y duran poco! ¡No los uses!
¿La solución? Proxies premium de Bright Data, el mejor proveedor del mercado. Crea una cuenta y prueba nuestros proxies confiables.
Ten en cuenta que las soluciones premium están protegidas por autenticación. Supongamos que el protocolo es HTTP, el host es 71.103.203.109, y el puerto es 9321, y el par de credenciales son admin-32458 y rTuJ3tEwf. En este caso, la URL del proxy curl sería:
http://admin-32458:@rTuJ3tEwf71.103.203.109:9321
Cómo Especificar un Proxy HTTP/HTTPS en curl
Antes de empezar, ejecuta el siguiente comando en tu terminal:
curl "https://httpbin.org/ip"
Como puedes ver, la sintaxis básica de curl es:
curl [optional_commands] <URL>
Una buena práctica de curl recomienda rodear las URLs con comillas dobles para evitar problemas con caracteres especiales.
Ejecútalo y deberías obtener algo como esto:
{
"origin": "194.33.243.7"
}
El proyecto HTTPBin te permite obtener información sobre tus solicitudes HTTP. En detalle, el endpoint /ip devuelve la IP de origen de la solicitud, que es la dirección IP de la máquina que realizó la solicitud. En otras palabras, devuelve tu IP.
Después de configurar un proxy en curl, deberías ver la dirección IP del servidor proxy y no la tuya.
Hay varias formas de configurar un proxy en curl. Veamos ahora los enfoques más populares para especificar un proxy HTTP/HTTPS en curl.
Usando un Argumento de Línea de Comandos
curl ofrece dos argumentos de línea de comandos para configurar una URL de proxy:
-x--proxy
Ambos pueden usarse indistintamente, ya que hacen exactamente lo mismo. El segundo es solo un alias del primero.
Así, la sintaxis para usar curl con servicios de proxy se convierte en:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
O:
curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Nota: Las opciones de línea de comandos distinguen mayúsculas y minúsculas en curl. Por ejemplo, -x y -X tienen dos significados diferentes.
Si ahora ejecutas:
curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"
O el equivalente:
curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"
Deberías obtener:
{
"origin": "71.19.249.97"
}
El origen coincide con la IP del servidor proxy. Esto significa que el sitio destino ve la solicitud como proveniente del proxy, tal como se desea. ¡Genial!
No olvides que los proxies gratuitos tienen una vida corta, por lo que es poco probable que el servidor anterior siga activo cuando leas este artículo. En caso de error, reemplázalo por un proxy nuevo.
Usando Variables de Entorno
Otra forma de usar un proxy en curl es configurando las siguientes dos variables de entorno:
http_proxy: La URL del servidor proxy a usar para acceder a URLs que involucran el protocolo HTTP.https_proxy: La URL del servidor proxy a usar para acceder a URLs que involucran el protocolo HTTP.
En macOS y Linux, puedes configurar esos dos entornos con la sintaxis de abajo:
export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Entonces, los dos comandos quedarán así:
export http_proxy="http://71.19.249.97:8443"
export https_proxy="http://71.19.249.97:8443"
En Windows, necesitas usar esta sintaxis de PowerShell:
$env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Entonces, en nuestro ejemplo:
$env:http_proxy = "http://71.19.249.97:8443"
$env:https_proxy = "http://71.19.249.97:8443"
A partir de ahora, cada comando curl pasará por los proxies especificados sin necesidad de usar la opción -x:
De nuevo, esto devolverá:
curl https://httpbin.org/ip
{
"origin": "71.19.249.97"
}
Para desactivar los proxies de curl, elimina las variables de entorno con:
unset http_proxy
unset https_proxy
O en Windows:
$env:http_proxy = ""
$env:https_proxy = ""
curl volverá a su comportamiento estándar y https://httpbin.org/ip ahora devolverá tu IP.
Usando un archivo de configuración
Puedes especificar un proxy globalmente para curl creando un archivo de configuración .curlrc.
En Linux y macOS, abre la terminal y navega a tu directorio de inicio:
cd ~
Luego, accede al .curlrc con nano:
nano .curlrc
Si el archivo ya existe, se abrirá. De lo contrario, se creará primero y luego se abrirá.
Agrega la siguiente línea al archivo .curlrc:
proxy="http://71.19.249.97:8443"
La sintaxis de esta instrucción es:
proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Guarda el archivo, cierra la terminal y vuelve a abrirla.
En Windows, necesitas crear un archivo _curlrc dentro del directorio %APPDATA% con el mismo contenido. Pega %APPDATA% en la barra de direcciones del explorador de archivos y presiona ENTER para acceder al directorio.

Esto debería llevarte a C:Users<YOUR_USER>AppDataRoaming.
Ahora, curl usará automáticamente el proxy especificado en el archivo de configuración:
curl "http://httpbin.org/ip"
Obtendrás:
{
"origin": "71.19.249.97"
}
¡Fantástico! ¡Acabas de aprender a usar curl con servidores proxy de tres formas diferentes!
Cómo Configurar Proxies SOCKS en curl
Si quieres usar un proxy SOCKS, la estructura del comando sigue siendo la misma:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
La principal diferencia es que <PROTOCOL> será socks4, socks4a, socks5, o socks5h, en lugar de http y https.
Un ejemplo completo de un proxy SOCKS curl en acción es:
curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"
Como puedes esperar, el resultado será:
{
"origin": "94.14.109.54"
}
Un enfoque alternativo involucra las opciones de línea de comandos --socks4, --socks4a, --socks5 en lugar de -x. En este caso, debes configurar la URL del proxy sin usuario ni contraseña después de la opción, y luego las credenciales después de --proxy-user:
curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>
Por ejemplo:
curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3
Esto se conectará a HTTPBin a través del proxy socks4 93.16.238.41:8721, usando admin334 como nombre de usuario y kv4NsDgc3 como contraseña para la autenticación.
Consejos y Trucos que Deberías Conocer
En esta sección, verás algunos trucos interesantes y consejos valiosos para manejar un proxy curl como un profesional.
Activando y Desactivando Proxies Rápidamente
La idea aquí es definir alias para configurar y eliminar proxies programáticamente mediante variables de entorno con comandos personalizados.
En macOS y Linux, puedes hacerlo creando un archivo .bashrc. Este es un archivo de script que se ejecuta cada vez que el usuario inicia sesión.
Muévete a tu carpeta de inicio:
cd ~
Luego, crea o abre un archivo .bashrc:
nano .bashrc
Agrega el contenido en el formato de abajo al archivo:
alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'"
alias proxyoff="unset http_proxy;unset https_proxy"
Así, en nuestro ejemplo sería:
alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'"
alias proxyoff="unset http_proxy;unset https_proxy"
Guarda el archivo y reinicia tu máquina.
Ahora, puedes activar y desactivar un proxy curl con:
proxyon
curl "http://httpbin.org/ip"
# other HTTP requests...
proxyoff
Observa los comandos personalizados proxyon y proxyoff. Estos realizan las operaciones especificadas por los alias en el archivo .bashrc.
En Windows, puedes lograr algo similar con los alias de PowerShell.
Ignorando Proxies para una Sola Solicitud
Si quieres evitar que curl use un proxy configurado para una solicitud específica, puedes usar el argumento --noproxy "*" como se muestra abajo:
curl --noproxy "*" <URL>
Esto instruye a curl a no usar proxies para todas las URLs.
Configura un proxy y ejecuta:
curl --noproxy "*" "https://httpbin.org/ip"
El origen resultante contendrá tu IP, no la del servidor proxy.
Evitando Errores de Certificado SSL
Al usar proxies en curl, tus solicitudes pueden fallar por errores de certificado SSL. Para evitarlo, usa la opción -k como en la sintaxis de abajo:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>
-k te ayuda a evitar errores de certificado al permitir conexiones de servidor inseguras sobre SSL.
Por ejemplo, puedes contactar a HTTPBin evitando problemas de SSL con:
curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"
Obteniendo Más Información Sobre la Solicitud
Cuando una solicitud en curl falla, no es fácil entender qué sucedió. Para diagnosticar el error y ver todas las operaciones realizadas por curl, configura la opción -v:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>
Esto mostrará los detalles sobre las conexiones establecidas y los encabezados usados por la herramienta:
$curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip"
* Trying 71.19.249.97:8443...
* Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to httpbin.org:443
> CONNECT httpbin.org:443 HTTP/1.1
> Host: httpbin.org:443
> User-Agent: curl/8.0.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 OK
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* schannel: disabled automatic use of client certificate
* ALPN: offers http/1.1
* ALPN: server accepted http/1.1
* using HTTP/1.1
> GET /ip HTTP/1.1
> Host: httpbin.org
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 26 Aug 2023 10:39:13 GMT
< Content-Type: application/json
< Content-Length: 31
< Connection: keep-alive
< Server: gunicorn/19.9.0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
<
{
"origin": "71.19.249.97"
}
* Connection #0 to host 71.19.249.97 left intact
¿Qué Proxies Son Mejores para curl?
La respuesta a esta pregunta depende de tu caso de uso y la naturaleza de las solicitudes curl que debas hacer. Para encontrar la solución adecuada a tus necesidades, echa un vistazo a los diferentes tipos de proxies disponibles:
- Proxies de centro de datos: Son rápidos pero pueden ser detectados y bloqueados fácilmente por los sitios debido a sus rangos de IP identificables.
- Proxies residenciales: Garantizan un alto nivel de anonimato porque ofrecen direcciones IP provenientes de dispositivos reales en ubicaciones específicas. Los proxies residenciales son perfectos para acceder a sitios con bloqueos de geo-restricción o medidas anti-bot, y para realizar scraping web con curl.
- Proxies ISP: Son rápidos, seguros y muy confiables, ya que proporcionan IPs de dispositivos registrados en ISPs. Los proxies ISP representan una solución perfecta para el monitoreo SEO, la navegación web y el estudio de mercado.
Este fue solo un breve resumen, pero puedes descubrir más en nuestra guía de tipos de IP de proxy.
Conclusión
En esta guía de proxy curl, aprendiste qué es cURL, qué ofrece, y cómo configurar un proxy HTTP/HTTPS/SOCKS. Como resulta evidente, no puedes confiar en curl con servicios de proxy de proveedores gratuitos. Por lo tanto, la principal decisión técnica a tomar es qué proveedor de proxy adoptar. Ahorra tiempo y energía y elige el mejor del mercado, Bright Data.
Bright Data controla los mejores servidores proxy del mundo, sirviendo a empresas Fortune 500 y a 50,000+ clientes. Su red de proxies mundial incluye:
- Proxies de centro de datos – 1,300,000+ IPs de centro de datos.
- Proxies residenciales – 400M+ IPs residenciales en más de 195 países.
- Proxies ISP – 1,300,000+ IPs ISP.
En general, esa es una de las redes de proxy orientadas al scraping más grandes y confiables del mercado. ¡Únete hoy a la red de proxies más grande!