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