FEATURES.md 5.8 KB

Features -- what curl can do

curl tool

  • config file support
  • multiple URLs in a single command line
  • range "globbing" support: [0-13], {one,two,three}
  • multiple file upload on a single command line
  • custom maximum transfer rate
  • redirectable stderr
  • metalink support (13)
  • parallel transfers

libcurl

  • full URL syntax with no length limit
  • custom maximum download time
  • custom least download speed acceptable
  • custom output result after completion
  • guesses protocol from host name unless specified
  • uses .netrc
  • progress bar with time statistics while downloading
  • "standard" proxy environment variables support
  • compiles on win32 (reported builds on 70+ operating systems)
  • selectable network interface for outgoing traffic
  • IPv6 support on unix and Windows
  • happy eyeballs dual-stack connects
  • persistent connections
  • SOCKS 4 + 5 support, with or without local name resolving
  • supports user name and password in proxy environment variables
  • operations through HTTP proxy "tunnel" (using CONNECT)
  • replaceable memory functions (malloc, free, realloc, etc)
  • asynchronous name resolving (6)
  • both a push and a pull style interface
  • international domain names (11)

HTTP

  • HTTP/0.9 responses are optionally accepted
  • HTTP/1.0
  • HTTP/1.1
  • HTTP/2, including multiplexing and server push (5)
  • GET
  • PUT
  • HEAD
  • POST
  • multipart formpost (RFC1867-style)
  • authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3) to server and proxy
  • resume (both GET and PUT)
  • follow redirects
  • maximum amount of redirects to follow
  • custom HTTP request
  • cookie get/send fully parsed
  • reads/writes the netscape cookie file format
  • custom headers (replace/remove internally generated headers)
  • custom user-agent string
  • custom referrer string
  • range
  • proxy authentication
  • time conditions
  • via HTTP proxy, HTTPS proxy or SOCKS proxy
  • retrieve file modification date
  • Content-Encoding support for deflate and gzip
  • "Transfer-Encoding: chunked" support in uploads
  • automatic data compression (12)

HTTPS (1)

  • (all the HTTP features)
  • HTTP/3 experimental support
  • using client certificates
  • verify server certificate
  • via HTTP proxy, HTTPS proxy or SOCKS proxy
  • select desired encryption
  • select usage of a specific SSL version

FTP

  • download
  • authentication
  • Kerberos 5 (14)
  • active/passive using PORT, EPRT, PASV or EPSV
  • single file size information (compare to HTTP HEAD)
  • 'type=' URL support
  • dir listing
  • dir listing names-only
  • upload
  • upload append
  • upload via http-proxy as HTTP PUT
  • download resume
  • upload resume
  • custom ftp commands (before and/or after the transfer)
  • simple "range" support
  • via HTTP proxy, HTTPS proxy or SOCKS proxy
  • all operations can be tunneled through proxy
  • customizable to retrieve file modification date
  • no dir depth limit

FTPS (1)

  • implicit ftps:// support that use SSL on both connections
  • explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain ftp:// connection to use SSL for both or one of the connections

SCP (8)

  • both password and public key auth

SFTP (7)

  • both password and public key auth
  • with custom commands sent before/after the transfer

TFTP

  • download
  • upload

TELNET

  • connection negotiation
  • custom telnet options
  • stdin/stdout I/O

LDAP (2)

  • full LDAP URL support

DICT

  • extended DICT URL support

FILE

  • URL support
  • upload
  • resume

SMB

  • SMBv1 over TCP and SSL
  • download
  • upload
  • authentication with NTLMv1

SMTP

  • authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5 (4) and External.
  • send e-mails
  • mail from support
  • mail size support
  • mail auth support for trusted server-to-server relaying
  • multiple recipients
  • via http-proxy

SMTPS (1)

  • implicit smtps:// support
  • explicit "STARTTLS" usage to "upgrade" plain smtp:// connections to use SSL
  • via http-proxy

POP3

  • authentication: Clear Text, APOP and SASL
  • SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5 (4) and External.
  • list e-mails
  • retrieve e-mails
  • enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via custom requests
  • via http-proxy

POP3S (1)

  • implicit pop3s:// support
  • explicit "STLS" usage to "upgrade" plain pop3:// connections to use SSL
  • via http-proxy

IMAP

  • authentication: Clear Text and SASL
  • SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5 (4) and External.
  • list the folders of a mailbox
  • select a mailbox with support for verifying the UIDVALIDITY
  • fetch e-mails with support for specifying the UID and SECTION
  • upload e-mails via the append command
  • enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS, STORE, COPY and UID via custom requests
  • via http-proxy

IMAPS (1)

  • implicit imaps:// support
  • explicit "STARTTLS" usage to "upgrade" plain imap:// connections to use SSL
  • via http-proxy

MQTT

  • Subscribe to and publish topics using url scheme mqtt://broker/topic

Footnotes

  1. requires a TLS library
  2. requires OpenLDAP or WinLDAP
  3. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or SSPI (native Windows)
  4. requires a GSS-API implementation, however, only Windows SSPI is currently supported
  5. requires nghttp2
  6. requires c-ares
  7. requires libssh2, libssh or wolfSSH
  8. requires libssh2 or libssh
  9. requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI (native Windows)
  10. -
  11. requires libidn2 or Windows
  12. requires libz, brotli and/or zstd
  13. requires libmetalink, and either an Apple or Microsoft operating system, or OpenSSL, or GnuTLS, or NSS
  14. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)