1<!-- 2Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 3 4SPDX-License-Identifier: curl 5--> 6 7# Features -- what curl can do 8 9## curl tool 10 11 - config file support 12 - multiple URLs in a single command line 13 - range "globbing" support: [0-13], {one,two,three} 14 - multiple file upload on a single command line 15 - custom maximum transfer rate 16 - redirect stderr 17 - parallel transfers 18 19## libcurl 20 21 - URL RFC 3986 syntax 22 - custom maximum download time 23 - custom least download speed acceptable 24 - custom output result after completion 25 - guesses protocol from hostname unless specified 26 - uses .netrc 27 - progress bar with time statistics while downloading 28 - "standard" proxy environment variables support 29 - compiles on win32 (reported builds on 70+ operating systems) 30 - selectable network interface for outgoing traffic 31 - IPv6 support on Unix and Windows 32 - happy eyeballs dual-stack connects 33 - persistent connections 34 - SOCKS 4 + 5 support, with or without local name resolving 35 - supports username and password in proxy environment variables 36 - operations through HTTP proxy "tunnel" (using CONNECT) 37 - replaceable memory functions (malloc, free, realloc, etc) 38 - asynchronous name resolving (6) 39 - both a push and a pull style interface 40 - international domain names (10) 41 42## HTTP 43 44 - HTTP/0.9 responses are optionally accepted 45 - HTTP/1.0 46 - HTTP/1.1 47 - HTTP/2, including multiplexing and server push (5) 48 - GET 49 - PUT 50 - HEAD 51 - POST 52 - multipart formpost (RFC 1867-style) 53 - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3) 54 to server and proxy 55 - resume (both GET and PUT) 56 - follow redirects 57 - maximum amount of redirects to follow 58 - custom HTTP request 59 - cookie get/send fully parsed 60 - reads/writes the Netscape cookie file format 61 - custom headers (replace/remove internally generated headers) 62 - custom user-agent string 63 - custom referrer string 64 - range 65 - proxy authentication 66 - time conditions 67 - via HTTP proxy, HTTPS proxy or SOCKS proxy 68 - retrieve file modification date 69 - Content-Encoding support for deflate and gzip 70 - "Transfer-Encoding: chunked" support in uploads 71 - automatic data compression (11) 72 73## HTTPS (1) 74 75 - (all the HTTP features) 76 - HTTP/3 experimental support 77 - using client certificates 78 - verify server certificate 79 - via HTTP proxy, HTTPS proxy or SOCKS proxy 80 - select desired encryption 81 - select usage of a specific SSL version 82 83## FTP 84 85 - download 86 - authentication 87 - Kerberos 5 (12) 88 - active/passive using PORT, EPRT, PASV or EPSV 89 - single file size information (compare to HTTP HEAD) 90 - 'type=' URL support 91 - directory listing 92 - directory listing names-only 93 - upload 94 - upload append 95 - upload via http-proxy as HTTP PUT 96 - download resume 97 - upload resume 98 - custom ftp commands (before and/or after the transfer) 99 - simple "range" support 100 - via HTTP proxy, HTTPS proxy or SOCKS proxy 101 - all operations can be tunneled through proxy 102 - customizable to retrieve file modification date 103 - no directory depth limit 104 105## FTPS (1) 106 107 - implicit `ftps://` support that use SSL on both connections 108 - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://` 109 connection to use SSL for both or one of the connections 110 111## SCP (8) 112 113 - both password and public key auth 114 115## SFTP (7) 116 117 - both password and public key auth 118 - with custom commands sent before/after the transfer 119 120## TFTP 121 122 - download 123 - upload 124 125## TELNET 126 127 - connection negotiation 128 - custom telnet options 129 - stdin/stdout I/O 130 131## LDAP (2) 132 133 - full LDAP URL support 134 135## DICT 136 137 - extended DICT URL support 138 139## FILE 140 141 - URL support 142 - upload 143 - resume 144 145## SMB 146 147 - SMBv1 over TCP and SSL 148 - download 149 - upload 150 - authentication with NTLMv1 151 152## SMTP 153 154 - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5 155 (4) and External. 156 - send emails 157 - mail from support 158 - mail size support 159 - mail auth support for trusted server-to-server relaying 160 - multiple recipients 161 - via http-proxy 162 163## SMTPS (1) 164 165 - implicit `smtps://` support 166 - explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL 167 - via http-proxy 168 169## POP3 170 171 - authentication: Clear Text, APOP and SASL 172 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), 173 Kerberos 5 (4) and External. 174 - list emails 175 - retrieve emails 176 - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via 177 custom requests 178 - via http-proxy 179 180## POP3S (1) 181 182 - implicit `pop3s://` support 183 - explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL 184 - via http-proxy 185 186## IMAP 187 188 - authentication: Clear Text and SASL 189 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), 190 Kerberos 5 (4) and External. 191 - list the folders of a mailbox 192 - select a mailbox with support for verifying the `UIDVALIDITY` 193 - fetch emails with support for specifying the UID and SECTION 194 - upload emails via the append command 195 - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS, 196 STORE, COPY and UID via custom requests 197 - via http-proxy 198 199## IMAPS (1) 200 201 - implicit `imaps://` support 202 - explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL 203 - via http-proxy 204 205## MQTT 206 207 - Subscribe to and publish topics using URL scheme `mqtt://broker/topic` 208 209## Footnotes 210 211 1. requires a TLS library 212 2. requires OpenLDAP or WinLDAP 213 3. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or 214 SSPI (native Windows) 215 4. requires a GSS-API implementation, however, only Windows SSPI is 216 currently supported 217 5. requires nghttp2 218 6. requires c-ares 219 7. requires libssh2, libssh or wolfSSH 220 8. requires libssh2 or libssh 221 9. requires OpenSSL, GnuTLS, mbedTLS, Secure Transport or SSPI 222 (native Windows) 223 10. requires libidn2 or Windows 224 11. requires libz, brotli and/or zstd 225 12. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) 226