curl/docs/FEATURES.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

220 lines
5.7 KiB
Markdown
Raw Normal View History

# Features -- what curl can do
2000-05-23 01:35:35 +08:00
## curl tool
2000-05-23 01:35:35 +08:00
2004-08-12 22:08:46 +08:00
- 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
- redirect stderr
- parallel transfers
## libcurl
2004-08-12 22:08:46 +08:00
- full URL syntax with no length limit
2000-05-23 01:35:35 +08:00
- 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
2000-12-11 23:35:57 +08:00
- "standard" proxy environment variables support
- compiles on win32 (reported builds on 70+ operating systems)
2003-06-26 19:36:32 +08:00
- selectable network interface for outgoing traffic
- IPv6 support on Unix and Windows
- happy eyeballs dual-stack connects
2012-07-21 03:02:58 +08:00
- 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)
2012-07-21 03:02:58 +08:00
- replaceable memory functions (malloc, free, realloc, etc)
- asynchronous name resolving (6)
2007-05-26 05:20:39 +08:00
- both a push and a pull style interface
- international domain names (10)
## HTTP
2000-05-23 01:35:35 +08:00
- HTTP/0.9 responses are optionally accepted
- HTTP/1.0
- HTTP/1.1
- HTTP/2, including multiplexing and server push (5)
2000-05-23 01:35:35 +08:00
- GET
- PUT
- HEAD
- POST
2003-06-26 19:36:32 +08:00
- multipart formpost (RFC1867-style)
- authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3)
to server and proxy
- resume (both GET and PUT)
2000-05-23 01:35:35 +08:00
- follow redirects
2000-12-11 23:35:57 +08:00
- maximum amount of redirects to follow
2000-05-23 01:35:35 +08:00
- custom HTTP request
2000-12-11 23:35:57 +08:00
- cookie get/send fully parsed
- reads/writes the Netscape cookie file format
2003-06-26 19:36:32 +08:00
- custom headers (replace/remove internally generated headers)
2000-05-23 01:35:35 +08:00
- custom user-agent string
2014-03-13 11:48:38 +08:00
- custom referrer string
2000-05-23 01:35:35 +08:00
- range
- proxy authentication
- time conditions
- via HTTP proxy, HTTPS proxy or SOCKS proxy
2000-12-11 23:35:57 +08:00
- retrieve file modification date
2003-05-28 18:24:20 +08:00
- Content-Encoding support for deflate and gzip
- "Transfer-Encoding: chunked" support in uploads
- automatic data compression (11)
## HTTPS (1)
2000-05-23 01:35:35 +08:00
- (all the HTTP features)
- HTTP/3 experimental support
2005-05-18 18:14:25 +08:00
- using client certificates
2000-12-11 23:35:57 +08:00
- verify server certificate
- via HTTP proxy, HTTPS proxy or SOCKS proxy
2003-05-28 18:24:20 +08:00
- select desired encryption
- select usage of a specific SSL version
## FTP
2000-05-23 01:35:35 +08:00
- download
- authentication
- Kerberos 5 (12)
2001-12-03 18:07:49 +08:00
- active/passive using PORT, EPRT, PASV or EPSV
2000-05-23 01:35:35 +08:00
- 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
2000-08-01 06:42:34 +08:00
- custom ftp commands (before and/or after the transfer)
2000-05-23 01:35:35 +08:00
- simple "range" support
- via HTTP proxy, HTTPS proxy or SOCKS proxy
- all operations can be tunneled through proxy
2000-12-11 23:35:57 +08:00
- customizable to retrieve file modification date
2004-08-12 22:08:46 +08:00
- no dir depth limit
2000-05-23 01:35:35 +08:00
## FTPS (1)
- implicit `ftps://` support that use SSL on both connections
- explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://`
2004-01-07 22:50:11 +08:00
connection to use SSL for both or one of the connections
## SCP (8)
2007-05-26 05:20:39 +08:00
- both password and public key auth
## SFTP (7)
2007-05-26 05:20:39 +08:00
- both password and public key auth
- with custom commands sent before/after the transfer
## TFTP
- download
- upload
2005-11-17 22:28:58 +08:00
## TELNET
2000-05-23 01:35:35 +08:00
- connection negotiation
2001-03-12 17:44:08 +08:00
- custom telnet options
2000-05-23 01:35:35 +08:00
- stdin/stdout I/O
## LDAP (2)
2000-05-23 01:35:35 +08:00
- full LDAP URL support
## DICT
2000-05-23 01:35:35 +08:00
- extended DICT URL support
## FILE
2000-05-23 01:35:35 +08:00
- URL support
- upload
2004-08-12 22:08:46 +08:00
- resume
2000-05-23 01:35:35 +08:00
## 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 emails
- 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 emails
- retrieve emails
- 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 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 (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, Secure Transport or SSPI
(native Windows)
10. requires libidn2 or Windows
11. requires libz, brotli and/or zstd
12. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)