La nueva versión de curl 7.66.0 llega con soporte inicial de HTTP/3
cURL es un proyecto de software consistente en una biblioteca (libcurl) y un intérprete de comandos (curl) orientado a la transferencia de archivos. Soporta los protocolos FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP, entre otros.
cURL soporta certificados HTTPS, HTTP POST, HTTP PUT, subidas FTP, Kerberos, subidas mediante formulario HTTP, proxies, cookies, autenticación mediante usuario y contraseña (Basic, DIgest, NTLM y Negotiate para HTTP y kerberos 4 para FTP), continuación de transferencia de archivos, tunneling de proxy HTTP, IMAP, POP3, LDAP, RTSP, RTMP y otras prestaciones.
El principal propósito y uso para cURL es automatizar transferencias de archivos o secuencias de operaciones no supervisadas. Es por ejemplo, una herramienta válida para simular las acciones de usuarios en un navegador web.
Básicamente se trata de una utilidad para recibir y enviar datos a través de la red, que proporciona la capacidad de formar una solicitud de manera flexible mediante el establecimiento de parámetros como cookie, user_agent, referer y cualquier otro encabezado.
Ademas de que la biblioteca libcurl proporciona una API para usar todas las funciones de curl en programas en lenguajes como C, Perl, PHP, Python.
cURL es de código abierto, software libre distribuido bajo la Licencia MIT.
Sobre la nueva versión de cURL 7.66.0
Recientemente se dio a conocer una nueva versión de cURL la cual llega con la corrección de 77 errores e implementa varias innovaciones de entre las cuales se destaca la adición del soporte inicial para el protocolo HTTP/3, que aún no se ha llevado a una forma totalmente funcional y está deshabilitado de forma predeterminada (por ejemplo, hasta que el controlador de finalización de la conexión esté listo, la paralelización y el procesamiento de solicitudes grandes no funcionan).
Para poder habilitar HTTP 3, se requiere la reconstrucción con los backends quiche o ngtcp2 + nghttp3 . Se propone el uso del parámetro “–http3” y la opción libcurl “CURLOPT_HTTP_VERSION”;
Otro de los cambios importantes para esta nueva versión de cURL es que se agregaron los parámetros “-Z” (“–parallel”) y “–parallel-max”, lo que le permite organizar la carga simultánea de una lista de URL en varias secuencias.
Se agregó la capacidad de establecer un identificador diferente para la autorización en SASL, especificado mediante el parámetro “–sasl-authzid” o la opción CURLOPT_SASL_AUTHZID (el identificador de autenticación se pasa a través de CURLOPT_USERPWD).
Se implementó el procesamiento del encabezado HTTP Retry-After y el código de retorno 429 utilizando el parámetro “–retry” o la opción CURLINFO_RETRY_AFTER.
El encabezado Retry-After determina el retraso antes de enviar solicitudes posteriores en caso de recibir los códigos de respuesta 429 (Demasiadas solicitudes), 503 (Servicio no disponible) o 301 (Movido permanentemente).
De los demás cambios que se destacan en esta nueva versión:
- Se ha agregado la función curl_multi_poll (), idéntica a curl_multi_wait (), excepto cuando no hay descriptores de archivo para esperar (curl_multi_wait termina inmediatamente, y curl_multi_poll introduce un breve retraso antes de salir para evitar situaciones de carga espuria debido a una llamada cíclica)
- A partir de esta versión, curl considerará esas respuestas HTTP no válidas de forma predeterminada
- Vulnerabilidades solucionadas : CVE-2019-5481 : doble bloqueo de memoria libre en FTP-KRB (kerberos sobre FTP); CVE-2019-5482 : desbordamiento de búfer en el controlador TFTP.
- Se corrigió una regresión que hacía que curl no utilizara las credenciales correctamente de la URL al realizar la autenticación de varias etapas (como HTTP Digest) con un proxy.
¿Como instalar cURL en Linux?
Para quienes estén interesados en poder instalar esta nueva versión de cURL podrán hacerlo descargado el código fuente y realizando la compilación.
Para ello lo primero que vamos a hacer es descarga el ultimo paquete de cURL con ayuda de una terminal, en ella vamos a teclear:
wget https://curl.haxx.se/download/curl-7.66.0.tar.xz
Después, vamos a descomprimir el paquete descargado con:
tar -xzvf curl-7.66.0.tar.xz
Entramos a la carpeta recién creada con:
cd curl-7.66.0
Entramos como root con:
sudo su
Y tecleamos lo siguiente:
./configure --prefix=/usr \ --disable-static \ --enable-threaded-resolver \ --with-ca-path=/etc/ssl/certs &&
make make install && rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&
install -v -d -m755 /usr/share/doc/curl-7.66.0 && cp -v -R docs/* /usr/share/doc/curl-7.66.0
Finalmente podremos comprobar la versión con:
curl --version