1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-24 17:18:48 -05:00
curl/docs/FEATURES.md

224 lines
5.8 KiB
Markdown
Raw Normal View History

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