Articulo de referencia

rizo

"},"developer":{"wt":"[https://curl.se/docs/thanks.html Contributors to the curl project]"},"released":{"wt":"{{Start date and age|1996}} "},"latest release version":{"wt":"{{wi...

cURL (pronunciado como "curl", [ 6 ] / kɜːrl / ) es un programa informático gratuito y de código abierto para transferir datos desde y hacia servidores de Internet . Permite descargar recursos identificados por URL desde un servidor web a través de HTTP y admite diversos protocolos de red , esquemas URI , múltiples versiones de HTTP y proxy . El proyecto consta de una biblioteca ( libcurl ) y una herramienta de línea de comandos ( curl ), que se han adaptado ampliamente a diferentes plataformas informáticas . Fue creado por Daniel Stenberg , quien sigue siendo el desarrollador principal del proyecto.

Historia

El software se lanzó por primera vez en 1996, [ 7 ] originalmente llamado httpgety luego se convirtió en urlget, antes de adoptar el nombre actual de curl. [ 8 ] [ 9 ] El nombre significa "Cliente y URL ". [ 10 ] El autor original y desarrollador principal es el desarrollador sueco Daniel Stenberg , quien creó curl para impulsar parte de un bot de IRC , porque quería proporcionar automáticamente tipos de cambio de divisas, obtenidos de un sitio web, a los usuarios en una sala de chat de IRC . [ 2 ]

Componentes

libcurl

libcurles una biblioteca de transferencia de URL del lado del cliente que impulsa curl. [ 11 ] Admite numerosos protocolos de Internet, incluidos DICT , FILE , FTP , FTPS , GOPHER , GOPHERS , HTTP , HTTPS , IMAP , IMAPS , LDAP , LDAPS , MQTT , POP3 , POP3S , RTMP , RTMPS , RTSP , SCP , SFTP , SMB , SMBS , SMTP , SMTPS , TELNET , TFTP , WS y WSS .

libcurl admite las versiones HTTP 0.9, 1.0, 1.1, HTTP/2 y HTTP/3, incluyendo h2c, conocimiento previo, modos de conexión dual y QUIC con protocolos de enlace 0-RTT.

La biblioteca proporciona funciones como el manejo de cookies , métodos de solicitud HTTP estándar ( GET , POST , PUT , HEAD , cargas de formularios multipart) y mecanismos de autenticación que incluyen Basic, Digest, NTLM , Negotiate, CRAM-MD5 , SCRAM-SHA, Kerberos, tokens Bearer, AWS Sigv4, SASL y lectura de credenciales desde .netrc.

libcurlAdmite diversas funciones de seguridad y transporte, como TLS 1.0 - 1.3 , autenticación mutua, STARTTLS , OCSP stapling , Encrypted Client Hello ( ECH ), False Start, fijación de claves, preparación post-cuántica , reanudación de sesión, datos anticipados, importación/exportación de sesión, HSTS , Alt-Svc, Public Suffix List ( PSL ), etiquetas de entidad ( ETags ), solicitudes de rango, compresión de transferencia ( gzip , Brotli , zstd ), encabezados personalizados, métodos personalizados y seguimiento de redirecciones.

También ofrece soporte para proxies y redes, incluyendo SOCKS4 , SOCKS5 , HAProxy y proxies HTTP con encadenamiento y sockets de dominio Unix , así como autenticación de usuario y contraseña [ 12 ] . Las funciones avanzadas de resolución de nombres incluyen DNS sobre HTTPS , servidores DNS personalizados , asignaciones de host/puerto y almacenamiento en caché de DNS.

Entre las funcionalidades adicionales se incluyen la reanudación de transferencias de archivos, la carga FTP , la carga HTTP mediante formularios , certificados HTTPS y mecanismos para controlar y supervisar las transferencias, como tiempos de espera configurables, reintentos automáticos, limitación de velocidad y detección de conexiones bloqueadas. La biblioteca también ofrece funciones de generación de informes mejoradas, como metadatos en formato JSON, gestión de la disposición del contenido, visualización del nombre de host IDN e información de transferencia personalizable.

La libcurlbiblioteca es portátil, ya que se compila y funciona de forma idéntica en la mayoría de las plataformas, incluidas: [ 13 ] [ 14 ] [ 15 ]

La libcurlbiblioteca es segura para subprocesos y compatible con IPv6 . Hay enlaces disponibles para más de 50 lenguajes , incluidos C , C++ , Java , Julia (viene incluida), PHP y Python . [ 17 ]

La libcurlbiblioteca admite SSL/TLS a través de GnuTLS , mbedTLS , SChannel (en Windows), OpenSSL , BoringSSL , AWS-LC , QuicTLS , LibreSSL , AmiSSL , wolfSSL y rustls . [ 18 ]

rizo

curles una herramienta de línea de comandos para obtener o enviar datos, incluidos archivos, utilizando la sintaxis URL . curlProporciona una interfaz a la libcurlbiblioteca; admite todos los protocolos libcurlcompatibles. [ 12 ]

curlAdmite HTTPS y realiza la verificación de certificados SSL o TLS de forma predeterminada. Al curlconectarse a un servidor remoto mediante HTTPS, obtiene el certificado del servidor remoto y luego verifica la validez del servidor remoto con su almacén de certificados CAcurl para asegurarse de que sea el servidor que dice ser. Algunos paquetes incluyen un archivo de almacén de certificados CA. Existen varias opciones para especificar un certificado CA, como --cacerty --capath. La --cacertopción se puede usar para especificar la ubicación del archivo de almacén de certificados CA.

A partir de Windows 10 versión 1809, Windows incluye curl.exe. [ 15 ] En Microsoft Windows, si no se especifica un archivo de certificado CA, curl buscará el curl-ca-bundle.crtarchivo en las siguientes ubicaciones, en el orden dado: [ 19 ]

  1. Carpeta de la aplicación (dónde curl.exese encuentra)
  2. Directorio de trabajo actual
  3. C:\Windows\System32directorio
  4. C:\Windowsdirectorio
  5. Directorios especificados en la PATHvariable de entorno

curlSe devolverá un mensaje de error si el servidor remoto utiliza un certificado autofirmado o si el certificado del servidor remoto no está firmado por una CA incluida en el archivo de certificados de CA. -kSe --insecurepuede usar la opción para omitir la verificación del certificado. Alternativamente, si el servidor remoto es de confianza, se puede agregar el certificado de CA del servidor remoto al archivo de almacén de certificados de CA.

rizo pequeño

tiny-curlEs una versión ligera de libcurl desarrollada por wolfSSL Inc. para dispositivos integrados y con recursos limitados. Implementa la funcionalidad HTTPS en aproximadamente 100 KB de código en arquitecturas típicas de 32 bits.

Licencias

curl y libcurl se distribuyen bajo la licencia MIT . tiny-curl, una versión de curl optimizada para sistemas embebidos y compatible con wolfSSL, está disponible bajo la licencia GNU GPLv3 o posterior, así como bajo licencias comerciales.

Curl, una versión sólida como una roca [ 20 ] , la edición de soporte a largo plazo (LTS), utiliza la misma licencia de curl por defecto, con una opción de licencia comercial para organizaciones que requieren soporte contractual o cobertura de garantía.

Véase también

  • curl-loader : una herramienta de prueba de código abierto basada en curl.
  • libwww : una biblioteca antigua que incluye una interfaz de línea de comandos.
  • PowerShell : el iwr (Invoke-WebRequest) de Windows PowerShell tenía una funcionalidad similar a la de curl; también era un cliente web. [ 21 ]
  • Rastreador web : un bot de internet que puede rastrear la web.
  • Wget : una herramienta de línea de comandos similar, sin biblioteca asociada, pero capaz de realizar descargas recursivas.

Referencias

  1. Stenberg, Daniel (20 de marzo de 2015). "Curl, hoy cumple 17 años" . daniel.haxx.se . Consultado el 20 de marzo de 2015 .
  2. 1 2 "Historia de curl - Cómo curl llegó a ser así" . curl. Archivado del original el 30 de septiembre de 2017. Recuperado el 17 de noviembre de 2016. Daniel simplemente adoptó una herramienta de código abierto de línea de comandos existente, httpget, que el brasileño Rafael Sagula había escrito y de la que recientemente lanzó la versión 0.1. Después de algunos ajustes menores, hizo justo lo que necesitaba. [...] HttpGet 1.0 se lanzó el 8 de abril de 1997 con soporte para proxy HTTP completamente nuevo. [...] Stenberg estaba pasando tiempo escribiendo un bot de IRC para un canal relacionado con Amiga en EFnet. Entonces se le ocurrió la idea de poner cálculos de cambio de divisas disponibles para los usuarios de Internet Relay Chat (IRC).
  3. "Versión 8.21.0" . 24 de junio de 2026. Consultado el 24 de junio de 2026 .
  4. "Licencia curl" . spdx.org .
  5. 1 2 "curl – copyright" . curl.se. Archivado del original el 15-01-2024 . Recuperado el 17-01-2024 .
  6. "curl - Preguntas frecuentes" . curl.se .
  7. "Historia del curl" . fossies.org. Archivado del original el 17 de septiembre de 2021. Consultado el 11 de mayo de 2021 .
  8. "Registro de cambios" . 4 de enero de 2020. Consultado el 4 de enero de 2020. La primera versión de curl . La herramienta se llamaba urlget antes de esto. Y httpget antes de eso.
  9. Stenberg, Daniel (4 de enero de 2020). "Registro de cambios de curl restaurado completo" (html) . Haxx Se . Consultado el 2 de enero de 2020 .
  10. Stenberg, Daniel. "Origen del nombre" . curl.se. Consultado el 27 de marzo de 2021 .
  11. Jones, M. Tim (8 de septiembre de 2009). "Conversando a través de Internet con cURL y libcurl: uso de libcurl con C y Python" . IBM Developerworks . Archivado del original el 14 de abril de 2015. Recuperado el 12 de septiembre de 2018 .
  12. 1 2 "curl - Cómo usarlo " . curl.se.
  13. "Software de código abierto de terceros Curl" . Gitee . OpenAtom OpenHarmony . Consultado el 17 de marzo de 2024 .
  14. "Software de código abierto de terceros Curl" . GitHub . OpenAtom OpenHarmony . Consultado el 17 de marzo de 2024 .
  15. 1 2 Turner, Rich (18 de enero de 2018). "¡Tar y Curl llegan a Windows!" . Línea de comandos de Windows . Microsoft .
  16. "Componentes de código abierto para el SDK nativo para BlackBerry Tablet OS" . Archivado del original el 27/01/2013 . Consultado el 19/09/2017 .
  17. "Enlaces de libcurl" . curl.se.
  18. "curl admite rustls | daniel.haxx.se" . 9 de febrero de 2021. Consultado el 1 de enero de 2022 .
  19. "curl - Certificados SSL CA " . curl.se.
  20. "Rizos sólidos como una roca" .
  21. ^ Del, Ryan (2 de marzo de 2018). "Comandos equivalentes a cURL y Wget por línea de comandos de Windows con Powershell" [ comandos equivalentes a cURL y Wget para la línea de comandos de Windows con Powershell ] (html) . Ryadel (en italiano) . Consultado el 4 de enero de 2020 . Para emular el comportamiento del comando Linux cURL, es suficiente crear un archivo cURL.ps1 que contenga el siguiente código
  • Sitio web oficialEdita esto en Wikidata