====== Features -- what can curl do ====== _ _ ____ _ ___| | | | _ \| | / __| | | | |_) | | | (__| |_| | _ <| |___ \___|\___/|_| \_\_____| FEATURES ===== curl tool ===== - 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 ===== libcurl supports ===== - full URL syntax with no length limit - 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/time specs while downloading - "standard" proxy environment variables support - compiles on win32 (reported builds on 40+ operating systems) - selectable network interface for outgoing traffic - IPv6 support on unix and Windows - persistant connections - socks5 support - supports user name + password in proxy environment variables - operations through proxy "tunnel" (using CONNECT) - supports large files (>2GB and >4GB) both upload/download - replacable memory functions (malloc, free, realloc, etc) - asynchronous name resolving (*6) - both a push and a pull style interface ===== HTTP ===== - HTTP/1.1 compliant (optionally uses 1.0) - GET - PUT - HEAD - POST - Pipelining - multipart formpost (RFC1867-style) - authentication: Basic, Digest, NTLM(*9), GSS-Negotiate/Negotiate(*3) and SPNEGO (*4) to server and proxy - resume (both GET and PUT) - follow redirects - maximum amount of redirects to follow - custom HTTP request - cookie get/send fully parsed - reads/writes the netscape cookie file format - custom headers (replace/remove internally generated headers) - custom user-agent string - custom referer string - range - proxy authentication - time conditions - via http-proxy - retrieve file modification date - Content-Encoding support for deflate and gzip - "Transfer-Encoding: chunked" support for "uploads" ===== HTTPS (*1) ===== - (all the HTTP features) - using client certificates - verify server certificate - via http-proxy - select desired encryption - force usage of a specific SSL version (SSLv2(*7), SSLv3 or TLSv1) ===== FTP ===== - download - authentication - kerberos4 (*5), kerberos5 (*3) - active/passive using PORT, EPRT, PASV or EPSV - 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 - custom ftp commands (before and/or after the transfer) - simple "range" support - via http-proxy - all operations can be tunneled through a http-proxy - customizable to retrieve file modification date - no dir depth limit ===== FTPS (*1) ===== - implicit ftps:// support that use SSL on both connections - explicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp:// connection to use SSL for both or one of the connections ===== SCP (*8) ===== - both password and public key auth ===== SFTP (*8) ===== - both password and public key auth - with custom commands sent before/after the transfer ===== TFTP ===== - download / upload ===== TELNET ===== - connection negotiation - custom telnet options - stdin/stdout I/O ===== LDAP (*2) ===== - full LDAP URL support ===== DICT ===== - extended DICT URL support ===== FILE ===== - URL support - "uploads" - resume ===== FOOTNOTES ===== * 1 = requires OpenSSL, GnuTLS, NSS, yassl or PolarSSL * 2 = requires OpenLDAP * 3 = requires a GSSAPI-compliant library, such as Heimdal or similar. * 4 = requires FBopenssl * 5 = requires a krb4 library, such as the MIT one or similar. * 6 = requires c-ares * 7 = requires OpenSSL or NSS, as GnuTLS only supports SSLv3 and TLSv1 * 8 = requires libssh2 * 9 = requires OpenSSL, GnuTLS, NSS or yassl