Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/curl/docs/FEATURES.md
2065 views

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

  • redirect stderr

  • parallel transfers

libcurl

  • URL RFC 3986 syntax

  • custom maximum download time

  • custom lowest download speed acceptable

  • custom output result after completion

  • guesses protocol from hostname unless specified

  • supports .netrc

  • progress bar with time statistics while downloading

  • standard proxy environment variables support

  • have run on 101 operating systems and 28 CPU architectures

  • selectable network interface for outgoing traffic

  • IPv6 support on Unix and Windows

  • happy eyeballs dual-stack IPv4 + IPv6 connects

  • persistent connections

  • SOCKS 4 + 5 support, with or without local name resolving

  • pre-proxy support, for proxy chaining

  • supports username and password in proxy environment variables

  • operations through HTTP proxy "tunnel" (using CONNECT)

  • replaceable memory functions (malloc, free, realloc, etc)

  • asynchronous name resolving

  • both a push and a pull style interface

  • international domain names (IDN)

  • transfer rate limiting

  • stable API and ABI

  • TCP keep alive

  • TCP Fast Open

  • DNS cache (that can be shared between transfers)

  • non-blocking single-threaded parallel transfers

  • Unix domain sockets to server or proxy

  • DNS-over-HTTPS

  • uses non-blocking name resolves

  • selectable name resolver backend

URL API

  • parses RFC 3986 URLs

  • generates URLs from individual components

  • manages "redirects"

Header API

  • easy access to HTTP response headers, from all contexts

  • named headers

  • iterate over headers

TLS

  • selectable TLS backend(s)

  • TLS False Start

  • TLS version control

  • TLS session resumption

  • key pinning

  • mutual authentication

  • Use dedicated CA cert bundle

  • Use OS-provided CA store

  • separate TLS options for HTTPS proxy

HTTP

  • HTTP/0.9 responses are optionally accepted

  • HTTP/1.0

  • HTTP/1.1

  • HTTP/2, including multiplexing and server push

  • GET

  • PUT

  • HEAD

  • POST

  • multipart formpost (RFC 1867-style)

  • authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) to server and proxy

  • resume transfers

  • 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

  • HTTP/2 or HTTP/1.1 to HTTPS proxy

  • retrieve file modification date

  • Content-Encoding support for deflate, gzip, brotli and zstd

  • "Transfer-Encoding: chunked" support in uploads

  • HSTS

  • alt-svc

  • ETags

  • HTTP/1.1 trailers, both sending and getting

HTTPS

  • HTTP/3

  • using client certificates

  • verify server certificate

  • via HTTP proxy, HTTPS proxy or SOCKS proxy

  • select desired encryption

  • select usage of a specific TLS version

  • ECH

FTP

  • download

  • authentication

  • Kerberos 5

  • active/passive using PORT, EPRT, PASV or EPSV

  • single file size information (compare to HTTP HEAD)

  • 'type=' URL support

  • directory listing

  • directory 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 directory depth limit

FTPS

  • 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

SSH (both SCP and SFTP)

  • selectable SSH backend

  • known hosts support

  • public key fingerprinting

  • both password and public key auth

SFTP

  • both password and public key auth

  • with custom commands sent before/after the transfer

  • directory listing

TFTP

  • download

  • upload

TELNET

  • connection negotiation

  • custom telnet options

  • stdin/stdout I/O

LDAP

  • 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, Kerberos 5 and External

  • send emails

  • mail from support

  • mail size support

  • mail auth support for trusted server-to-server relaying

  • multiple recipients

  • via http-proxy

SMTPS

  • 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, Kerberos 5 and External

  • list emails

  • retrieve emails

  • enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via custom requests

  • via http-proxy

POP3S

  • 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, Kerberos 5 and External

  • list the folders of a mailbox

  • select a mailbox with support for verifying the UIDVALIDITY

  • fetch emails with support for specifying the UID and SECTION

  • upload emails via the append command

  • enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS, STORE, COPY and UID via custom requests

  • via http-proxy

IMAPS

  • 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