En esta publicación, trataremos:
- 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 los proxies SOCKS en curl.
- Consejos y trucos que debes saber
- ¿Qué proxies son los mejores para curl?
¿Qué es cURL?
cURL, abreviatura de «URL cliente», es una herramienta para enviar y recibir datos a través de Internet mediante URL. Como proyecto de software, proporciona una biblioteca (libcurl
) y 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 de URL.
El proyecto admite una amplia gama de protocolos, incluidos HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP, etc. Esto convierte a curl
en el cliente HTTP de línea de comandos más popular y utilizado del mundo.
cURL es muy versátil y representa una solución común para realizar diversas tareas, como realizar solicitudes HTTP, descargar archivos, cargar datos e interactuar con API. Ofrece varias funciones, desde la personalización de solicitudes hasta el soporte para proxies.
Instalación de curl
Aprendamos ahora cómo instalar curl
en tu equipo.
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 de la 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
de la terminal de Windows invocarán Invoke-Request
en segundo plano. Para evitarlo y usar realmente curl
de cURL, reemplaza «curl» por «curl.exe». De esta forma, PowerShell ejecutará curl y no Invoke-Request
.
Por ejemplo, puedes verificar la versión actual de curl
instalada en tu equipo Windows en la terminal con:
curl.exe --version
Esto debería imprimir 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, sustituye 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 que aparecen a continuación.
Linux
En Linux, el procedimiento para instalar curl
cambia en función de la distribución específica que estés utilizando. Las distribuciones populares de Linux, como Ubuntu y Fedora, están incluidas de forma predeterminada. Por lo tanto, puedes usar curl
directamente en la terminal.
En otras distribuciones, es posible que no se incluya curl
. En este caso, puedes añadirlo mediante el administrador de paquetes de distribución. En un sistema operativo 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 solicitudes del cliente, las reenvía al servidor, recibe la respuesta del servidor y se la devuelve al cliente. Este enfoque de intermediario aumenta el anonimato y ayuda a evitar las restricciones de red. Esto se debe a que el servidor de destino verá que las solicitudes provienen de la IP y la ubicación del servidor proxy elegido y no de ti.
Para empezar a usar curl con los servicios de proxy, primero necesitas acceder a un proxy. En concreto, esta es la sintaxis de una URL de proxy:
[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
Esto consiste en:
<PROTOCOL>
: el protocolo que se utilizará para conectarse al servidor proxy. Si no se especifica ningún protocolo, curl tendrá el valor predeterminado http://.<HOST>
: la dirección IP o URL del host del servidor proxy necesaria.- <PORT>
: el número del puerto conectado al servidor proxy. Si no se especifica ningún puerto, curl usará 1080 por defecto.
<USERNAME>
: el nombre de usuario opcional para especificar cuándo se requiere la autenticación.<PASSWORD>
: la contraseña opcional para especificar cuándo se requiere la autenticación.
En cuanto a los protocolos proxy, los más populares son HTTP y HTTPS, seguidos de SOCKS.
¡Es hora de recuperar un proxy HTTP válido!
Puedes obtener uno gratis en Free Proxy List, como se muestra a continuación:
IP Address: 71.19.249.97; Port: 8443
Esto significa que la URL del proxy es:
http://71.19.249.97:8443
Optar por una solución como esta es aceptable para fines de aprendizaje, pero no puedes depender de ello en situaciones del mundo real. Los servicios de proxies gratuitos son poco fiables, propensos a errores, lentos, ávidos de datos y tienen una corta duración. ¡No los utilices!
¿Cuál es la solución? Proxies prémium de Bright Data, el mejor proveedor del mercado. Suscríbete y prueba nuestros fiables proxies de forma gratuita.
Ten en cuenta que las soluciones prémium están protegidas mediante autenticación. Supongamos que el protocolo es HTTP,
el host es 71.103.203.109
, el puerto es 9321
y el par de credenciales es admin-32458
y rTuJ3tEwf
. En este caso, la URL del proxy de 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 práctica recomendada de curl
recomienda colocar las URL entre comillas dobles para evitar problemas con los 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 punto final /ip
devuelve la IP de origen de la solicitud, que es la dirección IP del equipo que realizó la solicitud. En otras palabras, devuelve tu IP.
Tras configurar un proxy en curl
, deberías ver la dirección IP del servidor proxy y no la tuya.
Hay varias maneras de configurar un proxy en curl
. Veamos ahora los enfoques más populares para especificar un proxy HTTP/HTTPS en curl
.
Uso de un argumento de línea de comandos
curl ofrece dos argumentos de línea de comandos para establecer una URL de proxy:
-x
--proxy
Los dos pueden usarse indistintamente, ya que hacen exactamente lo mismo. Este último es solo un alias del primero.
Por lo tanto, la sintaxis para usar curl
con los 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 la línea de comandos distinguen las mayúsculas de las 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 de destino considera que la solicitud proviene del proxy, tal como se deseaba. ¡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, sustitúyelo por uno nuevo.
Uso de variables de entorno
Otra forma de usar un proxy en curl
es establecer las dos variables de entorno siguientes:
http_proxy
: la URL del servidor proxy que se utilizará para acceder a las URL que incluyan el protocolo HTTP.https_proxy
: la URL del servidor proxy que se utilizará para acceder a las URL que incluyan el protocolo HTTPS.
En macOS y Linux, puedes configurar esos dos entornos con la siguiente sintaxis:
export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Por lo tanto, los dos comandos se convertirán en:
export http_proxy="http://71.19.249.97:8443"
export https_proxy="http://71.19.249.97:8443"
En Windows, debes 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"
De ahora en adelante, cada comando de curl
pasará por los proxies especificados sin tener que añadir la opción -x.
De nuevo, esto devolverá:
curl https://httpbin.org/ip
{
"origin": "71.19.249.97"
}
Para desactivar los proxies de curl
, desactiva 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.
Uso de un archivo de configuración
Puedes especificar globalmente un proxy para curl
creando un archivo de configuración .curlrc
.
En Linux y macOS, abre la terminal y entra en tu directorio principal:
cd ~
Después, accede al .curlrc con nano:
nano .curlrc
Si el archivo ya existe, se abrirá. De lo contrario, se creará primero y, a continuación, se abrirá.
Añade 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 el terminal y vuelve a iniciarlo.
En Windows, debes crear un archivo _curlrc
dentro del directorio %APPDATA%
con el mismo contenido. Pega %APPDATA%
en la barra de direcciones del explorador de archivos y pulsa ENTER para acceder al directorio.
Esto debería llevarte a C:\Usuarios\\
.
Ahora, curl
utilizará 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 maneras diferentes!
Cómo configurar los proxies SOCKS en curl
Si quieres usar un proxy SOCKS, la estructura de comandos 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 es de esperar, el resultado será:
{
"origin": "94.14.109.54"
}
Un enfoque alternativo incluye las opciones de línea de comandos --socks4
, --socks4a
y --socks5
en lugar de -x. En este caso, debes establecer la URL del proxy sin nombre de usuario y contraseña después de la opción y, a continuación, 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
Se conectará a HTTPBin a través del proxy 93.16.238.41:8721
socks4
, utilizando admin334
como nombre de usuario y kv4nsDGC3
como contraseña para la autenticación.
Consejos y trucos que debes saber
En esta sección, verás algunos trucos interesantes y consejos valiosos para usar un proxy curl
como un profesional.
Activación y desactivación rápida de los proxies
La idea aquí es definir alias para configurar y desconfigurar proxies mediante programación a través de variables de entorno con comandos personalizados.
En macOS y Linux, puedes hacerlo creando un archivo .bashrc
. Se trata de un archivo de secuencia de comandos que se ejecuta cada vez que el usuario inicia sesión.
Muévelo a tu carpeta de inicio:
cd ~
Después, crea o abre un archivo .bashrc:
nano .bashrc
Añade el contenido en el formato siguiente 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"
Por lo tanto, 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 equipo.
Ahora puedes activar y desactivar un proxy curl
con:
proxyon
curl "http://httpbin.org/ip"
# other HTTP requests...
proxyoff
Ten en cuenta los comandos personalizados proxyon
y proxyoff
. Estos comandos realizan las operaciones especificadas por los alias del archivo .bashrc
.
En Windows, puedes lograr algo similar con los alias de PowerShell.
Ignorar los proxies para una sola solicitud
Si quieres evitar que curl
utilice un proxy configurado para una solicitud específica, puedes usar el argumento --noproxy «*
” de la siguiente manera:
curl --noproxy "*" <URL>
Esto indica a curl
que no utilice proxies para todas las URL.
Configura un proxy y ejecuta:
curl --noproxy "*" "https://httpbin.org/ip"
El origen resultante contendrá tu IP, no la del servidor proxy.
Evitar errores en el certificado SSL
Al usar proxies en curl
, es posible que tus solicitudes fallen debido a errores en un certificado SSL. Para evitarlo, usa la opción -k
como en la siguiente sintaxis:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>
-k
te ayuda a evitar errores de certificación al permitir conexiones de servidor inseguras en lugar de SSL.
Por ejemplo, puedes contactar con HTTPBin evitando los problemas de SSL con:
curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"
Obtener más información sobre la solicitud
Cuando una solicitud en curl
falla, no es fácil entender lo que ha ocurrido. 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 utilizados 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 los mejores para curl
?
La respuesta a esta pregunta depende de tu caso de uso y de la naturaleza de las solicitudes de curl
que tengas que realizar. Para encontrar la solución de proxy adecuada para tus necesidades, echa un vistazo a los diferentes tipos de proxies disponibles:
- Proxies de centros de datos: son rápidos, pero los sitios pueden detectarlos y bloquearlos fácilmente debido a sus rangos de IP identificables.
- Proxies residenciales: garantizan un alto nivel de anonimato porque ofrecen direcciones IP que provienen de dispositivos reales en ubicaciones específicas. Los proxies residenciales son perfectos para acceder a sitios que dependen de bloqueos de restricción geográfica o para evitar las medidas antibots, además de para realizar raspado web con curl.
- Proxies de ISP: son seguros, rápidos y muy fiables, ya que proporcionan direcciones IP desde dispositivos registrados en los proveedores de Internet (ISP). Los proxies de ISP representan una solución perfecta para la supervisión de optimización para buscadores (SEO), la navegación web y la investigación del mercado.
- Proxies móviles: ofrecen direcciones IP de dispositivos móviles reales para un alto nivel de anonimato. Son útiles para acceder a aplicaciones, sitios o contenido diseñados específicamente para dispositivos móviles.
Este es solo un breve resumen, pero puedes obtener más información en nuestra guía sobre tipos de IP de proxies.
Conclusión
En esta guía de proxies de curl, aprendiste qué es cURL
, qué ofrece y cómo configurar un proxy HTTP/HTTPS/SOCKS. Resulta que no te puedes fiar de curl con los servicios de proxies de proveedores gratuitos. Por lo tanto, la principal decisión técnica que hay que tomar es elegir el proveedor de proxies. Ahorra tiempo y energía y opta por la mejor opción del mercado: Bright Data.
Bright Data controla los mejores servidores proxy del mundo y trabaja para empresas de Fortune 500 y para más de 20 000 clientes. Su red mundial de proxies incluye:
- Proxies de centros de datos: más de 770 000 IP de centros de datos.
- Proxies residenciales: más de 72 millones de IP residenciales en más de 195 países.
- Proxies de ISP: más de 700 000 IP de ISP.
- Proxies móviles: más de 7 millones de IP móviles.
En general, es una de las redes de proxies orientadas al raspado web más grandes y fiables del mercado. Únete a la mayor red de proxies y obtén una prueba gratuita.
No se requiere tarjeta de crédito