cURL (pronounced like "curl",
) is a
free and open source computer program for transferring data to and from
Internet
The Internet (or internet) is the Global network, global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a internetworking, network of networks ...
servers. It can download a
URL from a
web server
A web server is computer software and underlying Computer hardware, hardware that accepts requests via Hypertext Transfer Protocol, HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, co ...
over
HTTP
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
, and supports a variety of other
network protocols,
URI schemes, multiple versions of HTTP, and
proxying. The project consists of both a
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
(libcurl) and
command-line tool (curl), which have been widely ported to different
computing platforms.
It was created by
Daniel Stenberg, who is still the lead developer of the project.
History
The software was first released in 1996,
[ ] originally named ''httpget'' and then became ''urlget'', before adopting the current name of curl.
The name stands for "Client for
URL".
The original author and lead developer is the Swedish developer
Daniel Stenberg, who created curl to power part of an
IRC bot, because he wanted to automatically provide currency exchange rates, fetched from a website, to users in an
IRC chat room.
[
]
Components
libcurl
libcurl is a client-side URL transfer library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
that powers curl, supporting DICT, FTP
The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and dat ...
, FTPS
FTPS (also known as FTP-SSL and FTP Secure) is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and, formerly, the Secure Sockets Layer (SSL, which is now prohibited by RFC756 ...
, Gopher, HTTP/1 (with HTTP/2
HTTP/2 (originally named HTTP/2.0) is a major revision of the HTTP network protocol used by the World Wide Web. It was derived from the earlier experimental SPDY protocol, originally developed by Google. HTTP/2 was developed by the HTTP Working ...
and HTTP/3 support), HTTP cookies, HTTP POST, HTTP PUT, HTTP proxy tunneling, HTTPS
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It uses encryption for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protoc ...
, IMAP, Kerberos, LDAP, MQTT, POP3, RTSP, RTMP, SCP, SMTP, and SMB. The library supports the file URI scheme, SFTP, Telnet, TFTP, file transfer resume, FTP uploading, HTTP form-based upload, HTTPS certificates, LDAPS, proxies, and user-plus-password authentication.
The libcurl library is portable, as it builds and works identically on most platforms, including AIX, AmigaOS
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
, Android, BeOS, BlackBerry Tablet OS and BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
, NetBSD, NetWare, OpenBSD, OS/2
OS/2 is a Proprietary software, proprietary computer operating system for x86 and PowerPC based personal computers. It was created and initially developed jointly by IBM and Microsoft, under the leadership of IBM software designer Ed Iacobucci, ...
, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare, Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
and OpenHarmony.
The libcurl library is thread-safe and IPv6
Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the communication protocol, communications protocol that provides an identification and location system for computers on networks and routes traffic ...
compatible. Bindings are available for more than 50 languages, including C/ C++, Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
, Julia (is bundled with), PHP and Python.
The libcurl library supports GnuTLS, mbed TLS
Mbed TLS (previously PolarSSL) is an implementation of the Transport Layer Security, TLS and SSL protocols and the respective cryptographic algorithms and support code required. It is distributed under the Apache License version 2.0. Stated on t ...
, NSS, on IBM i, SChannel on Windows, Secure Transport on macOS and iOS, SSL/TLS through OpenSSL, BoringSSL, libreSSL, AmiSSL, wolfSSL, BearSSL and .
curl
curl is a command-line tool for getting or sending data including files using URL syntax. curl provides an interface to the libcurl library; it supports every protocol libcurl supports.[
curl supports ]HTTPS
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It uses encryption for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protoc ...
and performs SSL certificate verification by default when a secure protocol is specified such as HTTPS. When curl connects to a remote server via HTTPS, it will obtain the remote server certificate, then check against its CA certificate store the validity of the remote server to ensure the remote server is the one it claims to be. Some curl packages are bundled with CA certificate store file. There are several options to specify a CA certificate such as and . The option can be used to specify the location of the CA certificate store file. In the Windows platform, if a CA certificate file is not specified, curl will look 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 remote server certificate is not signed by a CA listed in the CA cert file. or option can be used to skip certificate verification. Alternatively, if the remote server is trusted, the remote server CA certificate can be added to the CA certificate store file.
See also
* curl-loader – an open-source testing tool based on curl
* libwww – an early library that comes with a command line interface
* PowerShell – the ''iwr'' (Invoke-WebRequest) Windows PowerShell had functionality similar to curl; class Web-client too.
* Web crawler
Web crawler, sometimes called a spider or spiderbot and often shortened to crawler, is an Internet bot that systematically browses the World Wide Web and that is typically operated by search engines for the purpose of Web indexing (''web spider ...
– an internet bot that can crawl the web
* Wget – similar command-line tool with no associated library but capable of recursive downloading
References
External links
*
{{DEFAULTSORT:Curl
1997 software
C (programming language) libraries
Command-line software
Cross-platform free software
Download managers
Free FTP clients
Free software programmed in C
Free web crawlers
Hypertext Transfer Protocol clients
Software using the MIT license
Telnet
Web scraping