cURL (pronounced 'curl') is a software project that provides a library (libcurl) and a command line tool (curl) to transfer data using various protocols. It was first launched in 1997. The name means "Customer URL". The original author and main developer is the Swedish developer Daniel Stenberg.
cURL is a tool used for transferring data from a server or to a server. You can use one of the following protocols: (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3 , POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). This tool is designed to receive or transfer data without the anteversion of a user.
It is a free client-side URL transfer library, which supports cookies, DICT, FTP, FTPS, Gopher, HTTP / 1 (with HTTP / 2 support), HTTP POST, HTTP PUT, HTTP proxy tunnel, HTTPS , IMAP, Kerberos, LDAP, POP3, RTSP, SCP and SMTP. The library supports the file URI scheme, SFTP, Telnet, TFTP, file transfer resume, FTP upload, HTTP-based upload, HTTPS, LDAPS certificates, proxies and user authentication plus password.
The libcurl library is portable. Build and work identically on many platforms, including AIX, AmigaOS, Android, BeOS, BlackBerry Tablet OS and BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux, macOS, NetBSD, NetWare, OpenBSD, OS / 2, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare and Microsoft Windows.
The libcurl library is free, thread safe and IPv6 compatible. Links are available for more than 40 languages, including C / C ++, Java, PHP and Python.
The libcurl library can support axTLS, GnuTLS, mbed TLS, NSS, QSOSSL on IBM i, SChannel on Windows, Secure Transport on macOS and iOS, SSL / TLS through OpenSSL and wolfSSL.
cURL is a command line tool to obtain or send data, including files that use URL syntax.
As cURL uses libcurl, it supports a variety of common network protocols, which currently include HTTP, HTTPS, SOAP requests, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, FILE, IMAP, POP3, SMTP and RTSP (the last four only in versions more recent than 7.20.0 or February 9, 2010).
cURL supports HTTPS and performs SSL certificate verification by default when a secure protocol such as HTTPS is specified. When cURL connects to a remote server through HTTPS, you will obtain the certificate from the remote server, then verify in your CA certificate store the validity of the remote server to ensure that the remote server is what it claims to be. Some cURL packages are included with the CA certificate store file. There are several options to specify a CA certificate, such as --cacert and --capath. The --cacert option can be used to specify the location of the CA certificate store file. On the Windows platform, if a CA certificate file is not specified, cURL will search for a CA certificate file name "curl-ca-bundle.crt" in the following order:
- Directory where the cURL program is located.
- Current working directory.
- Windows system directory.
- Windows directory.
Directories specified in the % PATH% environment variables.
cURL will return an error message if the remote server is using a self-signed certificate or if the certificate of the remote server is not signed by a CA contained in the CA certificate file. The -k or --insecure option can be used to skip certificate verification. Alternatively, if the remote server is trusted, the CA certificate of the remote server can be added to the CA certificate store file.