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