Qué es cURL
cURL (se pronuncia «kerl») es una herramienta de línea de comandos para transferir datos hacia y desde servidores. Con unas pocas líneas en el terminal mueves grandes volúmenes de datos de un servidor a otro.
Como todo comando, cURL sigue una sintaxis fija:
curl [opciones] [URL]La parte de «opciones» indica qué debe hacer el comando. De estos parámetros —también llamados flags— hay unos 380. Uno de los más conocidos es -o, que guarda el contenido de una página en un archivo.
Como origen o destino, cURL necesita una URL (Uniform Resource Locator), una forma concreta de identificador uniforme de recursos. Los protocolos de red que no se direccionan mediante URL no son compatibles con cURL.
Por dentro, cURL se apoya en la biblioteca libcurl, que aporta los protocolos admitidos. libcurl es portable y se comporta igual en Linux, Windows y macOS; en esos sistemas suele venir preinstalada. Si no está, puedes descargar el paquete desde el sitio de cURL.
Qué protocolos admite cURL
cURL admite protocolos que transfieren datos en ambos sentidos y se direccionan por URL. HTTP es el valor por defecto; además funciona, entre otros, con:
- DICT
- FILE
- FTP y FTPS
- GOPHER y GOPHERS
- IMAP e IMAPS
- LDAP y LDAPS
- MQTT
- POP3 y POP3S
- RTMP y RTSP
- SCP y SFTP
- SMB y SMBS
- SMTP y SMTPS
- TELNET
- TFTP
Por qué se usa cURL
cURL es popular porque es versátil, simple y fiable. Descarga páginas enteras y transfiere archivos en cualquier formato admitido, y además sabe autenticar usuarios, enviar HTTP POST, trabajar con Metalink, subir por FTP y usar proxy en conexiones SSL. A eso se suma:
- una salida detallada de lo que se envía y se recibe, muy útil para depurar
- compatibilidad con muchos protocolos de red
- la opción de indicar varias variantes de una URL en un solo comando usando llaves
- el mismo comportamiento en todos los sistemas operativos habituales
cURL con un proxy HTTP o HTTPS
Para probarlo va bien un servicio que devuelva la IP de origen de la petición: si el proxy funciona, ahí verás su dirección y no la tuya.
Los comandos
Abre un terminal y consulta las opciones:
curl --helpEn la lista aparece, entre otras:
-x, --proxy [protocol://]host[:port]La x va en minúscula. Los datos del proxy se pasan con -x o con --proxy; las dos formas significan lo mismo:
curl -x "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"o bien
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"Si aparecen errores de certificado SSL, añade -k en minúscula. Con eso cURL acepta conexiones no verificadas:
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip" -kLa URL del proxy y la de destino van entre comillas dobles. No es casualidad: es la forma recomendada para que los caracteres especiales de la URL no confundan al intérprete de comandos.
El protocolo de proxy por defecto es HTTP, así que estos dos comandos hacen exactamente lo mismo:
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
curl --proxy "user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"cURL con un proxy SOCKS
curl -x "socks5://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"Según la versión de SOCKS escribirás socks4://, socks4a://, socks5:// o socks5h://. Con socks5h:// el nombre de host lo resuelve el proxy y no tu equipo, que suele ser la opción recomendable para scraping: de lo contrario la consulta DNS sale por tu propia conexión.
Como alternativa, puedes fijar el proxy con --socks5 en lugar de -x; el usuario y la contraseña van entonces en --proxy-user.
cURL es una herramienta muy potente para automatizar y, en cuanto a soporte de proxy, una de las líneas de comandos más completas que existen. Como libcurl además se lleva bien con PHP, muchas aplicaciones web la usan en proyectos de scraping, lo que convierte a cURL en parte del equipamiento básico de cualquier scraper. Las direcciones que elijas deciden la tasa de éxito: Proxies residenciales para destinos exigentes y Proxies de centro de datos para descargas masivas y rápidas.




